Vielleicht kann das ja jemand gebrauchen.
Wenn keine Optionen verfügbar sind und weniger als X Artikel auf Lager sind, dann wird nichts angezeigt.
Ansonsten wird auf der Detailseite und der Artikellistenseite angezeigt:
Verfügbarkeit: (hier die Grafik, z.B. Gelb) (Noch X Stück auf Lager)
Wenn Optionen da sind, dann wird dies nur auf der Detailseite angezeigt.
***
als erstes die Grafiken erstellen (12x12 Pixel):
dot12x12green.gif
dot12x12yellow.gif
dot12x12red.gif
oder die hier nehmen:
[ Für Gäste sind keine Dateianhänge sichtbar ]
dot12x12green.gif [ Für Gäste sind keine Dateianhänge sichtbar ]
dot12x12yellow.gif [ Für Gäste sind keine Dateianhänge sichtbar ]
dot12x12red.gifund nach "/templates/AKTUELLES-TEMPLATE/img/" kopieren.
***
"/templates/AKTUELLES-TEMPLATE/source/boxes.php"
// start - Verfügbarkeitsanzeige als Ampel ########################################################define('MY_OWN_DISPLAY_STOCK','yes');//show stock: 'yes'define('MY_OWN_DISPLAY_STOCK_PIECES','yes');//show title-tag for pieces: 'yes' / 'no'define('MY_OWN_STOCK_PIECES_MAX','49');// Stückzahl, ab der die Anzahl und die gelbe Grafik angezeigt wird (einfach eine Zahl eingeben)// damit Stückzahl von Optionen abgefragt werden kannfunction OptionOnStock
($Nummer){ global $actual_products_id; $Query = xtDBquery
(" SELECT pa.attributes_stock FROM ".TABLE_PRODUCTS_ATTRIBUTES
." AS pa LEFT OUTER JOIN ".TABLE_PRODUCTS_ATTRIBUTES
." AS p ON (p.products_id = pa.products_id) WHERE p.products_id = '".$actual_products_id."' AND pa.options_values_id = '".$Nummer."' "); $Query = xtc_db_fetch_array
($Query,true); return intval($Query[attributes_stock
]);}// ende - Verfügbarkeitsanzeige als Ampel ######################################################### ***
"/includes/classes/Smarty_2.6.26/Smarty.class.php"
nach:
define('SMARTY_PHP_PASSTHRU', 0);define('SMARTY_PHP_QUOTE', 1);define('SMARTY_PHP_REMOVE', 2);define('SMARTY_PHP_ALLOW', 3); bei Zeile ca. 62 hinzugefügt:
// start - Verfügbarkeitsanzeige als Ampel ########################################################// Pfad zum PlugIn-Ordner im aktiven Template!define('StockImage_by_ProductsID', DIR_FS_CATALOG
.'templates/'.CURRENT_TEMPLATE
.'/smarty');// ende - Verfügbarkeitsanzeige als Ampel ######################################################### dann dieses:
var $plugins_dir = array('plugins'); gegen folgendes ersetzen: (ca. Zeilen 105)
// start - Verfügbarkeitsanzeige als Ampel ########################################################// Originalzeile:// var $plugins_dir = array('plugins');// neue Zeile:var $plugins_dir = array('plugins',StockImage_by_ProductsID
);// ende - Verfügbarkeitsanzeige als Ampel ######################################################### ***
In den Sprachdateien am Ende ergänzt (natürlich vor dem "?>"):
// start - Verfügbarkeitsanzeige als Ampel ########################################################define('MY_OWN_DISPLAY_STOCK_LANG_BEFORE_SINGLEPRODUCT','Verfügbarkeit: ');define('MY_OWN_DISPLAY_STOCK_LANG_AFTER_SINGLEPRODUCT','');define('MY_OWN_DISPLAY_STOCK_LANG_BEFORE_OPTIONS',' (Verfügbarkeit: ');define('MY_OWN_DISPLAY_STOCK_LANG_AFTER_OPTIONS',')');define('MY_OWN_DISPLAY_STOCK_LANG_BEFORE_PIECES','Noch ');define('MY_OWN_DISPLAY_STOCK_LANG_AFTER_PIECES',' Stück auf Lager');// ende - Verfügbarkeitsanzeige als Ampel ######################################################### ***
"/templates/AKTUELLES-TEMPLATE/module/product_options/product_options_selection.html"
nach der Zeile mit:
{$item_data.TEXT} {if $item_data.PRICE!=''}( {$item_data.PREFIX}{$item_data.PRICE} ){/if}
folgendes einfügen:
{php}// start - Verfügbarkeitsanzeige als Ampel ########################################################{/php}
{if MY_OWN_DISPLAY_STOCK_PIECES=='yes'}
{php}
$MY_OWN_DISPLAY_STOCK_PIECES_TITLE = MY_OWN_DISPLAY_STOCK_LANG_BEFORE_PIECES . OptionOnStock($this->_tpl_vars[item_data][ID]) . MY_OWN_DISPLAY_STOCK_LANG_AFTER_PIECES;
{/php}
{/if}
{if MY_OWN_DISPLAY_STOCK_PIECES=='no'}
{php}
$MY_OWN_DISPLAY_STOCK_PIECES_TITLE = '';
{/php}
{/if}
{if MY_OWN_DISPLAY_STOCK=='yes'}
{php}
if((OptionOnStock($this->_tpl_vars[item_data][ID])<=0)){
echo MY_OWN_DISPLAY_STOCK_LANG_BEFORE_OPTIONS . '<img src="templates/' . CURRENT_TEMPLATE . '/img/dot12x12red.gif" style="margin-bottom: -2px;" title="' . $MY_OWN_DISPLAY_STOCK_PIECES_TITLE . '">' . MY_OWN_DISPLAY_STOCK_LANG_AFTER_OPTIONS;
}elseif((OptionOnStock($this->_tpl_vars[item_data][ID])>=1) and (OptionOnStock($this->_tpl_vars[item_data][ID])<=MY_OWN_STOCK_PIECES_MAX)){
echo MY_OWN_DISPLAY_STOCK_LANG_BEFORE_OPTIONS . '<img src="templates/' . CURRENT_TEMPLATE . '/img/dot12x12yellow.gif" style="margin-bottom: -2px;" title="' . $MY_OWN_DISPLAY_STOCK_PIECES_TITLE . '"> ' . $MY_OWN_DISPLAY_STOCK_PIECES_TITLE . MY_OWN_DISPLAY_STOCK_LANG_AFTER_OPTIONS;
}else{
echo MY_OWN_DISPLAY_STOCK_LANG_BEFORE_OPTIONS . '<img src="templates/' . CURRENT_TEMPLATE . '/img/dot12x12green.gif" style="margin-bottom: -2px;">' . MY_OWN_DISPLAY_STOCK_LANG_AFTER_OPTIONS;
}
{/php}
{/if}
{php}// ende - Verfügbarkeitsanzeige als Ampel #########################################################{/php}
***
Verzeichnis anlegen: "/templates/AKTUELLES-TEMPLATE/smarty/" und Datei "modifier.StockImage_by_ProductsID.php" mit folgendem Inhalt dort hinein kopieren:
<?php// -------------------------------------------------------------------------------//// SmartyModifier "StockImage_by_ProductsID" für xt:Commerce// Funktion: Anzeige einer Lagerbestands-Ampel//// Version 1.0 (21. August 2007)// (c) Gunnar Tillmann//// -------------------------------------------------------------------------------// Getestet mit xt:Commerce 3.04, SP2.1// -------------------------------------------------------------------------------// Code-Beispiele zum Einsatz im Template//// {$PRODUCTS_ID|StockImage_by_ProductsID}// {$module_data.PRODUCTS_ID|StockImage_by_ProductsID}//// Weitere Infos: http://www.gunnart.de/?p=334// -------------------------------------------------------------------------------global $ImageConfig, $ImagePath;// -------------------------------------------------------------------------------// KONFIGURATION 1// Hier Bildnamen, Bestandsgrenzen// und Alternativtexte festlegen// ------------------------------------------------------------------------------- $ImageConfig = array ( '0' => array ( 'img' => 'dot12x12red.gif', 'alt' => 'Lager leer' ), '1' => array ( 'img' => 'dot12x12yellow.gif', 'alt' => 'Bestand knapp' ), MY_OWN_STOCK_PIECES_MAX
=> array ( 'img' => 'dot12x12yellow.gif', 'alt' => 'Auf Lager' ), MY_OWN_STOCK_PIECES_MAX
+1 => array ( 'img' => 'dot12x12green.gif', 'alt' => 'Lager voll' ) );// -------------------------------------------------------------------------------// KONFIGURATION 2// Hier den Pfad zu den "Ampelbildern" festlegen// ------------------------------------------------------------------------------- $ImagePath = HTTP_SERVER
.DIR_WS_CATALOG
.'templates/'.CURRENT_TEMPLATE
.'/img/';// -------------------------------------------------------------------------------function StockImage
($Anzahl) { global $ImageConfig, $ImagePath; if((MY_OWN_DISPLAY_STOCK_PIECES
=='yes') and
($Anzahl<=MY_OWN_STOCK_PIECES_MAX
)){ $MY_OWN_DISPLAY_STOCK_PIECES_TITLE = MY_OWN_DISPLAY_STOCK_LANG_BEFORE_PIECES
. $Anzahl . MY_OWN_DISPLAY_STOCK_LANG_AFTER_PIECES
; $MY_OWN_DISPLAY_STOCK_PIECES_TEXT_TO_SHOW = ' (' . $MY_OWN_DISPLAY_STOCK_PIECES_TITLE . ')'; } if(MY_OWN_DISPLAY_STOCK_PIECES
=='no'){ $MY_OWN_DISPLAY_STOCK_PIECES_TITLE = ''; } $ImageConfigKeys = array_keys($ImageConfig); $Count = 0; while($Count <count($ImageConfigKeys)) { if($Anzahl>= $ImageConfigKeys[$Count]) $ThisImage = $ImageConfigKeys[$Count]; $Count++; } if($Anzahl>=MY_OWN_STOCK_PIECES_MAX
+1){ return '<div style="margin: 0 0 0 0;"><table cellpadding="0" cellspacing="0"><tr><td>' . MY_OWN_DISPLAY_STOCK_LANG_BEFORE_SINGLEPRODUCT
. '</td><td>' . '<img src="'.$ImagePath.$ImageConfig[$ThisImage]['img'].'" alt="'.$ImageConfig[$ThisImage]['alt'].'" title="' . $MY_OWN_DISPLAY_STOCK_PIECES_TITLE . '" />' . $MY_OWN_DISPLAY_STOCK_PIECES_TEXT_TO_SHOW . '</td><td>' . MY_OWN_DISPLAY_STOCK_LANG_AFTER_SINGLEPRODUCT
. '</td></tr></table></div>'; }else{ //return '<img src="'.$ImagePath.$ImageConfig[$ThisImage]['img'].'" alt="'.$ImageConfig[$ThisImage]['alt'].'" title="' . $MY_OWN_DISPLAY_STOCK_PIECES_TITLE . '" />' . $MY_OWN_DISPLAY_STOCK_PIECES_TEXT_TO_SHOW; return '<div style="margin: 0 0 0 0;"><table cellpadding="0" cellspacing="0"><tr><td>' . MY_OWN_DISPLAY_STOCK_LANG_BEFORE_SINGLEPRODUCT
. '</td><td>' . '<img src="'.$ImagePath.$ImageConfig[$ThisImage]['img'].'" alt="'.$ImageConfig[$ThisImage]['alt'].'" title="' . $MY_OWN_DISPLAY_STOCK_PIECES_TITLE . '" />' . $MY_OWN_DISPLAY_STOCK_PIECES_TEXT_TO_SHOW . '</td><td>' . MY_OWN_DISPLAY_STOCK_LANG_AFTER_SINGLEPRODUCT
. '</td></tr></table></div>'; }}function smarty_modifier_StockImage_by_ProductsID
($ProdID) { if($ProdID) { $aufLagerQuery = xtDBquery
("
SELECT products_quantity
FROM ".TABLE_PRODUCTS
."
WHERE products_id = '".$ProdID."'
"); $aufLagerQuery = xtc_db_fetch_array
($aufLagerQuery,true); return StockImage
($aufLagerQuery['products_quantity']); } else { return false; }}?> ***
"/templates/AKTUELLES-TEMPLATE/module/product_info/product_info_v1.html"
vor:
{if $PRODUCTS_VPE}
folgendes einfügen:
{php}// start - Verfügbarkeitsanzeige als Ampel ########################################################{/php}
{if MY_OWN_DISPLAY_STOCK=='yes'}
{if $MODULE_product_options ==''}{$PRODUCTS_ID|StockImage_by_ProductsID}{/if}
{/if}
{php}// ende - Verfügbarkeitsanzeige als Ampel #########################################################{/php}
***
wenn die Artikelanzahl auch in der Produktliste erscheinen soll:
"/templates/AKTUELLES-TEMPLATE/module/product_listing/product_listing_v1.html"
nach:
<p class="price">{$module_data.PRODUCTS_PRICE}</p><p class="taxandshippinginfo">( {$module_data.PRODUCTS_TAX_INFO}{$module_data.PRODUCTS_SHIPPING_LINK} )</p>
folgendes einfügen:
{php}// start - Verfügbarkeitsanzeige als Ampel ########################################################{/php}
{if MY_OWN_DISPLAY_STOCK=='yes'}
{$module_data.PRODUCTS_ID|StockImage_by_ProductsID}
{/if}
{php}// ende - Verfügbarkeitsanzeige als Ampel #########################################################{/php}
***
[ Für Gäste sind keine Dateianhänge sichtbar ] [ Für Gäste sind keine Dateianhänge sichtbar ]
Quelle:
Warenbestands-Ampel mit xt:Commerce[
EDIT Tomcraft 22.09.2011: Anleitung editiert, damit auch die grüne Ampel angezeigt wird.]
Linkback: https://www.modified-shop.org/forum/index.php?topic=5218.0