display_field_copy-2.x-dev/display_field_copy.module
display_field_copy.module
<?php /** * @file * Contains display_field_copy.module. */ /** * Implements hook_theme_registry_alter(). * * Shift the preprocess to the top to make it easier to move items. */ function display_field_copy_theme_registry_alter(&$theme_registry) { array_unshift($theme_registry['field']['preprocess functions'], 'display_field_copy_field'); foreach ($theme_registry as $hook => $theme) { if (isset($theme['base hook']) && $theme['base hook'] == 'field') { array_unshift($theme_registry[$hook]['preprocess functions'], 'display_field_copy_field'); } } } /** * Field Preprocess Callback. * * Move the items into the proper place and set is_multiple to TRUE. */ function display_field_copy_field(array &$variables) { $element = &$variables['element']; $field_type = $element['#field_type']; if ($field_type != 'ds') { return; } $field_name = $element['#field_name']; if (!strpos($field_name, ':')) { return; } $pieces = explode(':', $field_name); if ($pieces[0] != 'display_field_copy') { return; } $items = $element[0][0]; unset($element[0]); $element = array_merge($element, $items); if (count($items) > 1) { $element['#is_multiple'] = TRUE; } }