Dienstag, 9. Juni 2009 Druck-Ansicht
Es gibt einige Module für xt:Commerce “Zufallsprodukte auf der Startseite anzeigen” oder Ähnliches - Mir persönlich gefallen die nicht so sehr, da man für deren Installation meistens im System herumbasteln muss.
Daher habe ich eine Smarty-Function geschrieben, mit der man derlei Geschichten direkt im Template hinbekommen kann. Ein weiterer Vorteil: Diese Funktion ist in jeder .html-Datei des xt:Commerce-Templates einsetzbar.
Diese Funktion füllt eine Smarty-Variable mit einer Artikelliste. Dabei gibt’s mehrere Einstellungsmöglichkeiten, die u.a. dafür sorgen, dass nur soundsoviele Produkte gelistet werden, dass nur Sonderangebote gezeigt werden, dass nur Artikel aus einer bestimmten Kategorie gefunden werden - Eine Sortierung nach Name, Preis, Einstellungs-Datum oder per Zufall ist ebenfalls möglich.
Ein Beispiel zum Einstieg: Die Anweisung {gunnartProductsList to=Liste} befüllt die Variable {$Liste.PRODUCTS} mit komplett allen Artikeln aus dem Shop. Damit kann man dann die übliche foreach-Schleife stricken:
{foreach item=module_data from=$Liste.PRODUCTS}
<h4><a href="{$module_data.PRODUCTS_LINK}">{$module_data.PRODUCTS_NAME}</a></h4>
<p><img src="{$module_data.PRODUCTS_IMAGE}" alt="{$module_data.PRODUCTS_NAME}" /></p>
... und so weiter ...
... alle Tags (auch Beschreibung, VPE etc.) sind in $module_data enthalten ...
{/foreach}
Okay, so eine Liste kann reichlich lang werden, daher sollte man natürlich weitere Parameter einsetzen - es folgen ein paar (sinnvollere) Beispiele:
{gunnartProductsList to=Liste specials=true limit=10}
–> Findet maximal 10 Sonderangebote aus allen Kategorien
{gunnartProductsList to=Liste top=true order=price sort=desc}
–> Findet ausschließlich Artikel mit Status “top” und sortiert sie nach Preis - die teuersten zuerst
{gunnartProductsList to=Liste cat=37 order=rand limit=20}
–> Findet 20 Artikel in zufälliger Reihenfolge aus der Kategorie mit ID 37
–> Zusätzlich wird der Kategorien-Name in {$Liste.CATEGORY.name} geschrieben
–> Entsprechend auch der Kategorien-Link in {$Liste.CATEGORY.link}
Die Reihenfolge, in der man die Parameter eingibt, ist egal.
Die Anweisung {gunnartProductsList to=Liste cat=37 limit=10}
führt zum selben Ergebnis wie {gunnartProductsList limit=10 cat=37 to=Liste}
Kombinationen sind möglich, diese hier zum Beispiel …
{gunnartProductsList to=Liste specials=true top=true cat=37}
… findet nur die “Top”-Sonderangebote aus Kategorie 37
Der Kundengruppen-Check und die FSK-Kontrolle werden beachtet - ebenso werden nur aktive Artikel gefunden.
Wie in allen Smarty-Funktionen müssen die Werte von Parametern nicht unbedingt fix eingetragen werden, man kann dazu auch Smarty-Variablen verwenden.
Dazu ein Beispiel: Angenommen, man möchte in der Artikel-Detail-Ansicht vier zufällige Sonderangebote aus der selben Kategorie des Artikels anzeigen - Natürlich sollte der momentan gewählte Artikel nicht mit dabei sein - Das ist kein Problem.
Zunächst greifen wir uns die “product_info_v1.html” und schreiben dort global $current_category_id und global $actual_products_id in zwei Smarties …
{php}
global $current_category_id, $actual_products_id;
$this->assign('CatID',$current_category_id);
$this->assign('ProdID',$actual_products_id);
{/php}
… diese nutzen wir dann im Funktions-Aufruf …
{gunnartProductsList to=Liste cat=$CatID specials=true except=$ProdID order=rand limit=4}
{foreach item=module_data from=$Liste.PRODUCTS}
<h4><a href="{$module_data.PRODUCTS_LINK}">{$module_data.PRODUCTS_NAME}</a></h4>
... und so weiter ...
{/foreach}
… und so wird die Kategorie $CatID nach Sonderangeboten durchsucht, die nicht (weil: haben wir ja schon) die Produkt-ID $ProdID haben, Reihenfolge: Zufall, maximale Anzahl: vier.
Viel Spaß damit!
Bookmarks, Feed und Links
Wenn Ihnen dieser Beitrag geholfen hat ...
Beiträge zu ähnlichen Themen:
45 Antworten zu Smarty-Function “gunnartProductsList” für xt:Commerce
Kommentar schreiben