You are here

protected function FlexsliderImageFormatterTrait::viewImages in Flex Slider 8.2

The flexslider formatted view for images.

Parameters

array $images: Images render array from the (Responsive)Image Formatter.

array $formatter_settings: Render array of settings.

Return value

array Render of flexslider formatted images.

2 calls to FlexsliderImageFormatterTrait::viewImages()
FlexsliderFormatter::viewElements in flexslider_fields/src/Plugin/Field/FieldFormatter/FlexsliderFormatter.php
Builds a renderable array for a field value.
FlexsliderResponsiveFormatter::viewElements in flexslider_fields/src/Plugin/Field/FieldFormatter/FlexsliderResponsiveFormatter.php
Builds a renderable array for a field value.

File

flexslider_fields/src/Plugin/Field/FieldFormatter/FlexsliderImageFormatterTrait.php, line 41

Class

FlexsliderImageFormatterTrait
A trait for all image-related FlexSlider formatters.

Namespace

Drupal\flexslider_fields\Plugin\Field\FieldFormatter

Code

protected function viewImages(array $images, array $formatter_settings) {

  // Bail out if no images to render.
  if (empty($images)) {
    return [];
  }

  // Get cache tags for the option set.
  if ($optionset = $this
    ->loadOptionset($formatter_settings['optionset'])) {
    $cache_tags = $optionset
      ->getCacheTags();
  }
  else {
    $cache_tags = [];
  }
  $items = [];
  foreach ($images as $delta => &$image) {

    // Merge in the cache tags.
    if ($cache_tags) {
      $image['#cache']['tags'] = Cache::mergeTags($image['#cache']['tags'], $cache_tags);
    }

    // Prepare the slide item render array.
    $item = [];

    // Check caption settings.
    if ($formatter_settings['caption'] == 1) {
      $item['caption'] = [
        '#markup' => Xss::filterAdmin($image['#item']->title),
      ];
    }
    elseif ($formatter_settings['caption'] == 'alt') {
      $item['caption'] = [
        '#markup' => Xss::filterAdmin($image['#item']->alt),
      ];
    }

    // @todo Should find a way of dealing with render arrays instead of the actual output
    $item['slide'] = render($image);
    $items[$delta] = $item;
  }
  $images['#theme'] = 'flexslider';
  $images['#flexslider'] = [
    'settings' => $formatter_settings,
    'items' => $items,
  ];
  return $images;
}