Hallo zusammen,
ich bin über den Beitrag gestolpert und wollte auf kleineren Auflösungen mehr Produkte anzeigen lassen. Mit euren Tipps bin ich erfolgreich ans Ziel gelangt.
Angepasst werden muss folgende Datei:
src/Storefront/Resources/views/storefront/element/cms-element-product-slider.html.twig
Die oben genannte Datei war leicht falsch geschrieben, eine cms-elements-product-slider.html.twig gibt es nicht, da war ein s am Ende von Element zu viel.
Die abgeleitete Datei im Child-Theme sieht dann folgendermaßen aus:
{% sw_extends '@Storefront/storefront/element/cms-element-product-slider.html.twig' %}
{% block element_product_slider %}
{% if not sliderConfig %}
{% set sliderConfig = element.fieldConfig.elements %}
{% endif %}
{% if element.data.products.elements %}
<div
class="cms-element-{{ element.type }}{% if sliderConfig.displayMode.value == "standard" and sliderConfig.verticalAlign.value %} has-vertical-alignment{% endif %}">
{% block element_product_slider_alignment %}
{% if config.verticalAlign.value %}
<div class="cms-element-alignment{% if sliderConfig.verticalAlign.value == "center" %} align-self-center{% elseif sliderConfig.verticalAlign.value == "flex-end" %} align-self-end{% else %} align-self-start{% endif %}">
{% endif %}
{% set productSliderOptions = {
productboxMinWidth: sliderConfig.elMinWidth.value ? sliderConfig.elMinWidth.value : '',
slider: {
gutter: 30,
autoplayButtonOutput: false,
nav: false,
mouseDrag: sliderConfig.navigation.value ? false : true,
controls: sliderConfig.navigation.value ? true : false,
autoplay: sliderConfig.rotate.value ? true : false,
responsive: {
xs: { items: 1 },
sm: { items: 2 },
md: { items: 3 },
lg: { items: 4 }
}
}
} %}
{% block element_product_slider_slider %}
{{ parent() }}
{% endblock %}
{% if config.verticalAlign.value %}
</div>
{% endif %}
{% endblock %}
</div>
{% endif %}
{% endblock %}
Wer es so umsetzt, mag noch den Drang verspüren seinem Slider auf kleineren Viewports (gerade wenn die Slider-Pfeile aktiv sind) rechts und links etwas mehr Platz zu geben.
Das habe ich dann mit einer Extra-Portion SCSS geregelt.
Bevor dieses greift muss man der Sektion, in welcher sich der Slider befindet eine zusätzliche CSS-Klasse geben. Ich habe sie bei mir productslider2gether-morespace genannt.
Beachtet auch die anderen Tipps in den Kommentaren unten, wenn’s schön werden soll
// 1.1 Produktslider optimieren: Mehr Platz auf mobile
// Man muss im Theme bei der jeweiigen Sektion die CSS Klasse einbinden: productslider2gether-morespace
// In den Element Einstellungen sollte die Mindest-Breite auf 180px festgelegt werden
// In den Block-Einstellungen müssen der linke und rechte Abstand entfernt werden
.cms-section {
&.productslider2gether-morespace {
.cms-section-default {
&.boxed {
padding: 0;
.product-slider-controls-prev {left: -5px;}
.product-slider-controls-next {right: -5px;}
}
}
// AB 576px = SM / SMALL
@include media-breakpoint-up(sm) {
.cms-section-default {
&.boxed {
padding: unset;
.product-slider-controls-prev {left: 0;}
.product-slider-controls-next {right: 0;}
}
}
}
}
Grüße an @StefanPoensgen