public function BlazyOEmbedFormatter::buildElements in Blazy 8.2
Build the blazy elements.
File
- src/
Plugin/ Field/ FieldFormatter/ BlazyOEmbedFormatter.php, line 62
Class
- BlazyOEmbedFormatter
- Plugin for blazy oembed formatter.
Namespace
Drupal\blazy\Plugin\Field\FieldFormatterCode
public function buildElements(array &$build, $items) {
$settings = $build['settings'];
foreach ($items as $delta => $item) {
$main_property = $item
->getFieldDefinition()
->getFieldStorageDefinition()
->getMainPropertyName();
$value = trim($item->{$main_property});
if (empty($value)) {
continue;
}
$settings['delta'] = $delta;
$settings['input_url'] = $value;
$image_item = NULL;
// Attempts to fetch media entity.
$media = $this->formatter
->getEntityTypeManager()
->getStorage('media')
->loadByProperties([
$settings['field_name'] => $value,
]);
if ($media = reset($media)) {
if ($media
->hasTranslation($settings['current_language'])) {
$media = $media
->getTranslation($settings['current_language']);
}
$data['settings'] = $settings;
$this->blazyOembed
->getMediaItem($data, $media);
// Update data with local image.
$settings = array_merge($settings, $data['settings']);
$image_item = isset($data['item']) ? $data['item'] : NULL;
}
$box = [
'item' => $image_item,
'settings' => $settings,
];
// Media OEmbed with lazyLoad and lightbox supports.
$build[$delta] = $this->formatter
->getBlazy($box);
unset($box);
}
}