Eigene Artikellisten erzeugen

3jojojo

Sehr aktives Mitglied
20. Januar 2016
766
34
Hallo Leute

Ich versuche gerade wie im JTL Shop 3 im Shop 4 eine eigene Artikelliste zu erstellen.

Template HowTo's - Template Entwicklung - JTL Developer Base

Beispiel Code:
Code:
<h2>Unsere Verkaufsschlager aus dem Bereich Gemüse</h2> {get_product_list kKategorie=21 nLimit=3 nSortierung=11 cAssign="myProducts"} {if $myProducts}   <ul>   {foreach name=custom from=$myProducts item=oCustomArtikel}     <li>{$oCustomArtikel->cName}</li>   {/foreach}   </ul> {/if}

Mein Code:
Code:
{get_product_list kKategorie=1 nLimit=3 kSuchspecial=4 cAssign="myProducts"}
{if $myProducts}
  <ul>
  {foreach name=custom from=$myProducts item=oCustomArtikel}
    <li>{$oCustomArtikel->cName}</li>
  {/foreach}
  </ul>
{/if}

Jedoch bekomme ich nur eine weiße Seite. Kann mir jemand helfen und sagen wieso???
 

martinwolf

Offizieller Servicepartner
SPBanner
6. September 2012
3.385
263
AW: Eigene Artikellisten erzeugen

Die Doku ist veraltet, get_product_list gibt es im EVO nicht mehr. Du kannst diese aber ergänzen:

functions.php

Code:
function get_product_list($params, &$smarty) {
    require_once(PFAD_ROOT . PFAD_INCLUDES . "filter_inc.php");

    $nLimit = intval($params['nLimit']);
    $nSortierung = intval($params['nSortierung']);

    $cAssign = "oCustomArtikel_arr";
    if (isset($params['cAssign']) && strlen($params['cAssign']) > 0)
        $cAssign = $params['cAssign'];

    $cMerkmalFilter_arr = setzeMerkmalFilter(explode(";", $params['cMerkmalFilter']));
    $cSuchFilter_arr = setzeSuchFilter(explode(";", $params['cSuchFilter']));
    $cTagFilter_arr = setzeTagFilter(explode(";", $params['cTagFilter']));

    $cParameter_arr = array("kKategorie" => $params['kKategorie'],
        "kHersteller" => $params['kHersteller'],
        "kArtikel" => $params['kArtikel'],
        "kVariKindArtikel" => $params['kVariKindArtikel'],
        "kSeite" => $params['kSeite'],
        "kSuchanfrage" => $params['kSuchanfrage'],
        "kMerkmalWert" => $params['kMerkmalWert'],
        "kTag" => $params['kTag'],
        "kSuchspecial" => $params['kSuchspecial'],
        "kNews" => $params['kNews'],
        "kNewsMonatsUebersicht" => $params['kNewsMonatsUebersicht'],
        "kNewsKategorie" => $params['kNewsKategorie'],
        "kUmfrage" => $params['kUmfrage'],
        "kKategorieFilter" => $params['kKategorieFilter'],
        "kHerstellerFilter" => $params['kHerstellerFilter'],
        "nBewertungSterneFilter" => $params['nBewertungSterneFilter'],
        "cPreisspannenFilter" => $params['cPreisspannenFilter'],
        "kSuchspecialFilter" => $params['kSuchspecialFilter'],
        "nSortierung" => $nSortierung,
        "MerkmalFilter_arr" => $cMerkmalFilter_arr,
        "TagFilter_arr" => $cTagFilter_arr,
        "SuchFilter_arr" => $cSuchFilter_arr,
        "nArtikelProSeite" => $params['nArtikelProSeite'],
        "cSuche" => $params['cSuche'],
        "seite" => $params['seite'],
        "cArtAttrib" => $params['cArtAttrib']);

    // Fix: gibArtikelKeys benutzt Variable
    $_SESSION["Usersortierung"] = $nSortierung;

    // Filter
    $NaviFilter = baueNaviFilter($NaviFilter, $cParameter_arr);

    // Artikelattribut
    if (isset($cParameter_arr['cArtAttrib']) && strlen($cParameter_arr['cArtAttrib']) > 0)
        $NaviFilter->ArtikelAttributFilter->cArtAttrib = $cParameter_arr['cArtAttrib'];

    //Filter SQLs Objekte
    $FilterSQL = bauFilterSQL($NaviFilter);

    // Artikelliste
    $oArtikel_arr = gibArtikelKeys($FilterSQL, $nLimit, $NaviFilter, true);

    $smarty->assign($cAssign, $oArtikel_arr);

    if ($params['bReturn'])
        return $oArtikel_arr;
}

