Smarty-Modifier zum Anzeigen eines “Ampelbildes”

xt:Commerce bietet keine Funktion, mit der man die (vielfach gewünschten) Icons für den Warenbestand ausgeben kann. Abhilfe gibt’s mit dieser Lösung - ohne Zusatzmodul - und direkt im Template: Mit einem Smarty-Modifier lassen sich solche “Lager-Ampeln” bei jedem angezeigten Produkt erzeugen.

 

Kurzbeschreibung

  • Benötigt als Eingabe die Produkt-ID des jeweiligen Artikels
  • Einsatz sowohl in Produkt-Listen als auch in den Produkt-Details möglich
  • Anzahl der Abstufungen, Bildauswahl und Alternativtext konfigurierbar
  • Getestet mit: xt:Commerce 3.04, SP 2.1

 

Download

» StockImage_by_ProductsID.zip (Version 1.0, 21. August 2007)

 

Kurzanleitung

  1. Erstellen Sie Ihre “Ampelbilder” ganz nach Wunsch und laden Sie diese in den Bilder-Ordner Ihres Templates hoch
  2. Legen Sie einen zusätzlichen PlugIn-Ordner für Ihr Template fest
    (Eine Anleitung dazu finden Sie » hier …)
  3. Speichern Sie die entpackte Datei in diesem Ordner ab
  4. Danach kann der Modifier benutzt werden
  5. Der Pfad zum Ordner mit Ihren “Ampelbildern” kann in der Variablen $ImagePath angepasst werden
  6. Die Grenzen, wann welches Bild gezeigt werden soll können (ebenso wie die Bildnamen und “Alt”-Texte) werden in der Variablen $ImageConfig bestimmt

 

Code-Beispiele


{$PRODUCTS_ID|StockImage_by_ProductsID}
// Für den Einsatz auf Produkt-Detail-Seiten

{$module_data.PRODUCTS_ID|StockImage_by_ProductsID}
// Für den Einsatz in Auflistungen
	

 

Nachtrag: Konfiguration

Auf eine Nachfrage per E-Mail hin hier eine kleine Erklärung, wie man die “Ampel” konfiguriert.

Für die Auswahl der Bilder und die Bestandsgrenzen ist die Variable $ImageConfig zuständig. Das sieht im Code in etwa so aus (einen Zeilenumbruch hab ich noch gesetzt, damit man hier nicht so viel scrollen muss) …


$ImageConfig = array
(	'0' => array (	'img' => 'Ampelbild0.gif',
			'alt' => 'Lager leer' ),
	'2' => array (	'img' => 'Ampelbild1.gif',
			'alt' => 'Bestand knapp' ),
	'4' => array (	'img' => 'Ampelbild2.gif',
			'alt' => 'Auf Lager' ),
	'6' => array (	'img' => 'Ampelbild3.gif',
			'alt' => 'Lager voll' ) );
	

Damit “kennt” die Ampel vier Zustände - bei Null bis zwei Produkten wird “Ampelbild0.gif” mit dem Alternativtext “Lager leer” gezeigt. Bei zwei und drei Produkten entsprechend das nächste … Man kann auf die Weise beliebig viele “Lagerzustände” mit beliebigen Grenzen festlegen.

Die Ampelbilder können in einem beliebigen Ordner im Template abgelegt werden, ich bin davon ausgegangen, dass der Bilder-Ordner “images” heißt:

$ImagePath = HTTP_SERVER.DIR_WS_CATALOG.'templates/'.CURRENT_TEMPLATE.'/images/';

Wenn die Ampelbilder woanders gespeichert sind, einfach den Pfad anpassen:

$ImagePath = HTTP_SERVER.DIR_WS_CATALOG.'templates/'.CURRENT_TEMPLATE.'/woanders/';

 

Nachtrag 2: Cross-Selling

Einige Artikel-Auflistungen arbeiten mit $products_data und nicht mit $module_data - Dort wäre dann (siehe Frage von Igor) für die Anzeige der Bestands-Ampel Folgendes einzutragen:


{$products_data.PRODUCTS_ID|StockImage_by_ProductsID}
// zum Beispiel in der cross_selling.html
	

 

 

Hinweis:

Momentan bin ich dabei, eine Sammlung solcher “kleinen Helfer” für xt:Commerce zusammenzustellen, und dieser Modifier ist ein Teil davon. Damit es keine “Doppelbenennungen” gibt, sind die Funktions-Namen noch ein bisschen zu “ausführlich” und damit reichlich lang.

Für diese Tools muss ich mir noch eindeutige Abkürzungs-Regeln einfallen lassen, damit man im Template nicht mehr so viel tippen muss. Wenn die Benennung für Sie zu “sperrig” ist, können Sie die Datei natürlich nach Ihren Wünschen umbenennen. Der Name der Hauptfunktion darin muss dann ebenfalls angepasst werden.