Wem stören auf dem zweiten Blick der Adressdaten nicht die standardmäßige Darstellung der Kunden-Adressdaten (Rechnungs- und Lieferanschrift), insbesondere im Checkout und den E-Mails, etwa nach einer Bestellung?

Der Grund für diese Formatierung ist sehr einfach. Magento ist eine Applikation, die in erster Linie für den US-Amerikanischen Markt konzipiert ist und somit auch mit dem US-Adressformat arbeitet.

Insbesondere die Reihenfolge von Postleitzahl und Stadt / Ort sind vielen Anwendern und Shopbetreibern ein Dorn im Auge.

kunden-adressen-checkout-alt

Daher wird im folgenden Tutorial ein kleines Mini-Modul (3 Dateien) erstellt, dass diese Kriterien erfüllen soll:
- Anstelle der Werksseitigen Komma werden Bindestriche & Zeilenumbrüche verwendet.
- Die Reihenfolge der Daten wird insbesondere für die oben genannten Stellen abgeändert (Postleizahl & Stadt)
- Vorbereitung auf den Zustand “keine Angabe von Bundesland” (späteres Tutorial)
- Die herbeigeführten Veränderungen soll man in der Fortschrittsanzeige (Checkout), der einzeiligen Angabe im Checkout (wenn der Kunde eingeloggt ist) & allen E-Mails + PDFs sehen können.

Vorbereitung / Orientierung:
Die Original-Dateien befinden sich unter
- app/code/core/Mage/Customer/etc/config.xml und unter
- app/code/core/Mage/Customer/Model/Address/Config.php

Falls dies Ihr erstes Tutorial ist, so legen Sie bitte zunächst unter app/code/local ein Ordner mit dem Namen “Mxperts” an.

verzeichnisse-kundenadresse

 

Legen Sie nun bitte unterhalb des Ordners “Mxperts” die Verzeichnishierarchie wie auf der Grafik an.

Erstellung der Dateien
Erstellen & speichern Sie bitte die Datei app/etc/modules/Mxperts_CustomerAddress.xml mit diesem Inhalt:

<?xml version="1.0"?>
<config>
    <modules>
        <Mxperts_CustomerAddress>
            <active>true</active>
            <codePool>local</codePool>
        </Mxperts_CustomerAddress>
    </modules>
</config>

Danach benötigen wir noch unter app/code/local/Mxperts/CustomerAddress/etc die Datei config.xml:

<?xml version="1.0"?>
<config>
    <global>
        <models>
            <customer>
                <rewrite>
                    <address_config>Mxperts_CustomerAddress_Model_Address_Config</address_config>
                </rewrite>
	    </customer>
        </models>
<!-- Ausgabe der verschiedenen Adress-Formatierungen: Text, Text One Line (registrierte Nutzer),
HTML (Fortschritt - Checkout), PDF & den E-Mail Templates -->
		<customer>
            <address>
                <formats>
                    <text translate="title" module="customer">
                        <title>Text</title>
                        <defaultFormat><![CDATA[
{{depend prefix}}{{var prefix}} {{/depend}}{{var firstname}} {{depend middlename}}{{var middlename}} {{/depend}}{{var lastname}}{{depend suffix}} {{var suffix}}{{/depend}}
{{depend company}}{{var company}}{{/depend}}
{{var street1}}
{{depend street2}}{{var street2}}{{/depend}}
{{depend street3}}{{var street3}}{{/depend}}
{{depend street4}}{{var street4}}{{/depend}}
{{var postcode}} - {{depend city}}{{var city}},  {{/depend}}{{depend region}}{{var region}}, {{/depend}}
{{var country}}
Tel: {{var telephone}}
{{depend fax}}Fax: {{var fax}}{{/depend}}
                        ]]></defaultFormat>
                    </text>
                    <oneline translate="title" module="customer">
                        <title>Text One Line</title>
                        <htmlEscape>true</htmlEscape>
                        <defaultFormat>