$smarty->register_function("get_product_list", "get_product_list");
 

3jojojo

Sehr aktives Mitglied
20. Januar 2016
766
34
AW: Eigene Artikellisten erzeugen

Die Doku ist veraltet, get_product_list gibt es im EVO nicht mehr. Du kannst diese aber ergänzen:

functions.php

Code:
function get_product_list($params, &$smarty) {
    require_once(PFAD_ROOT . PFAD_INCLUDES . "filter_inc.php");

    $nLimit = intval($params['nLimit']);
    $nSortierung = intval($params['nSortierung']);

    $cAssign = "oCustomArtikel_arr";
    if (isset($params['cAssign']) && strlen($params['cAssign']) > 0)
        $cAssign = $params['cAssign'];

    $cMerkmalFilter_arr = setzeMerkmalFilter(explode(";", $params['cMerkmalFilter']));
    $cSuchFilter_arr = setzeSuchFilter(explode(";", $params['cSuchFilter']));
    $cTagFilter_arr = setzeTagFilter(explode(";", $params['cTagFilter']));

    $cParameter_arr = array("kKategorie" => $params['kKategorie'],
        "kHersteller" => $params['kHersteller'],
        "kArtikel" => $params['kArtikel'],
        "kVariKindArtikel" => $params['kVariKindArtikel'],
        "kSeite" => $params['kSeite'],
        "kSuchanfrage" => $params['kSuchanfrage'],
        "kMerkmalWert" => $params['kMerkmalWert'],
        "kTag" => $params['kTag'],
        "kSuchspecial" => $params['kSuchspecial'],
        "kNews" => $params['kNews'],
        "kNewsMonatsUebersicht" => $params['kNewsMonatsUebersicht'],
        "kNewsKategorie" => $params['kNewsKategorie'],
        "kUmfrage" => $params['kUmfrage'],
        "kKategorieFilter" => $params['kKategorieFilter'],
        "kHerstellerFilter" => $params['kHerstellerFilter'],
        "nBewertungSterneFilter" => $params['nBewertungSterneFilter'],
        "cPreisspannenFilter" => $params['cPreisspannenFilter'],
        "kSuchspecialFilter" => $params['kSuchspecialFilter'],
        "nSortierung" => $nSortierung,
        "MerkmalFilter_arr" => $cMerkmalFilter_arr,
        "TagFilter_arr" => $cTagFilter_arr,
        "SuchFilter_arr" => $cSuchFilter_arr,
        "nArtikelProSeite" => $params['nArtikelProSeite'],
        "cSuche" => $params['cSuche'],
        "seite" => $params['seite'],
        "cArtAttrib" => $params['cArtAttrib']);

    // Fix: gibArtikelKeys benutzt Variable
    $_SESSION["Usersortierung"] = $nSortierung;

    // Filter
    $NaviFilter = baueNaviFilter($NaviFilter, $cParameter_arr);

    // Artikelattribut
    if (isset($cParameter_arr['cArtAttrib']) && strlen($cParameter_arr['cArtAttrib']) > 0)
        $NaviFilter->ArtikelAttributFilter->cArtAttrib = $cParameter_arr['cArtAttrib'];

    //Filter SQLs Objekte
    $FilterSQL = bauFilterSQL($NaviFilter);

    // Artikelliste
    $oArtikel_arr = gibArtikelKeys($FilterSQL, $nLimit, $NaviFilter, true);

    $smarty->assign($cAssign, $oArtikel_arr);

    if ($params['bReturn'])
        return $oArtikel_arr;
}

$smarty->register_function("get_product_list", "get_product_list");

