xt:Commerce bietet zwei Möglichkeiten, eine versandkostenfreie Lieferung ab einem bestimmten Mindestbestellwert umzusetzen. Praktisch wäre hierbei eine Anzeige, wie viel den Kunden bis dahin noch “fehlt”.

Gibt’s leider nicht, müssen wir also basteln. Doch zunächst zu den Standard-Einstellungen.

Versandkostenfrei: Möglichkeit a)

… findet sich im Admin-Bereich unter “Zusammenfassung” und nennt sich ot_shipping.

Versandkostenfrei: Möglichkeit b)

… ist im Bereich “Versandarten” zu finden und nennt sich freeamount.

Sceenshot ot_shipping vs. freeamount
Screenshot: Links “ot_shipping”, Rechts “freeamount”

Vermutlich ist “freeamount” allgemein häufiger im Einsatz, weil man dort etwas flexibler ist und die Versandzonen festlegen kann, in denen das kostenlose Verschicken möglich sein soll.

Wozu bei “freeamount” allerdings der rot eingekreiste Bereich da ist - Keine Ahnung. Ob nun aktiv oder nicht, ich habe bisher noch jedenfalls noch nicht herausgefunden, wo sich dadurch etwas ändert. Aber das macht nichts, eine Meldung “Ihnen fehlen noch 12,30 € bis zur versandkostenfreien Lieferung” ist ohnehin viel schicker.

 

Smarty Function {FreeShippingData}

» Downloaden, entpacken und im Smarty-Ordner Ihres Templates abspeichern.

Eine Anleitung, wie man xt:Commerce dazu bringt, “eigene” Smartys zu akzeptieren,
ist » hier zu finden.

Danach kann {FreeShippingData} im Template eingesetzt werden. Damit stehen diverse neue Smarty-Tags zur Vefügung mit denen man die Meldung nach Wunsch gestalten kann.


Welche?

Zum Ausprobieren einfach {FreeShippingData to=test} ins Template schreiben, welche Tags generiert werden kann dann mit
{php}print_r($this->_tpl_vars[test]);{/php} überprüft werden.


Allgemeiner Hinweis:

Meine Smarty-Funktionen haben (meistens) einen “to”-Parameter, damit es keine Überschneidungen gibt. Denn es kann ja sein, dass meine Funktion ein bereits belegtes Smarty-Tag erzeugt.

Also sollte es einmal vorkommen, dass eine Funktion {LALA} am Ende ein {$GIBT_ES_SCHON} produziert, kann man die Funktion mit {LALA to=anders} immer noch benutzen.

Man muss dann bloß {$anders.GIBT_ES_SCHON} schreiben.

Wenn’s keine Überschneidungen gibt, kann “to” auch gerne leer bleiben, man hat dann auch weniger zu tippen. {php}print_r($this->_tpl_vars);{/php} würde jedoch sicherlich übervoll werden, weil sämtliche Tags ausgegeben werden würden, daher der Vorschlag, zum Ausprobieren “to=test” zu benutzen …

 

Im Einsatz:

Back 2 Topic. Ausgehend davon, dass “to” leer ist, sind die wichtigsten neuen Smartys wohl diese fünf Jungs:

  1. {$FREE_SHIPPING}
    Wert: Die Versandkostenfrei-Grenze (als formatierter Preis),
    oder false, wenn’s “versandkostenfrei” nicht gibt.
  2. {$FREE_SHIPPING_TYPE}
    Werte:
    freeamount, wenn “freeamount” aktiv ist,
    ot_shipping, wenn “ot_shipping” aktiv ist,
    false, wenn keines von beidem aktiv ist.
  3. {$FREE_SHIPPING_MISSING}
    Der Wert (formatierter Preis), der bis zum Erreichen der Freigrenze fehlt.
    Oder aber false, wenn
    a) die Grenze bereits überschritten wurde oder
    b) der Kunde nicht in einer “erlaubten” Versandzone” wohnt
  4. {$SHOW_FREE_SHIPPING_MISSING}
    Wert: true, wenn
    a) bereits etwas im Warenkorb liegt und
    b) der Kunde in einer “erlaubten” Versandzone wohnt
  5. {$SHOW_FREE_SHIPPING_TRUE}
    Wert: true, wenn
    a) versandkostenfrei erlaubt ist und
    b) die Versandkostenfrei-Grenze erreicht wurde
    Ansonsten: false.

… mit diesen Smartys kann man sich schon passende Meldungen zurechtbasteln.

 

Noch mehr Smarty:

Im Zusammenhang mit der Funktion {show} - Beschreibung und Download » hier- kann das im Template in etwa so aussehen:

1) In der german.php festlegen

define('FREE_SHIPPING_MISSING','Ihnen fehlen noch %wert% bis zur versandkostenfreien Lieferung');
define('FREE_SHIPPING_TRUE','Lieferung für Sie versandkostenfrei');
define('FREE_SHIPPING_GENERAL','Versandkostenfrei ab %min% Warenwert');

2) Im Template (beispielsweise in der box_cart.html) schreiben

{FreeShippingData}
{if $SHOW_FREE_SHIPPING_MISSING}
{show text=FREE_SHIPPING_MISSING wert=$FREE_SHIPPING_MISSING}
{/if}
{if $SHOW_FREE_SHIPPING_TRUE}
{show text=FREE_SHIPPING_TRUE}
{/if}

3) Im Template (beispielsweise in der index.html als Footer-Note) schreiben

{FreeShippingData}
{if $FREE_SHIPPING_TYPE}
{show text=FREE_SHIPPING_GENERAL min=$FREE_SHIPPING}
{/if}

 

Zusammenfassung:

Vielleicht ist die Funktion ein bisschen was für “Fortgeschrittene”, aber ich denke, dass die meisten, die sich schon ein bisschen mit Smarty herumgeprügelt haben, damit etwas anfangen können sollten.

Automatisch wird jedenfalls erkannt, ob Free Shipping zugelassen ist, ob die Lieferzone “passt”, wieviel fehlt - und nicht zuletzt welche “Art” der versandkostenfreien Lieferung im Admin-Bereich aktiviert wurde.

Aber bitte nur EINE der beiden Arten benutzen. Wenn beide im Einsatz sind, wird “ot_shipping” bevorzugt. An alle eventuellen kuriose Einstellungen kann man nun mal nicht immer denken.

An dieser Stelle noch der Hinweis: Bei “freeamount” rechnet xt:Commerce standardmäßig immer vom Brutto-Warenwert aus, bei “ot_shipping” hängt’s davon ab, ob die jeweilige Kundengruppe die Preise mit oder ohne Steuern sehen soll.