SlickFormatter.php in Slick Carousel 7.3
File
src/SlickFormatter.php
View source
<?php
namespace Drupal\slick;
use Drupal\slick\Entity\Slick;
use Drupal\blazy\BlazyFormatter;
class SlickFormatter extends BlazyFormatter implements SlickFormatterInterface {
public function buildSettings(array &$build, $items, $entity) {
$settings =& $build['settings'];
$settings['item_id'] = 'slide';
$settings['namespace'] = 'slick';
parent::buildSettings($build, $items, $entity);
}
public function preBuildElements(array &$build, $items, $entity, array $entities = []) {
parent::preBuildElements($build, $items, $entity, $entities);
$settings =& $build['settings'];
$optionset = Slick::loadWithFallback($settings['optionset']);
$settings['nav'] = !empty($settings['optionset_thumbnail']) && isset($items[1]);
if (empty($settings['vanilla'])) {
$lazy = $optionset
->getSetting('lazyLoad');
$settings['blazy'] = $lazy == 'blazy' || !empty($settings['blazy']);
$settings['lazy'] = $settings['blazy'] ? 'blazy' : $lazy;
if (empty($settings['blazy'])) {
$settings['lazy_class'] = $settings['lazy_attribute'] = 'lazy';
}
}
else {
$settings['nav'] = FALSE;
}
if (empty($settings['override']) && isset($settings['overridables'])) {
$settings['overridables'] = array_filter($settings['overridables']);
}
$build['optionset'] = $optionset;
drupal_alter('slick_settings', $build, $items);
}
public function getThumbnail(array $settings = [], $item = NULL) {
$thumbnail = [];
$uri = empty($settings['thumbnail_uri']) ? $settings['uri'] : $settings['thumbnail_uri'];
if (!empty($uri)) {
$thumbnail = [
'#theme' => 'image_style',
'#style_name' => $settings['thumbnail_style'] ?: 'thumbnail',
'#path' => $uri,
];
if ($item) {
foreach ([
'attributes',
'height',
'weight',
'alt',
'title',
] as $key) {
if (isset($item->{$key})) {
$thumbnail["#{$key}"] = $item->{$key};
}
}
}
}
return $thumbnail;
}
}