public function OrbitFormatter::viewElements in ZURB Orbit 8
Builds a renderable array for a field value.
Parameters
\Drupal\Core\Field\FieldItemListInterface $items: The field values to be rendered.
string $langcode: The language that should be used to render the field.
Return value
array A renderable array for $items, as an array of child elements keyed by consecutive numeric indexes starting from 0.
Overrides ImageFormatter::viewElements
1 method overrides OrbitFormatter::viewElements()
- OrbitMediaFormatter::viewElements in src/
Plugin/ Field/ FieldFormatter/ OrbitMediaFormatter.php - Builds a renderable array for a field value.
File
- src/
Plugin/ Field/ FieldFormatter/ OrbitFormatter.php, line 245
Class
- OrbitFormatter
- Plugin implementation of the 'Orbit' formatter.
Namespace
Drupal\field_orbit\Plugin\Field\FieldFormatterCode
public function viewElements(FieldItemListInterface $items, $langcode) {
// Get image html from parent method.
$images = parent::viewElements($items, $langcode);
static $orbit_count;
$orbit_count = is_int($orbit_count) ? $orbit_count + 1 : 1;
$files = $this
->getEntitiesToView($items, $langcode);
$elements = [];
$entity = [];
$links = [
'image_link' => 'path',
'caption_link' => 'caption_path',
];
// Loop through required links (because image and
// caption can have different links).
foreach ($items as $delta => $item) {
// Set Image caption.
if ($this
->getSetting('caption') != '') {
$caption_settings = $this
->getSetting('caption');
if ($caption_settings == 'title') {
$item_settings[$delta]['caption'] = $item
->getValue()['title'];
}
elseif ($caption_settings == 'alt') {
$item_settings[$delta]['caption'] = $item
->getValue()['alt'];
}
$item
->set('caption', $item_settings[$delta]['caption']);
}
// Set Image and Caption Link.
foreach ($links as $setting => $path) {
if ($this
->getSetting($setting) != '') {
switch ($this
->getSetting($setting)) {
case 'content':
$entity = $item
->getEntity();
if (!$entity
->isNew()) {
$uri = $entity
->urlInfo();
$uri = !empty($uri) ? $uri : '';
$item
->set($path, $uri);
}
break;
case 'file':
foreach ($files as $file_delta => $file) {
$image_uri = $file
->getFileUri();
$uri = Url::fromUri(file_create_url($image_uri));
$uri = !empty($uri) ? $uri : '';
$items[$file_delta]
->set($path, $uri);
}
break;
}
}
}
}
$defaults = $this
->defaultSettings();
if (count($items)) {
// Only include non-default values to minimize html output.
$options = [];
foreach ($defaults as $key => $setting) {
// Don't pass these to orbit.
if ($key == 'caption_link' || $key == 'caption' || $key == 'image_style') {
continue;
}
if ($this
->getSetting($key) != $setting) {
$options[$key] = $this
->getSetting($key);
}
}
$elements[] = [
'#theme' => 'field_orbit',
'#items' => $items,
'#options' => $options,
'#entity' => $entity,
'#image' => $images,
'#orbit_id' => $orbit_count,
];
}
return $elements;
}