Neu Startseite um weitere Artikel erweitern

marco3993

Aktives Mitglied
22. Dezember 2016
52
18
Guten Morgen

ich habe eine Kleinigkeit für unseren Shop entwickelt den ich gern mit euch teilen wollte, es ist ein für uns simples Script mit dem man weitere Artikel auf die Startseite bringen kann.

Shopversion: 4.05 (Build: 6)


Installation
Unter Artikel => Attribute habe ich für den JTL-Shop ein neues Kategorie-Attribut gesetzt "startseite" eine Werteliste mit den Werten 1,2,3,4,5
upload_2018-7-19_10-23-25.png

in unserem Childtemplate habe ich folgende punkte ergänzt

function.php

Ich habe zum Smarty-Object ein Plugin hinzugefügt:
Code:
->registerPlugin('function', 'get_top_product_by_cat', 'get_top_product_by_cat')

Und so sieht die Funktion aus
Code:
function get_top_product_by_cat($topcatNr, &$smarty) {

    $result = Shop::DB()->executeQuery("SELECT tartikel.* FROM tartikel JOIN tkategorieartikel ON (tartikel.kArtikel = tkategorieartikel.kArtikel) WHERE tkategorieartikel.kKategorie = (SELECT DISTINCT tkategorieattribut.kKategorie FROM tkategorieattribut WHERE tkategorieattribut.cName LIKE 'startseite' and tkategorieattribut.cWert like ".$topcatNr.") AND tartikel.cTopArtikel LIKE 'Y'",2);
    if(count($result) == 0 ) {
        return '';
    }
   $artikelListe = [];
    foreach($result as $key => $value) {
        $artikelListe[$key] = new Artikel();
        $artikelListe[$key]->fuelleArtikel($result[$key]->kArtikel, NULL);
    }
    $kat = Shop::DB()->executeQuery("SELECT * FROM tkategorie WHERE kKategorie = (SELECT DISTINCT tkategorieattribut.kKategorie FROM tkategorieattribut WHERE tkategorieattribut.cName LIKE 'startseite' and tkategorieattribut.cWert like ".$topcatNr.")", 2);

        $artList = new \ArtikelListe();
        $artList->elemente = $artikelListe;
        $return = new stdClass();
        $return->name = $kat[0]->cName;
        $return->sort = 2;
        $return->cURL = $kat[0]->cSeo;
        $return->Artikel = $artList;
        $return->anzahl = count($return->Artikel->elemente);
      
        return $return;
}

page/index.tpl
Auf dem Startseiten-Template-File habe ich oberhalb der Standard-Slider erkennbar durch:
Code:
{if isset($StartseiteBoxen) && $StartseiteBoxen|@count > 0}

habe ich folgende Zeilen eingefügt:
Code:
{assign var='topByCat' value=get_top_product_by_cat(1)}
{include file='snippets/product_slider.tpl' productlist=$topByCat->Artikel->elemente title=$topByCat->name hideOverlays=true moreLink=$topByCat->cURL moreTitle='Zeige alle aus dieser Kategorie'}

{assign var='topByCat' value=get_top_product_by_cat(2)}
{include file='snippets/product_slider.tpl' productlist=$topByCat->Artikel->elemente title=$topByCat->name hideOverlays=true moreLink=$topByCat->cURL moreTitle='Zeige alle aus dieser Kategorie'}

{assign var='topByCat' value=get_top_product_by_cat(3)}
{include file='snippets/product_slider.tpl' productlist=$topByCat->Artikel->elemente title=$topByCat->name hideOverlays=true moreLink=$topByCat->cURL moreTitle='Zeige alle aus dieser Kategorie'}

{assign var='topByCat' value=get_top_product_by_cat(4)}
{include file='snippets/product_slider.tpl' productlist=$topByCat->Artikel->elemente title=$topByCat->name hideOverlays=true moreLink=$topByCat->cURL moreTitle='Zeige alle aus dieser Kategorie'}

{assign var='topByCat' value=get_top_product_by_cat(5)}
{include file='snippets/product_slider.tpl' productlist=$topByCat->Artikel->elemente title=$topByCat->name hideOverlays=true moreLink=$topByCat->cURL moreTitle='Zeige alle aus dieser Kategorie'}

Mit diesen Zeilen greift Smarty auf die in der Functions definierten Funktion zu, holt sich die Artikel und gibt diese in eine von JTL definierte Funktion, die den Standardslider mit unseren Artikeln füllt.

Anwendung
Man kann nun seiner Kategorie das Attribut "startseite" vergeben (1-5) und im Slider werden nun die Top-Artikel der Kategorie dargestellt.
Dabei verwendet dieses Script den Kategorienamen als Sliderüberschrift und wenn man auf den Pfeil rechts klickt gelangt man in die Kategorie. Dabei wird die Reihenfolge über den Wert 1-5 gewählt.
upload_2018-7-19_10-40-21.png


Dieser Beitrag ist als Hilfestellung für andere zusehen als auch als Verbesserungsvorschlag für die Startseite des Shops.
Mein PHP ist etwas eingerostet deshalb will ich nochmal ausdrücklich darauf hinweisen, dass ich keine Garantie für dieses Script übernehme.
Mann kann die Anzahl der Slider noch erweitern, worauf ich aufgrund der Seitenladezeit jedoch verzichten würde.

- Marco
 
Zuletzt bearbeitet:

Ähnliche Themen