function flexslider_fields_field_formatter_view in Flex Slider 7.2
Same name and namespace in other branches
- 7 flexslider_fields/flexslider_fields.module \flexslider_fields_field_formatter_view()
Implements hook_field_formatter_view().
Prepares a renderable array of images and adds the necessary JS and CSS.
File
- flexslider_fields/
flexslider_fields.module, line 175 - Adds fields integration with FlexSlider
Code
function flexslider_fields_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
// If file entity formatter is selected render all files initially.
if ($display['type'] == 'flexslider_file_entity') {
$file_display = $display;
$file_display['type'] = 'file_rendered';
$file_items = module_invoke('file_entity', 'field_formatter_view', $entity_type, $entity, $field, $instance, $langcode, $items, $file_display);
}
$element = array();
if (count($items) > 0) {
foreach ($items as $key => $item) {
if (isset($item['item'])) {
continue;
}
$tmp = $item;
$item = array();
$item['item'] = $tmp;
// Setup the variables for calling theme_image_style
if (isset($item['item']['uri'])) {
$item['slide']['path'] = $item['item']['uri'];
}
if (isset($display['settings']['image_style'])) {
$item['slide']['style_name'] = $display['settings']['image_style'];
}
if (isset($item['item']['width'])) {
$item['slide']['width'] = $item['item']['width'];
}
if (isset($item['item']['height'])) {
$item['slide']['height'] = $item['item']['height'];
}
if (isset($item['item']['alt'])) {
$item['slide']['alt'] = $item['item']['alt'];
}
if (isset($item['item']['title'])) {
$item['slide']['title'] = $item['item']['title'];
}
// Render the slide item.
if ($display['type'] == 'flexslider') {
// If no style set, we have to call theme_image since theme_image_style
// doesn't auto-fallback to full size image.
if (!empty($item['slide']['style_name'])) {
// Generate the HTML for the slide.
$item['slide'] = theme('image_style', $item['slide']);
}
else {
// Generate the HTML for the slide.
$item['slide'] = theme('image', $item['slide']);
}
}
elseif ($display['type'] == 'flexslider_file_entity') {
$item['slide'] = render($file_items[$key]);
}
// Check caption settings.
if ($display['settings']['caption'] === '1') {
$item['caption'] = filter_xss($item['item']['title']);
}
elseif ($display['settings']['caption'] === 'alt') {
$item['caption'] = filter_xss($item['item']['alt']);
}
$items[$key] = $item;
}
$element[0] = array(
'#theme' => 'flexslider',
'#items' => $items,
'#settings' => $display['settings'],
);
}
return $element;
}