Skip to main content
Drupal code

Main navigation

  • Home
  • Snippets
User account menu
  • Log in

Breadcrumb

  1. Home

Slick slider: all slide as link

By admin , 10 May, 2023

Tags

  • slick

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 %}

Tags Cloud

dependency injection(21) form(18) drush(14) views(11) twig(11) preprocess(9) field(8) node(7) translate(7) render(6) tabs(6) controller(5) config(5) phpstorm(5) file(5) entityTypeManager(5) routes(5) comment(4) database(4) jquery(4) service(4) roles(4) phpunit(3) php(3) cache(3) entity(3) slick(3) block(3) custom entity(3) javascript(3) user(3) taxonomy(3) guzzle(3) url(3) phpstan(2) event(2) commerce(2) template(2) schema(2) migration(2) libraries(2) date(2) access(2) ajax(2) photoswipe(2) permissions(2) logger(2) vscode(2) suggestions(2) states(2) title(2) fieldset(2) redirect(2) mysql(2) git(1) request(1) attribute(1) service provider(1) csv(1) PHPDoc(1) table(1) eslint(1) deprecation(1) theme(1) errors(1) wsod(1) settings.php(1) watchdog(1) pager(1) widget(1) module(1) file.usage(1) queue(1) exif(1) imagemagick(1) image(1) media(1) uuid(1) drupal.org(1) tests(1) renderer(1) array(1) exposed form(1) page manager(1) transliteration(1) random(1) entityQuery(1) development(1) mail(1) webform(1) register(1) textarea(1) label(1) input(1) batch(1) import(1) messenger(1)
RSS feed
Powered by Drupal