Du bist genial. ;) Kannst du mir noch sagen wie ich mir die Liste jetzt in einem Slider anzeigen lassen kann???
 

martinwolf

Offizieller Servicepartner
SPBanner
6. September 2012
3.385
263
AW: Eigene Artikellisten erzeugen

Ungetestet:

Code:
{include file='snippets/product_slider.tpl' productlist=$myProducts title='Ein ebliebiger Titel'}
 

3jojojo

Sehr aktives Mitglied
20. Januar 2016
766
34
AW: Eigene Artikellisten erzeugen

hat super geklappt danke dafür ;) war genau das was ich am Ende noch gesucht hatte ;)
 

3jojojo

Sehr aktives Mitglied
20. Januar 2016
766
34
AW: Eigene Artikellisten erzeugen

Die Doku ist veraltet, get_product_list gibt es im EVO nicht mehr. Du kannst diese aber ergänzen:

functions.php

Code:
function get_product_list($params, &$smarty) {
    require_once(PFAD_ROOT . PFAD_INCLUDES . "filter_inc.php");

    $nLimit = intval($params['nLimit']);
    $nSortierung = intval($params['nSortierung']);

    $cAssign = "oCustomArtikel_arr";
    if (isset($params['cAssign']) && strlen($params['cAssign']) > 0)
        $cAssign = $params['cAssign'];

    $cMerkmalFilter_arr = setzeMerkmalFilter(explode(";", $params['cMerkmalFilter']));
    $cSuchFilter_arr = setzeSuchFilter(explode(";", $params['cSuchFilter']));
    $cTagFilter_arr = setzeTagFilter(explode(";", $params['cTagFilter']));

    $cParameter_arr = array("kKategorie" => $params['kKategorie'],
        "kHersteller" => $params['kHersteller'],
        "kArtikel" => $params['kArtikel'],
        "kVariKindArtikel" => $params['kVariKindArtikel'],
        "kSeite" => $params['kSeite'],
        "kSuchanfrage" => $params['kSuchanfrage'],
        "kMerkmalWert" => $params['kMerkmalWert'],
        "kTag" => $params['kTag'],
        "kSuchspecial" => $params['kSuchspecial'],
        "kNews" => $params['kNews'],
        "kNewsMonatsUebersicht" => $params['kNewsMonatsUebersicht'],
        "kNewsKategorie" => $params['kNewsKategorie'],
        "kUmfrage" => $params['kUmfrage'],
        "kKategorieFilter" => $params['kKategorieFilter'],
        "kHerstellerFilter" => $params['kHerstellerFilter'],
        "nBewertungSterneFilter" => $params['nBewertungSterneFilter'],
        "cPreisspannenFilter" => $params['cPreisspannenFilter'],
        "kSuchspecialFilter" => $params['kSuchspecialFilter'],
        "nSortierung" => $nSortierung,
        "MerkmalFilter_arr" => $cMerkmalFilter_arr,
        "TagFilter_arr" => $cTagFilter_arr,
        "SuchFilter_arr" => $cSuchFilter_arr,
        "nArtikelProSeite" => $params['nArtikelProSeite'],
        "cSuche" => $params['cSuche'],
        "seite" => $params['seite'],
        "cArtAttrib" => $params['cArtAttrib']);

    // Fix: gibArtikelKeys benutzt Variable
    $_SESSION["Usersortierung"] = $nSortierung;

    // Filter
    $NaviFilter = baueNaviFilter($NaviFilter, $cParameter_arr);

    // Artikelattribut
    if (isset($cParameter_arr['cArtAttrib']) && strlen($cParameter_arr['cArtAttrib']) > 0)
        $NaviFilter->ArtikelAttributFilter->cArtAttrib = $cParameter_arr['cArtAttrib'];

    //Filter SQLs Objekte
    $FilterSQL = bauFilterSQL($NaviFilter);

    // Artikelliste
    $oArtikel_arr = gibArtikelKeys($FilterSQL, $nLimit, $NaviFilter, true);

    $smarty->assign($cAssign, $oArtikel_arr);

    if ($params['bReturn'])
        return $oArtikel_arr;
}

$smarty->register_function("get_product_list", "get_product_list");

