Theme file:
function mytheme_theme_suggestions_slick_slide_alter(array &$suggestions, array $variables) {
$suggestion_options[] = $variables['element']['#settings']['view_name'] ?? NULL;
foreach ($suggestion_options as $suggestion_option) {
$suggestions[] = 'slick_slide__' . Html::cleanCssIdentifier($suggestion_option, [
' ' => '_',
'_' => '_',
'/' => '_',
'[' => '_',
']' => '',
]);
}
}
/**
* Implements hook_preprocess_HOOK().
*/
function mytheme_preprocess_slick_slide(&$variables) {
$slick_slide = $variables['element']['#item']['slide'];
if (isset($slick_slide['#item'])) {
$slick_item = $slick_slide['#item'];
if ($slick_item) {
$media = $slick_item->getEntity();
if ($media) {
$slide_link_field = $media->field_link;
if ($slide_link_field) {
$slide_uri = $slide_link_field->uri;
if ($slide_uri) {
$slide_url = Url::fromUri($slide_uri)->toString();
if ($slide_url) {
$variables['slide_url'] = $slide_url;
}
}
}
}
}
}
}
Template:
{%
set classes = [
'slide--' ~ delta,
item.slide is empty ? 'slide--text',
settings.layout ? 'slide--caption--' ~ settings.layout|clean_class,
settings.class ? settings.class
]
%}
{%
set content_classes = [
settings.detroy ? 'slide',
not settings.detroy ? 'slide__content'
]
%}
{%
set caption_classes = [
'slide__caption',
]
%}
{% set slide %}
{% block slick_slide %}
{% if settings.split and not settings.unslick %}
<div class="slide__media">{{ item.slide }}</div>
{% else %}
{{ item.slide }}
{% endif %}
{% endblock %}
{% endset %}
{% if settings.wrapper %}
<div{{ attributes.addClass(classes) }}>
{% if slide_url %}
<a class="stretched-link" href="{{ slide_url }}" target="_blank">
{% if item.slide %}
{{ slide }}
{% endif %}
</a>
{% else %}
{% if item.slide %}
{{ slide }}
{% endif %}
{% endif %}
{% if settings.use_ca %}<div{{ content_attributes.addClass(content_classes) }}>{% endif %}
{% endif %}
{% if settings.wrapper %}
{% if settings.grid is empty %}</div>{% endif %}
</div>
{% endif %}