Magento – Variablen für Transaktionsemails

Nachdem immer wieder die Frage nach verschiedenen Variablen in Magento Transaktionsemails gekommen ist, hier eine kleine Übersicht, die ich aus dem Magento Wiki entnommen habe.

Email Variables

Following is a compiled list of variables you can use in e-mail templates. NOT VERIFIED; TEST FIRST!

Please add or edit as necessary.

– For registration:

{{var customer}} Will print out all customer information

{{var customer.ID}}

{{var customer.email}}

{{var customer.firstname}}

{{var customer.lastname}}

{{var customer.name}}

{{var customer.password}}

{{var customer.created_in}} Store Name

{{var customer.dob}} Date of Birth

{{var customer.password_hash}}

{{var customer.prefix}}

{{var customer.middlename}} Initial

{{var customer.suffix}}

{{var customer.group_id}}

{{var customer.taxvat}}

{{var customer.store.name}} What store they registered with (On Demo store this will display as ‘English’

{{var customer.store.group.name}} The actual Store’s name (not the Store View’s)

– To subscribe/unsubscribe newsletter:

{{var subscriber.getConfirmationLink()}}

{{var subscriber.getUnsubscriptionLink()}}

{{var subscriber.email}}

– Send to a friend:

{{var product_image}}

{{var name}} Recipient’s Name

{{var email}} Recipient’s Email

{{var product_name}} Product Name

{{var product_url}} Product Url

{{var message}} Message Text

{{var sender_name}} Sender’s Name

{{var sender_email}} Sender’s Email

{{var product_image}} Product Image

– Block

{{block type=’core/template’ area=’frontend’ template=’email/order/shipment/track.phtml’ shipment=$shipment order=$order}}

– Depend Condition

{{depend order.getIsNotVirtual()}}

{{/depend}}

{{depend salable}}

{{/depend}}

– If Condition

{{if order.getIsNotVirtual()}}

{{else}}

{{/if}}

(else is optional)

– Layout

Layout “handles” contain small code blocks for reuse. Handles are stored in a different location than regular templates. This location is found in the layout configuration file for the specific module you are working on. For example, the “sales_email_order_invoice_items” handle would be found in the sales.xml configuration file found in:

/app/design/frontend/default/layout/sales.xml

You will find the element:

<sales_email_order_items>
<block type=”sales/order_email_items” name=”items” template=”email/order/items.phtml”>
<action method=”addItemRender”><type>default</type><block>sales/order_email_items_order_default</block><template>email/order/items/order/default.phtml</template></action>
<action method=”addItemRender”><type>grouped</type><block>sales/order_email_items_order_grouped</block><template>email/order/items/order/default.phtml</template></action>
</block>
</sales_email_order_items>

From there we can find where the template is being pulled from, and how it is being constructed. In this case:

/app/design/frontend/default/{your_theme}/template/email/order/items.phtml

is the parent template with the default template being used:

/app/design/frontend/default/{your_theme}/template/email/order/items/order/default.phtml

{{layout area=”frontend” handle=”sales_email_order_invoice_items” invoice=$invoice order=$order}}

{{layout handle=”sales_email_order_items” order=$order}}

{{layout handle=”sales_email_order_creditmemo_items” creditmemo=$creditmemo order=$order}}

{{layout handle=”sales_email_order_shipment_items” shipment=$shipment order=$order}}

– Skin

{{skin url=”‘}}

– Store

{{store url=””}}

name

– Other

{{var addAllLink}}

{{var alertGrid}}

{{var billingAddress.format(‘html’)}}

{{var checkoutType}}

{{var comment}}

{{var creditmemo.id}}

{{var creditmemo.increment_id}}

{{var data.comment}}

{{var data.email}}

{{var data.name}}

{{var data.telephone}}

{{var dateAndTime}}

{{var invoice.id}}

{{var invoice.increment_id}}

{{var invoice.created_at}}

{{var items}}

{{var items_html}}

{{var message}}

{{var name}}

{{var order.customer_email}}

{{var order.getBillingAddress().format(‘html’)}}

{{var order.getBillingAddress().getName()}}

{{var order.getCreatedAtFormated(‘long’)}}

{{var order.getCustomerName()}}

{{var order.getCustomerFirstname()}}

{{var order.getCustomerLastName()}}

{{var order.getEmailCustomerNote()}} Currently unknwon how to test this variable for being set/empty

{{var order.getShippingAddress().format(‘html’)}}

{{var order.getShippingDescription()}}

{{var order.getStatusLabel()}}

{{var order.getStoreGroupName()}}

{{var order.id}}

{{var order.increment_id}}

{{var password}}

{{var payment_html}}

{{var paymentMethod}}

{{var product_name}}

{{var product_url}}

{{var reason}} Reason for payment failure

{{var shipment.increment_id}}

{{var shippingAddress.format(‘html’)}}

{{var shippingMethod}}

{{var total}}

{{var user.name}}

{{var viewOnSiteLink}}

{{var warnings}}

{{var billing.name}} Uses the fullname from billing information (to prevent e-mail being sent to ‘Dear Guest, etc’.

Published by Covos

Seit 2009 arbeite ich nun intensiv mit Magento. Begonnen habe ich mit der Erstellung und dem Betrieb von B2C-Shops. Ausgeweitet wurde dies durch meine Tätigkeit im Logistik-Sektor. Hieraus entstanden erste spezialisierte B2E-Systeme. Heute arbeite ich tag-täglich mit spannenden B2C-, B2B- und B2E-Projekten und berichte in diesem Blog über Herausforderungen und gebe Insider-Tipps.

18 comments on “Magento – Variablen für Transaktionsemails”

  1. Hallo,
    sehr gute Aufstellung – hab ich mir gleich mal als Lesezeichen gemerkt.
    Ich habe gerade das Problem bei einem Multistore in Verbindung mit dem Transaktions-E-Mails. Es wird irgendwie immer das Standardbild verwendet und nicht das aus dem Skin des Stores – kennst Du dafür evtl. eine Lösung (ausser dass man für jeden Store eigene Transaktions-E-Mails erstellen muss).

    Gruß
    Christian

    1. Hi!

      Ist mit dem “Standardbild” das Logo des jeweiligen Shops gemeint? Wenn ja, kann dieses bei System > Konfiguration > Verkäufe > Rechnungs- und Lieferscheingestaltung eingestellt werden. Dort gibt es das “Logo für HTML Druckansicht (auch für E-Mail Vorlagen)”

      VG!

      1. Hallo,
        wird das Standardbild auch für das Template “Neue Bestellung” genutzt und je nach Storeview angezogen? Laut meinen Tests: nein!

        Bitte um einen Hinweis dazu, was man da evtl. ändern muss.

        1. Soweit ich es bisher ausprobiert habe: Ja. Sonst mal schauen (hatte ich heute den Fall), dass mglw. der Link zum Standardbild nicht richtig ist. Bei mir ist dieser z.B.

          <td valign="top"></td>

          Hier wird also Bezug genommen zu logo_email.gif Diese muss also richtig sein.

  2. Hi, ich such jetzt schon eine ganze Weile und hoffe auf einen Hinweis hier: Wir möchten gerne die custom comments in der Transaktions E-Mail (Bestellung / Bestellung Gast) sichtbar machen. Haben schon {{var comment}} und {{var order.comment}} versucht, aber es funktioniert nicht. Hat jemand eine Idee? Magneto 1.7 (Onepage checkout IWD)

      1. Danke für die Antwort, die Entwickler haben sich bisher nicht gemeldet, wahrscheinlich, weil die Extension kostenlos zur Verfügung gestellt wird. Das Kommentarfeld kommt ja aus dem Magento, deshalb dachte ich man könne mit Variablen etwas erreichen… wir testen weiter…

  3. Do anyone know how can i show a product image in the “Send a friend” template?

    So if i need {{var product_image}} it shows only the link to the product.

    Thank you,

    Jan

  4. Hallo,

    ich komme zwar einige Jahr zu spät, aber dennoch ist dieses Thema für mich noch aktuell 🙂

    Wie ist den die Email-Variable für die ANREDE ? Ich will diese in der Email anzeigen, nur leider finde ich diese nirgendwo heraus 🙁

      1. Hallo,

        sorry, hatte mich falsch ausgedrückt. Ich frage das Geschlecht ab und verwende das dann als Anrede. 🙂 Wie bekomme ich also den GENDER in die Email ?

        Danke 😉

  5. Wie kann ich die E-Mail Adresse des Kunden in die Bestellbestätigungs E-Mail einbauen? Ich habe es schon mit {{var order.getcustomer.email()}} probiert, funktioniert leider nicht.

    Über eine Antwort würde ich mich sehr freuen!

    VG

  6. Hallo,
    ich muss das Thema auch nochmal aufgreifen. Ich versuche schon ein ganzes Stück die Steuer und die Versandkosten in die Bestellbestätigung und die Rechnung zu bekommen. Leider klappt das nicht.

    Wäre sehr schön, wenn ihr helfen könntet.

    Vielen Dank schon mal

    1. Moin!
      Wenn es um die eMails geht, sollte dies nicht über eine Variable von oben gehen, sondern über einen Magento-Block, der über {{layout handle=”sales_email_order_items” order=$order}} geladen wird. Dieser steht wieder (zum Teil) in Verbindung mit der sales.xml des eigenen Templates (app\design\frontend\Eigenes Theme\Theme\layout\). Weiterhin spielen hier auch die totals und die items (app\design\frontend\Eigenes Theme\Theme\template\email\order\) eine wichtige Rolle.
      Wir hatten gestern einen Fall in dem eine Extension ein paar der o.g. Dateien überschrieben hat und daher plötzlich der Totals-Block aus den Mails weg war.
      Hoffentlich hilft dies ein wenig?!
      VG

      1. Hallo,
        vielen Dank für die Antwort. Die Files habe ich mir gestern angeschaut und mit einer alten Sicherung verglichen, bei der die Emails i.O. sind. Die Files haben den gleichen Inhalt, wie in der Sicherung. Gibt es noch einen anderen Ort, an dem die Mails erzeugt werden?

  7. Generell läuft es auch hier nach dem Motto:

    Base > Default > Theme bzw.
    Base > Theme bzw.
    Theme (wobei dies eher ungewöhnlich wäre).

    Bei der eMail-Generierung wird in 99% der Fällen also zuerst im eigenen / verwendeten Theme nach den benötigten Files geschaut. Ist dort nichts, geht es eine Stufe weiter runter usw.
    Ich würde daher dies probieren:
    1. Das Template des Shops, welches für die eMails verwendet wird, testweise auf “base” umstellen.
    2. Cache löschen
    3. eMail senden
    4. Somit kann man ausschließen, dass es am eigenen Theme liegt. Gibt es den Fehler immernoch, liegt das Problem schon in der base-Ebene.
    5. Nun kann man schauen, ob es evtl. eine Extension gibt, die hierauf Einfluss hat (teilweise reicht es nicht nur die Extension zu deaktivieren – mussten wir gerade feststellen)
    6. Ansonsten muss man mal die Original Template-Dateien ausprobieren – evtl. als eigenes Testtheme auf den Server kopieren (“base2” z.B.)

Leave a Reply

Your email address will not be published. Required fields are marked *