Martin kann es sein das mit deinem Code was nicht klappt?? In der 4.0 geht die cSuche leider nicht :/ dann werden immer nur die letzten Artikel angezeigt und leider nicht die Suchergebnisse????
 

martinwolf

Offizieller Servicepartner
SPBanner
6. September 2012
3.385
263
AW: Eigene Artikellisten erzeugen

Der Code ist 1:1 aus dem 3er Shop kopiert. Ich habe mir aber gerade die filter_inc.php angeschaut, die das SQLStatement verarbeitet. So wie es auschaut, wird cSuche in der ursprünglichen Form nicht mehr verarbeitet. Ich kann den Code nicht mit dem 3er vergleichen, da dieser dort verschlüsselt ist.
 

Arthur

Gut bekanntes Mitglied
5. März 2014
288
3
Hallo.
Wie kann ich hier noch weitere Variablen setzen für z.B. Preis, Art.Foto, usw.? Wie komme ich an diese Variablen? Gibt's nicht eine kurze Erklärung dazu, wie man diese Variablen findet?
Im Debugger hab ich zwar etwas "rum gewurschtelt" aber nichts gefunden. Bin da noch nicht so firm drin.
Danke!

Gruß
Arthur
 

Arthur

Gut bekanntes Mitglied
5. März 2014
288
3
Habe jetzt noch etwas rumprobiert und doch einige Variablen heraus gefunden.

So z.B. den Ampeltext. Dieser steht im DEBUGGER zwar so: {$Artikel->Lageranzeige->AmpelText}, aber wenn ich das ändere in {$oCustomArtikel->Lageranzeige->AmpelText} wird mir der Text aus dieser Variablen im Shop auch angezeigt.
Ich verstehe allerdings nicht, warum mir der VK-Preis nicht angezeigt wird. Laut Debugger: {$Artikel->Preise->cVKLocalized}. Ändere ich das ebenso auf
{$oCustomArtikel->Preise->cVKLocalized} dann funktioniert das aber nicht.

Gruß
Arthur
 

FMoche

Moderator
Mitarbeiter
15. Dezember 2014
1.362
340
Halle (Saale)
{$oCustomArtikel->Preise->cVKLocalized} ist ein Array - du musst da schon den korrekten Index von ausgeben.
Also sowas wie {$oCustomArtikel->Preise->cVKLocalized[$NettoPreise]}
 

Arthur

Gut bekanntes Mitglied
5. März 2014
288
3
Ah, verstehe. Vielen Dank!!!
Und wie finde ich den jeweiligen Index zum Array? Gibts da irgendwo etwas zum nachlesen?

Und drei andere Fragen habe ich bitte noch:

1.) Wenn ich o.g. Code in die /templates/ ChildTemplate/page/index.tpl schreibe, sind - trotz Cacheleerungen - keine Änderungen im Shop sichtbar. Trage ich den Code allerdings in die /templates/Evo/page/index.tpl ein, läufts. Was mache ich falsch?
2.) Kann ich den o.g. Code nur in der functions.php im EVO eintragen (ist ja nicht update-sicher) oder geht das auch im Child-Verzeichnis. Wenn ich das DORT mache, habe ich eine leere Seite.
3.) Kann ich die Filterung der anzuzeigenden Artikel so einstellen, dass alle TOP-ANGEBOTE angezeigt werden? Egal aus welchen Kategorien?

Danke!
Gruß
Arthur
 
Zuletzt bearbeitet:

martinwolf

Offizieller Servicepartner
SPBanner
6. September 2012
3.385
263
@Arthur

Im Beispiel der Preise gibt es maximal zwei Index, 0 und 1. Die Variable $NettoPreise enthält jeweils eine 0 oder eine 1 je nachdem ob Nettopreise ausgegeben werden oder nicht.
Mit {$oCustomArtikel->Preise|@debug_print_var} lässt du dir beispielsweise das gesamte Preis-Objekt ausgeben. Die index sind ebenfalls zu sehen.

2) Du musst die gesamte functions.php ins Child mit nehmen und lediglich deinen Code ergänzen.
 

FPrüfer

