Wer Preisangaben in einem xt:Commerce oder xtcModified formatieren will, stößt zwangsläufig auf Hürden. Sonderpreise sind nur ein Beispiel für die nicht konsequente Nutzung der Smarty Template Engine in diesen Shopsystemen. Anwendungslogik und Markup werden nicht klar getrennt, was unschöne Eingriffe wie diesen hier zur Folge hat.
Sonderpreise formatieren
In der Standardinstallation wird bei xtcModified folgende Formatierung in den Produktlisten und Spezialseiten wie Sonderangeboten verwendet:
Statt
xyz EUR
Nur xyz EUR
Sie sparen abc % / xyz EUR inkl. MwSt. und Versand
Drei Zeilen werden für den Preis verbraucht, darüber hinaus werden Informationen zu Steuerklasse und Versand in der „Sie sparen“ Zeile angehangen. Zusätzlich wird hier viel mit small
und del
Tags gearbeitet. Alles überaus unschön.
Wer dies nun bereinigen will, muss außerhalb des Templates suchen. Die Datei includes/classes/xtcPrice.php
gilt es abzuändern. Folgende Codezeile innerhalb der Funktion xtcFormatSpecial
erstellt obige Preisangaben auf Produktdetailseiten und der Spezialseite „Sonderangebote“:
$price = '<span class="productOldPrice"><small>'.INSTEAD.'</small><del>'.$this->xtcFormat($pPrice, $format).'</del></span><br />'.ONLY.$this->checkAttributes($pID).$this->xtcFormat($sPrice, $format).'<br /><small>'.YOU_SAVE.round($discount).' % /'.$this->xtcFormat($pPrice-$sPrice, $format).'</small>';
Um die Sonderpreise mit allen Informationen in zwei Zeilen unterzubringen und die small
Tags aus der Ausgabe zu entfernen, kann folgender Code verwendet werden:
$price = '<span class="productOldPrice">'.INSTEAD.'<del>'.$this->xtcFormat($pPrice, $format).'</del> '.YOU_SAVE.round($discount).' % /'.$this->xtcFormat($pPrice-$sPrice, $format).'</span><br />'.ONLY.$this->checkAttributes($pID).$this->xtcFormat($sPrice, $format);
Zu beachten ist, dass mehrerer Funktionen in der xtcPrice.php
Sonderpreis – Markup erstellen. Es wird also üblicherweise nicht bei einer Ersetzung bleiben. Hier einfach nach dem Codefragment class="productOldPrice"
suchen und entsprechende Änderungen vornehmen.
Alternativen
Im Forum zu xtcModified werden einige Alternativen zu diesem Vorgehen genannt. Sicher ist es sauberer, die Sonderpreisangaben gänzlich aus den Preisfunktionen auszulagern. Eines bleibt jedoch: die Updatefähigkeit wird aufgrund neu entstehender Funktionen in der xtcPrice.php
so oder so stark eingeschränkt.
Im verlinkten Thread wird auch auf gunnartPricing – einer Pluginlösung für xt:Commerce – hingewiesen. Diese habe ich nicht getestet, soll aber der Vollständigkeit halber hier genannt werden.