Eigene Artikellisten erzeugen

3jojojo

Sehr aktives Mitglied
20. Januar 2016
780
44
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.477
289
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
780
44
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.477
289
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
780
44
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
780
44
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.477
289
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.369
345
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.477
289
@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.881
524
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.369
345
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 Kategorien für ebay Angebote oder JTL Wawi Kategorie Baum nutzen Einrichtung und Installation von JTL-eazyAuction 0
Neu List & Label - Eigene SQL-Abfrage als Grundlage für Tabelle im Berichtscontainer? User helfen Usern - Fragen zu JTL-Wawi 10
QR-Code Formel kann nicht in die eigene Vorlage hinzugefügt werden JTL-Wawi 1.9 1
Neu JTL Shop 5.4.0 eigene Inhalte/Seiten hinzufügen nicht möglich JTL-Shop - Fehler und Bugs 5
Neu SQL Eigener Export - Eigene Felder im Auftrag User helfen Usern - Fragen zu JTL-Wawi 7
Neu Eigene Felder aus dem Auftrag in der Packtisch+ / WMS Ausgabe JTL-WMS / JTL-Packtisch+ - Ideen, Lob und Kritik 4
Lieferscheine -versendet / Eigene Übersicht: Kundenkategorie aus den Kundenstammdaten JTL-Wawi 1.8 3
Neu Eigene Felder / Attribute spaltenweise exportieren JTL Ameise - Eigene Exporte 6
Neu Wie kann ich über eigene Felder eine Mehrfachauswahl erstellen? User helfen Usern - Fragen zu JTL-Wawi 4
Neu Eigene Übersichten - Beschaffung - Bestellvorschläge - nur Standardlieferant anzeigen Eigene Übersichten in der JTL-Wawi 4
Neu Eigene Übersicht Kunde QR Code Kundennummer Eigene Übersichten in der JTL-Wawi 4
Eigene USt-IdNr. fehlt in der Auftragsansicht bei Auslandsbestellungen (JTL-Wawi 1.8.12.2) JTL-Wawi 1.8 3
Neu Eigene Alerts im Template ausgeben bzw. hinzufügen Templates für JTL-Shop 0
Neu Bewertungssterne von Child-Artikeln in Artikellisten Templates für JTL-Shop 0
Wie FBA Gutschrift erzeugen ohne Auftragsbezug? JTL-Wawi 1.9 0

Ähnliche Themen