Ich weis zwar, dass der Beitrag schon ein wenig älter ist - wollte jedoch trotzdem noch eine Ergänzung machen für diejenigen die auch auf der Suche nach diesem Thema sind.
Da ich selber aber noch sehr neu in der JTL-Welt bin, wäre es toll, wenn einer der "alten Hasen" hier noch seinen Segen für diese Lösung geben würde
Ich bin noch so neu - vielleicht übersehe ich da etwas gravierendes.
Das kopieren der ganzen jtl.evo.js ist nicht notwendig und auch im Bezug auf die Updatefähigkeit nicht ratsam. Es reicht, wenn man sich eine .js Datei anlegt und die slick() Funktion gesondert aufruft.
Dafür habe ich mal eine jtl.evo_ext.js mit folgendem Inhalt angelegt
Code:
$('.evo-slider:not(.slick-initialized)').slick({
//dots: true,
arrows: true,
slidesToShow: 4,
responsive: [
{
breakpoint: 480, // xs
settings: {
slidesToShow: 1
}
},
{
breakpoint: 768, // sm
settings: {
slidesToShow: 2
}
},
{
breakpoint: 992, // md
settings: {
slidesToShow: 3
}
}
]
});
Manchmal möchte man aber auch unterschiedliche Einstellungen für bestimmte Bereiche haben und nicht eine globale Einstellung für alle Slider.
Im Standart Evo-Template gibt es bei den "Ähnlichen Artikeln" auf der Detailseite eine CSS Klasse "recommendations" mit deren Hilfe man den Bereich eindeutig zuordnen kann.
In diesem Fall, kann man die Slickfunktion kopieren und entsprechend anpassen.
Code:
$('.recommendations .evo-slider:not(.slick-initialized)').slick({
//dots: true,
arrows: true,
slidesToShow: 4,
responsive: [
{
breakpoint: 480, // xs
settings: {
slidesToShow: 1
}
},
{
breakpoint: 768, // sm
settings: {
slidesToShow: 2
}
},
{
breakpoint: 992, // md
settings: {
slidesToShow: 3
}
}
]
});
$('.evo-slider:not(.slick-initialized)').slick({
//dots: true,
arrows: true,
slidesToShow: 6,
responsive: [
{
breakpoint: 480, // xs
settings: {
slidesToShow: 1
}
},
{
breakpoint: 768, // sm
settings: {
slidesToShow: 2
}
},
{
breakpoint: 992, // md
settings: {
slidesToShow: 3
}
}
]
});
Dabei ist zu beachten, dass die allgemein gültige Funktion $('.evo-slider:not(.slick-initialized)').slick() erst nach allen anderen aufgerufen wird (also immer unten steht
). Sie kann auch ganz weg gelassen werden - womit dann wieder auf die Standartfunktion aus der jtl.evo.js zurückgegriffen wird.
Damit hat man schon eine tolle Möglichkeit ein wenig Variation in die Slider zu bringen.
Leider gibt es z.B. auf der Startseite keine so eindeutige CSS-Klasse pro Slider. Mit einer kleinen Erweiterung der snippets/product_slider.tpl ist aber schnell Abhilfe geschaffen.
Code:
{extends file="{$parent_template_path}/snippets/product_slider.tpl"}
{block name="product-slider-class"}evo-slider{if isset($Box)} slider-{$Box->name|lower}{/if}{/block}
Damit bekommt jeder Slider auf der Startseite auch eine eindeutige CSS Klasse zugewiesen. Ich kann dann z.B. die "Top-Angebote" auf der Seite manipulieren ohne die Eigenschaften der übrigen Slider anzufassen.
Code:
$('.evo-slider.slider-topangebot:not(.slick-initialized)').slick({
//dots: true,
arrows: true,
slidesToShow: 6,
responsive: [
{
breakpoint: 480, // xs
settings: {
slidesToShow: 1
}
},
{
breakpoint: 768, // sm
settings: {
slidesToShow: 2
}
},
{
breakpoint: 992, // md
settings: {
slidesToShow: 3
}
}
]
});
Und so könnte das fertige Produkt dann aussehen.
Ich hoffe ich habe alles verständlich erklärt und vielleicht hilft es ja tatsächlich jemandem.
Sollten noch Fragen offen sein - immer her damit.
LG
Tomas