<![CDATA[{{depend prefix}}{{var prefix}} {{/depend}}{{var firstname}} {{depend middlename}}{{var middlename}} {{/depend}}{{var lastname}}{{depend suffix}} {{var suffix}}{{/depend}} - {{var street}} - {{var postcode}} - {{var city}} {{depend region}}- {{var region}}{{/depend}} - {{var country}}]]>
                        </defaultFormat>
                    </oneline>
                    <html translate="title" module="customer">
                        <title>HTML</title>
                        <htmlEscape>true</htmlEscape>
                        <defaultFormat><![CDATA[
{{depend prefix}}{{var prefix}} {{/depend}}{{var firstname}} {{depend middlename}}{{var middlename}} {{/depend}}{{var lastname}}{{depend suffix}} {{var suffix}}{{/depend}}<br />
{{depend company}}{{var company}}<br />{{/depend}}
{{var street1}}<br />
{{depend street2}}{{var street2}}<br />{{/depend}}
{{depend street3}}{{var street3}}<br />{{/depend}}
{{depend street4}}{{var street4}}<br />{{/depend}}
{{var postcode}} - {{depend city}}{{var city}}<br /> {{/depend}}
{{depend region}}{{var region}}<br /> {{/depend}}
{{var country}}<br/>
{{depend telephone}}Tel: {{var telephone}}{{/depend}}
{{depend fax}}<br/>Fax: {{var fax}}{{/depend}}
            ]]></defaultFormat>
                    </html>
                    <pdf translate="title" module="customer">
                        <title>PDF</title>
                        <defaultFormat><![CDATA[
{{depend prefix}}{{var prefix}} {{/depend}}{{var firstname}} {{depend middlename}}{{var middlename}} {{/depend}}{{var lastname}}{{depend suffix}} {{var suffix}}{{/depend}}|
{{depend company}}{{var company}}|{{/depend}}
{{var street1}}|
{{depend street2}}{{var street2}}|{{/depend}}
{{depend street3}}{{var street3}}|{{/depend}}
{{depend street4}}{{var street4}}|{{/depend}}
{{var postcode}} - {{depend city}}{{var city}}|{{/depend}}
{{depend region}}{{var region}} - {{/depend}}|
{{var country}}|
{{depend telephone}}Tel: {{var telephone}}{{/depend}}|
{{depend fax}}<br/>Fax: {{var fax}}{{/depend}}|
            ]]></defaultFormat>
                    </pdf>
                    <js_template template="title" module="customer">
                        <title>Javascript Template</title>
                        <defaultFormat><![CDATA[#{prefix} #{firstname} #{middlename} #{lastname} #{suffix}<br />#{company}<br />#{street0}<br />#{street1}<br />#{street2}<br />#{street3}<br />#{postcode}, #{city}, #{region}, <br />#{country_id}<br/>Tel: #{telephone}<br />Fax: #{fax}]]></defaultFormat>
                    </js_template>
                </formats>
            </address>
        </customer>
	</global>
</config>

Diese Datei hat die Aufgabe, die Reihenfolge & Formatierung der Adressdaten zu definieren & ist somit für dieses kleine Modul der funktionelle Kern.

Als letzten Step erstellen & speichern wir noch die Datei app/code/local/Mxperts/CustomerAddress/Model/Address/Config.php

In dieser Datei wird folgender Inhalt hinterlegt:

<?php
class Mxperts_CustomerAddress_Model_Address_Config extends Mage_Customer_Model_Address_Config
{

    protected function _getDefaultFormat()
    {
        if(is_null($this->_defaultType)) {
            $this->_defaultType = new Varien_Object();
            $this->_defaultType->setCode('default')
                ->setDefaultFormat('{{depend prefix}}{{var prefix}} {{/depend}}{{var firstname}} {{depend middlename}}{{var middlename}} {{/depend}}{{var lastname}}{{depend suffix}} {{var suffix}}{{/depend}} <br /> {{var street}} <br /> {{var postcode}} - {{var city}} <br /> {{var region}} <br /> {{var country}}');

            $this->_defaultType->setRenderer(
                Mage::helper('customer/address')
                    ->getRenderer(self::DEFAULT_ADDRESS_RENDERER)->setType($this->_defaultType)
            );
        }
        return $this->_defaultType;
    }

}

Nach aktualisieren aller Caches sollte die Darstellung der Kunden-Addressdaten in Ihrem Magento-Shop nun so aussehen:
kunden-adressen-checkout-neu

Tipps / Ergänzende Informationen
Es ist in der config.xml im Ordner etc auch möglich, weitere Daten mit aufzunehmen – fügen Sie die gewünschten Felder einfach an den betreffenden Stellen mit ein. Zum Beispiel die E-Mail Adresse auch im Bestellfortschritt mit anzeigen, dann fügen Sie in dem Bereich “HTML” diese mit ein. Der Code sollte an dieser Stelle dann wie folgt aussehen:

{{depend telephone}}Tel: {{var telephone}}{{/depend}}
{{depend fax}}<br />Fax: {{var fax}}{{/depend}}
{{depend email}}<br />E-Mail: {{var email}}{{/depend}}

Dieses “depend” steht hier für “wenn angegeben oder vorhanden”.

Genau in diesem Stil wurde innerhalb dieser Datei ermöglicht, dass komplett abweichend vom Standard die Ausgabe vom Bundesland formatiert würde. Tut man das nicht, hat man später das Problem (wenn kein Bundesland verwendet werden soll), doppelte Trennzeichen mit ausgegeben werden. Hier der Beispielcode für Bundesland aus dem Bereich “HTML”:

{{depend region}}{{var region}}<br /> {{/depend}}

Für eigene Anpassungen sollte man sich die Fragen stellen “Welche Daten möchte ich anzeigen / übermitteln ?” & “Brauche ich allen Daten überall ?”.

Es ist ja zum Beispiel möglich das man die E-Mail Adresse in der Bestellbestätigung zwecks Rücksprache mit dem Kunden anzeigen möchte, in der Fortschrittsanzeige im Store-Frontend aber nicht. Lassen Sie Ihrer Kreativität freien Lauf & entscheiden Sie selbst darüber wie Sie die Möglichkeiten der Formatierung von Kunden-Adressdaten für Ihr Geschäftsmodell am besten nutzen können.

Liebe Grüße – Daniel Sasse

Download aller Dateien: tutorial-kunden-adressdaten.zip

Ab sofort steht dieses kleine Modul auch auf Magento-Connect zum Download bereit!
http://www.magentocommerce.com/extension/1603/mxperts–customeraddress