Index: addresses_cck/addresses_cck.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/addresses/addresses_cck/addresses_cck.inc,v retrieving revision 1.4 diff -u -r1.4 addresses_cck.inc --- addresses_cck/addresses_cck.inc 17 Nov 2008 16:01:57 -0000 1.4 +++ addresses_cck/addresses_cck.inc 8 Feb 2009 19:56:28 -0000 @@ -29,3 +29,17 @@ // Print the address using the one-line only theme return theme('addresses_singleline', $element['#item']); } + +/** + * Theme function for address field formatters. If you wish to do CCK specific + * formatting for an address field, override this function and switch on + * $element['#formatter'] or $element['#name']. + * + * @param $element + * The element to render. Most theme functions expect $element['#item']. + * @return + * The rendered HTML. + */ +function theme_addresses_cck_formatter($element) { + return theme($element['#formatter'], $element['#item']); +} Index: addresses_cck/addresses_cck.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/addresses/addresses_cck/addresses_cck.module,v retrieving revision 1.16 diff -u -r1.16 addresses_cck.module --- addresses_cck/addresses_cck.module 11 Dec 2008 18:20:24 -0000 1.16 +++ addresses_cck/addresses_cck.module 8 Feb 2009 19:56:28 -0000 @@ -203,7 +203,7 @@ * Implementation of hook_theme(). */ function addresses_cck_theme() { - return array( + $hooks = array( // Shows address in the default view: Multilines 'addresses_cck_formatter_default' => array( 'arguments' => array('element'), @@ -215,6 +215,20 @@ 'file' => 'addresses_cck.inc', ), ); + + // Build individual formatters for each field. We use the default field + // formatter for each field. We have our own theme function which + // passes $element['#info'], and allows themers to have CCK-specific + // theming for address fields. + $elements = module_invoke_all('addressesfieldapi', 'fields'); + foreach (array_keys($elements) as $field) { + $hooks['addresses_cck_formatter_addresses_field_' . $field] = array( + 'function' => 'theme_addresses_cck_formatter', + 'arguments' => array('element'), + 'file' => 'addresses_cck.inc', + ); + } + return $hooks; } /**