function viewfield_field_formatter_view in Viewfield 7.2
Same name and namespace in other branches
- 7.3 viewfield.module \viewfield_field_formatter_view()
Implements hook_field_formatter_view().
File
- ./
viewfield.module, line 174 - Defines a field type to display a view.
Code
function viewfield_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
list($entity_id) = entity_extract_ids($entity_type, $entity);
$elements = array();
switch ($display['type']) {
case 'viewfield_default':
$elements['#post_render'] = array(
'viewfield_default_elements_post_render',
);
foreach ($items as $delta => $item) {
// @todo Store name and display separately.
list($view_name, $view_display) = explode('|', $item['vname'], 2);
$view = views_get_view($view_name);
$elements[$delta] = array(
'#type' => 'viewfield',
'#access' => $view && $view
->access($view_display),
'#view' => $view,
'#view_name' => $view_name,
'#view_display' => $view_display,
'#view_arguments' => $item['vargs'],
'#entity_type' => $entity_type,
'#entity_id' => $entity_id,
'#entity' => $entity,
);
}
break;
case 'viewfield_field_values':
foreach ($items as $delta => $item) {
list($view_name, $view_display) = explode('|', $item['vname'], 2);
$view = views_get_view($view_name);
if (!is_object($view) || !isset($view->display[$view_display])) {
$elements[$delta] = array(
'#markup' => t('Missing or broken view/display'),
);
continue;
}
$items[$delta]['vname'] = 'View name: ' . $view->human_name;
$items[$delta]['vdisplay'] = 'Display: ' . $view->display[$view_display]->display_title;
$items[$delta]['vargs'] = 'Arguments: ' . $items[$delta]['vargs'];
$fields_to_display = array_filter($display['settings']['fields_to_display']);
$items[$delta] = array_intersect_key($items[$delta], $fields_to_display);
krsort($items[$delta]);
$elements[$delta][] = array(
'#theme' => 'item_list',
'#items' => $items[$delta],
);
}
break;
}
return $elements;
}