function field_extractor_build_element in Field Extractor 7
Builds a renderable array representing the extracted field.
Parameters
$entities: An array of entities from which the field data will be taken.
$entity_type: The type of passed $entities.
$extractor_settings: An array of settings ('field_name', 'formatter', 'settings', 'langcode').
$instance_display: The display settings to use, as found in the 'display' entry of instance definitions.
2 calls to field_extractor_build_element()
- field_extractor_field_formatter_view in ./
field_extractor.module - Implements hook_field_formatter_view().
- field_extractor_handler_field::post_execute in views/
field_extractor_handler_field.inc - Load the entities for all rows that are about to be displayed.
File
- ./
field_extractor.module, line 234 - Provides a formatter that displays a field from the referenced entities.
Code
function field_extractor_build_element($entities, $entity_type, $extractor_settings, $instance_display = array()) {
$field_name = $extractor_settings['field_name'];
$formatter_name = $extractor_settings['formatter'];
$formatter_settings = $extractor_settings['settings'];
$element = array();
foreach ($entities as $loaded_entity) {
if (!empty($loaded_entity->{$field_name})) {
$formatter = field_info_formatter_types($formatter_name);
$field_display = $instance_display + array(
'label' => 'hidden',
'type' => $formatter_name,
'settings' => $formatter_settings + $formatter['settings'],
'module' => $formatter['module'],
'weight' => 0,
);
// Call the formatter for the selected field on the loaded entity.
$field_element = field_view_field($entity_type, $loaded_entity, $field_name, $field_display);
// Use the first returned element as the base, append all next.
if (empty($element)) {
$element = $field_element;
}
else {
foreach (element_children($field_element) as $key) {
if (!empty($field_element['#items'])) {
// This item already exists, skip it.
if (in_array($field_element['#items'][$key], $element['#items'], TRUE)) {
continue;
}
$element['#items'][] = $field_element['#items'][$key];
}
$element[] = $field_element[$key];
}
}
}
}
return $element;
}