So, nun sollte ich die Zeit haben um das mal genauer zu dokumentieren.
Der Fehler ist mit der WEBs V1.0.10 entstanden - im Template "fehlt" einfach der Countdown, obwohl das jquery plugin "countdown" sehr wohl implementiert ist.
zunächst sollte man mal das jquery.countdown plugin aktualierien - im WEBs Template ist noch die Version 1.4, es gibt aber schon die V1.5.11. Die kann man sich direkt beim Autor herunterladen:
http://keith-wood.name/countdown.html#changes. Aus der Zip-Datei übernimmt man die folgenden Dateien in sein Template-Verzeichnis "javascript":
- jquery.countdown.js
- jquery.countdown.min.js
- jquery.countdown-de.js
Nun habe ich mir die alte Augabe mal angeschaut und überlegt das man das eleganter umsetzten kann, damit der Counter auch irgendwo im Text erscheint. Das o.g. Plugin bietet ja über "layout" die möglichkeit den Counter in einem Text zu integrieren. In der "/lang/german/german.php" suchen wir also die LS_COUNTER definition und ersten diese durch folgende Zeile
Code: Alles auswählen
define('LS_COUNTDOWN', 'Dieses Angebot läuft noch {d<}{dn}{dl}{d>} {hnn}{sep}{mnn}{sep}{snn}');
Es ist richtig, daß selbst bei Live-Shopping Artikeln die Produkt-Info über die products_info.php und nicht über die live_shopping.php ausgegeben wird, da diese Datei (live_shopping.php) seit der V1.0.10 nicht mehr benötigt wird. Die "Weiche" wurde in der includes/modules/product_info.php integriert - dort wird die Template-Datei "module/live_shopping.html" aufgerufen wenn für den Artikel eine aktive Live-Shopping Einstellung gibt. In der vorgenannten Template-Datei wird aber die LS_MESSAGE gar nicht ausgegeben, geschweige denn ein Countdown initialisiert. Um nun den modifizierten Countdown auszugegeben, und das Starten vom Countdown auchnoch in der template.js zu integriern müssen wir irgendwie die Countdown-Zeit und das neue "layout" in die template.js bekommen - also definieren wir eine css-ID "countdown" und füllen den Inhalt mit dem Initialisierungs-String für die countdown Funktion:
Code: Alles auswählen
<div class="grid_6 alpha omega">
<div id="countdown">until: +{$END_TIME}, compact: true, layout: '{$LS_MESSAGE}', expiryText: '{$smarty.const.LS_NOT_AVAILABLE_ANYMORE}'</div>
</div>
jetzt müssen wir noch den countdown in der template.js initialisieren. Suche in der templates/webs/javascript/template.js Datei die Zeilen
Code: Alles auswählen
$('.form_cart_quantity_submit').bind('click', function() {
$('#form_cart_quantity').submit();
});
und füge dahinter diesen Block ein:
Code: Alles auswählen
var node = $('#countdown');
if (node.length>0) {
node.css('display', 'block');
eval('node.countdown({'+node.attr('textContent')+'});');
}
Damit der "layout" String nicht beim Seitenaufbau bereits ausgegeben wird passen wir noch die templates/css/product_info.css an, indem folgendes hinzugefügt wird:
Code: Alles auswählen
/*******************************************************************************
* live shopping
******************************************************************************/
#countdown {
display: none;
}
Der gesamte Countdown Text erscheint also nur wenn der Kunde auch Javascript aktiviert hat - sonst geht der Countdown eh nicht.