10.30.09
Magento – Versand/Rechnungs/Kundeninformationen anpassen
So schön und gut magento auch sein mag, jedes kleine Detail kann auch eine sonst wirklich sauber Anwendung nicht bedenken. Streng dem Grundsatz der Datensparsamkeit folgend, sollte in Deutschland eigentlich jeder Online-Händler nur die für einen Bestellvorgang notwendigen Daten als Pflichtangaben erheben. An dieser Stelle schießt Magento jedoch ein bischen quer, da man hier als Administrator eines Webshops tatsächlich gezwungen ist Kernfunktionen von Magento zu editieren.
Die folgende Abbildung zeigt einen Screenshot des Eingabefeldes in Magento, hier bereits nachdem die Pflichteingaben auf das wirklich erforderliche reduziert wurden. Man erkennt das Bundesland (province) und Telefon (phone number) nicht mehr als erforderlich (required) gekennzeichnet sind. So soll es sein
.

Also was ist dafür zu tun?
Zunächst einmal muss man für die Änderungen wissen, dass bei Magento sauber die Anwendungslogik und die Präsentationslogik getrennt sind. Das heißt man muss für Magento an zwei Stellen die Sourcen editieren. Einmal die Kernfunktionen des “Backend” und einmal die sichtbaren *.phtml-Dateien des Frontends.
Wir fangen einmal beim Frontend an.
Im Frontend, müssen wir zum einen für die Optik die häßlichen roten Sterne entfernen und zum anderen die eingebaute Java-Script Überprüfung der Daten entfernen. Hierzu erstellen wir, bzw. bearbeiten die entsprechenden Dateien unseres Shop-Views. Wir müssen hierbei für die Rechnungsadresse die Datei “billings.pthml” editieren und analog dazu die Datei “shipping.phtml” für die Versandaddresse.
Der folgende Screenshot soll illustrieren welche Dateien, editiert werden müssen. (Müssen die Dateien zunächst angelegt werden, dann einfach die des Default-Views kopieren (!nicht verschieben!) und in die erstellten Ordner einfügen. Ist die entsprechende Shop-View im Adminbereich ausgewählt, so werden die erstellten Dateien anstatt des Default Views verwendet. Also wenn man Änderungen wirksam machen möchte, sollte der Shop-View der Änderungen auch aktiv sein. Die Default-View Dateien sollte man nicht editieren, da sie zum einen die Fallback-lösung darstellen und man zum anderen so immer alle Änderungen rückgängig machen kann, so man will.

Wir editieren jetzt einmal beispielhaft die billings.phtml die shipping.phtml einfach analog dazu auch editieren. Wir wollen das die Abfrage nach dem Bundesland und die Abfrage der Telefonnummer freiwillig wird.
Die folgenden Screencasts zeigen die Zeilen in den Quelldateien, in denen editiert werden muss. Die rot umrahmten Elemente müssen hierbei einfach vorbehaltlos gelöscht werden. Hierdurch wird der rote Stern und die browserseitige Validierung mittels Javascript abgestellt.
![]()
![]()
Da aber böse Angreifer immernoch schädliche Daten am Frontend vorbei ans Backend senden könnten, findet wie schon erwähnt natürlich auch eine Überprüfung auf Vollständigkeit der Daten im Backend statt.
Hierfür müssen wir nun Kernfunktionen des Systems editieren. Der Folgende Screencast, zeigt die Datei, die hierfür editiert werden muss.

In dieser Datei reicht es nun einfach den entsprechenden PHP-Code auszukommentieren, sodass die Überprüfung nicht mehr stattfindet. Ich habe die relevanten Stellen der Datei in dem folgenden Screenshot wieder eingerahmt. In dem Screenshot sind diese schon auskommentiert, einfach dem gleichtun.

Achtung: Wir editieren hier Kernfunktionen, dessen sollte man sich bewusst sein. Auch wenn es mir nicht direkt klar sein sollte, wo in diesem Fall, so ist jedes editieren des Kerns mit Sicherheitsrisiken verbunden.
und nochmal Achtung: Die eingebaute Updatefunktion wird sicher 0ft Spaß daran haben, die Kernfunktionalitäten zu erweitern und zu verändern. Hierbei wird es unter umständen passieren, dass die veränderte abstract.php mit einer aktualisierten Version überschrieben werden soll. In einem solchen Fall muss man die Änderungen erneut wiederherstellen. Am besten durch Schreibschutz ein editieren zunächst verhindern, wenn in einem Update, die Datei aktualisiert werden soll, wird dieses hierbei zunächst Fehlschlagen und man weiss dann das man die Änderung wieder herstellen muss.
