local.xml zur Entwicklungs-Unterstützung
Da Magento eher eine Enterprise-Shop-Lösung ist sollte auch die Entwicklung mit Enterprise-Methoden erfolgen. Das bedeutet natürlich das bei der Entwicklung auf Versionsverwaltung durch z.B. Subversion geachtet wird. Dazu gehört jedoch genau der Testbetrieb durch den Kunden auf einem Staging-Server. Erst nach Abnahme wird die Entwicklung, in der Regel halbautomatisch, auf die Kundenserver verteilt.
Nun besteht die Herausforderung daran, gerade sobald mehrere Entwickler an einem Projekt arbeiten, den Entwickler das Leben möglichst einfach zu machen. Dazu kann z.B. eine gemeinsame Magento-Datenbank gehören – das verhindert das jeder Entwickler Produkte selbst pflegen muss bzw. ständig seine Datenbank aktuell hält. Bei dieser Lösung stolpert man jedoch schnell über eine Stelle: Die Projekt-URL wird von Magento in der Datenbank gespeichert. Dadurch lässt sich nicht “mal eben” ein Dump von der Live-Instanz lokal einspielen und testen. Hier kann jedoch die local.xml in app/etc Abhilfe schaffen. Mit ihr lassen sich problemlos die Einstellungen aus dem Magento-Admin überschreiben.
Um z.B. die Store-Adresse zu überschreiben ergänzen wir die local.xml wie folgt:
<config> [..] <stores> <default> <web> <unsecure> <base_url>http://localhost.magento/tobi/</base_url> </unsecure> <secure> <base_url>http://localhost.magento/tobi/</base_url> </secure> </web> </default> <admin> <web> <unsecure> <base_url>http://localhost.magento/tobi/</base_url> </unsecure> <secure> <base_url>http://localhost.magento/tobi/</base_url> </secure> </web> </admin> </stores> [..] </config>
Genauso einfach lassen sich aber auch die Template-Hints aktivieren. Dazu wird der Block Default/Web einfach um folgenden Code ergänzt:
<config> [..] <stores> <default> [..] <dev> <debug> <template_hints>1</template_hints> </debug> </dev> [..] </default> </stores> [..] </config>
Auf diesem Wege lässt sich jedes Attribute in der Konfiguration überschreiben. Wer nicht weiß wie es heißt guckt sich einfach den Namen des Eingabefeldes an. Dieser ist immer im selben Schema aufgebaut: Die ersten beiden Teile getrennt durch einen Unterstrich (_) sind ein verschachtelter XML-Tag. Das Übrige umgibt dann den Wert der gesetzt werden soll.
Fazit: Als Entwickler lässt sich so auf einfachem Wege, ohne große Anpassung, Einstellungen die Online viel Sinn machen konsequent lokal deaktivieren ohne sich jedes mal die Mühe machen zu müssen alles wieder manuell umzustellen.
Der Autor
Tobias Vogt arbeitet seit 2008 mit Magento und ist seit 2011 durch Magento zertifizierter Entwickler. Beschäftigt ist er bei der code-x GmbH, einer Agentur für Internet und Marketing aus Paderborn. Er gehört zum Gründer-Team der Webguys und ist seit November 2011 Bachelor of Science (Wirtschaftsinformatik). Sie erreichen Ihn per E-Mail unter tobi@webguys.de.




Ist die Datei local.xml bei 1.5.1 raus geflogen?
app/design/frontend/default/skinname/layout/local.xml scheint bei mir nicht zu wirken.
Danke für die Hilfe!
Da bin ich mir gerade nicht ganz sicher. Eigentlich hatte ich nichts gelesen das das Feature irgendwie abgestellt wurde. Ist die local.xml auch komplett aufgebaut? Also inkl. der layout-Tags? Hast du mal “mit voller Gewalt” ein probiert?
Die komplett aufzubauen ist eine gute Idee. Ich hab bisher nur folgendes drin:
css/local.css
UPS, da löscht deine Seite einfach mein XML
Egal, Fehler ist behoben. Mein XML war falsch geschrieben.
Danke für die Hilfe!
Super und immer wieder gerne
Wie man das Layout mittels local.xml verändert ist übrigens eigentlich unter http://www.webguys.de/magento/layout-updates-uber-die-local-xml/ beschrieben. In dem Artikel hier geht es um die local.xml in app/etc!