Moderator
Mitarbeiter
19. Februar 2016
1.878
519
Halle
Hallo,
2) Du musst die gesamte functions.php ins Child mit nehmen und lediglich deinen Code ergänzen.
Wenn man nur Funktionalität hinzufügen und nicht bestehende ändern möchte, dann kann man natürlich auch in der functions.php im Child das Original aus dem Evo per include einbinden. Dann hat man auch zukünftige Änderungen immer aktuell.

Ergänzung: Hab das mal in die Doku aufgenommen: http://docs.jtl-shop.de/de/latest/s...cks.html#eigene-smarty-funktionen-integrieren
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: martinwolf

Arthur

Gut bekanntes Mitglied
5. März 2014
288
3
Danke Euch. Punkt 1 und 2 funktionieren nun. 3 ist mir noch unklar.

@martinwolf
Dein Beispiel "{$oCustomArtikel->Preise|@debug_print_var}" ist super und hilft mir weiter. Was ich aber noch immer nicht verstehe - entschuldigt bitte - ist, wie ich im Beispiel PREIS (siehe oben) herausfinden kann, dass ich nicht {$oCustomArtikel->Preise->cVKLocalized} einfügen muss, um den Preis zu erhalten, sondern {$oCustomArtikel->Preise->cVKLocalized[$NettoPreise]}; also das "[$NettoPreise]" noch anfügen muss. Wie kann ich das heraus finden?
Danke

Gruß
Arthur
 

FMoche

Moderator
Mitarbeiter
15. Dezember 2014
1.362
340
Halle (Saale)
Das steht so diverse Male bereits im Template drin.
Z.B. productdetails/price.tpl oder oder matrix_classic.tpl.

Es ist also oftmals hilfreich, einfach zu gucken, wie der Shop es von Hause aus macht und dieses Verhalten einfach zu imitieren.
 

Arthur

Gut bekanntes Mitglied
5. März 2014
288
3
Hat noch jemand eine Idee wegen dieser Frage:
"Kann ich die Filterung (kSuchspecial) der anzuzeigenden Artikel so einstellen, dass alle TOP-ANGEBOTE angezeigt werden? Egal aus welchen Kategorien?"
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Eigene Felder Checkbox Inhalt bzw. Text bei Mouseover anzeigen JTL-Wawi - Ideen, Lob und Kritik 0
Neu Eigene Seiten mit Plugin erstellen Technische Fragen zu Plugins und Templates 1
Neu Eigene Felder Lieferschein User helfen Usern - Fragen zu JTL-Wawi 1
Neu Eigene Felder (Kunde) in csv-Datei per Ausgabe (Auftrag oder Lieferschein) Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Neu Eigene Felder des Auftrages in der Druckvorlage Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 2
Eigene Felder für Ebay-Listings verwenden JTL-Wawi 1.8 0
Neu Eigene Felder im Verkauf als Spalten anzeigen User helfen Usern - Fragen zu JTL-Wawi 4
Eigene Felder in alte Vorlagen JTL-Wawi 1.8 5
In Diskussion eigene CustomWorkflows anlegen JTL-Workflows - Ideen, Lob und Kritik 1
Neu Artikel - Sprachen - Alle eigene SEO URL? Smalltalk 1
Neu Barcode Anpassung in Artikeletikett anhand Eigene Felder Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 2
Neu Eigene Übersicht Artikel - Zulaufsübersicht - Stückliste Eigene Übersichten in der JTL-Wawi 0
Neu Eigene Übersichten, Artikelhistorie Eigene Übersichten in der JTL-Wawi 4
Neu Sind eigene Felder im Artikel in einer neueren Wawi-Version von Anfang an sichtbar? User helfen Usern - Fragen zu JTL-Wawi 8
Eigene Auswertung JTL-Wawi 1.8 1
Neu Eigene Seiten Priority in der Sitemap ändern Allgemeine Fragen zu JTL-Shop 5
Neu Scrollverhalten auf Artikellisten (mal wieder) Templates für JTL-Shop 0
Neu Aus bestehenden Artikeln einen Vaterartikel erzeugen. JTL-Wawi - Ideen, Lob und Kritik 0

Ähnliche Themen