Da zumindest die
products_quantity eines jeden Produktes überall wo Produkte angezeigt werden zur Verfügung stehen düfte ließe sich das ganz simpel im Template direkt umsetzen.
Hier mal ein Beispiel für die Listings für das Standard-Template (
/templates/tpl_modified/module/includes/product_listing_include.html), ohne Grafiken mit reinem CSS:
{*BOC qty traffic light, noRiddle*}
<div class="lb_shipping">stock:
{if $module_data.PRODUCTS_QUANTITY < #stock_red_yell#}
<span aria-label="{#qty_red#}"><span class="tl red-tl"></span><span class="tl red-tl"></span><span class="tl red-tl"></span></span>
{elseif $module_data.PRODUCTS_QUANTITY >= #stock_red_yell# && $module_data.PRODUCTS_QUANTITY < #stock_green#}
<span aria-label="{#qty_yell#}"><span class="tl yell-tl"></span><span class="tl yell-tl"></span><span class="tl yell-tl"></span></span>
{elseif $module_data.PRODUCTS_QUANTITY >= #stock_green#}
<span aria-label="{#qty_green#}"><span class="tl green-tl"></span><span class="tl green-tl"></span><span class="tl green-tl"></span></span>
{/if}
</div>
{*EOC qty traffic light, noRiddle*}
(Sorry für den PHP-Code-tag, wird mit XML besch... dargestellt.)
stock_red_yell, stock_green sowie das was in den title-tags steht werden in
/templates/lang/lang_SPRACHE.custom z.B. so definiert (Beispiel german):
#BOC new vars for qty traffic lights, noRiddle
qty_red = 'nicht auf Lager'
qty_yell = 'wenige auf Lager'
qty_green = 'auf Lager'
stock_red_yell = 2
stock_green = 5
#EOC new vars for qty traffic lights, noRiddle
In dem Beispiel würde
- alles unter 2 Stck. eine rote Ampel zeigen
- alles größer gleich 2 und kleiner 5 eine gelbe Ampel
- und alles über 5 eine grüne Ampel
Die Logiken mit < >= kann sich jeder selbst so anpassen wie er's benötigt, ist nur ein Beispiel.
Der Trick die Werte in der Language-Datei zu definieren macht alles flexibel, denn in der Produkt-Einzelansicht (product_info) geht es dann genauso wie im Listing, nur, daß es nicht
$module_data.PRODUCTS_QUANTITY sondern
$PRODUCTS_QUANTITY heißen muß.
Das Attribut
arria-label dient dazu, daß Screenreader den Inhalt des Attributs lesen, denn es handelt sich ja um leere HTMl-tags, ohne Text, die einen reinen Präsentations-Sinn haben.
Ein Beispiel CSS dazu:
/*BOC qty traffic lights, noRiddle*/
.tl {display:inline-block; margin:0 2px; width:8px; height:8px; border-radius:50%;}
.red-tl {background:#A20000;}
.yell-tl {background:#AAA905;}
.green-tl {background:#116C10;}
/*EOC qty traffic lights, noRiddle*/
Man sieht, man muß nicht immer aufwändige Module bauen.
Den HTML-Code für die Ampel kann man auch in eine Datei in
/templates/tpl_modified/module/includes/info/ bzw.
/templates/tpl_modified/module/includes/listing/ ausgliedern und so includieren (Name der Datei als Beispiel):
{include file="`$smarty.const.CURRENT_TEMPLATE`/module/includes/info/qty_traffic_lights.html"}
Die klasse Änderungen (das muß hier auch mal gesagt werden) die es seit
modified-2.0.0.0 gibt machen die Implementation außerdem leicht weil man nicht mehr zig Dateien für die diversen Listings hat.
Für die Produkt-Einzelansicht (product_info) sollte man evtl. noch
/templates/tpl_modified/module/includes/product_listing_include.html bestücken, für die Anzeige im Cross-Marketing.
Viel Erfolg mit der einfachen Umsetzung.
Gruß,
noRiddle