Magento – Konfigurationsdateien

Magento bietet eine unglaublich große Flexibiliät, was die Anpassung des Systems angeht. So lassen sich z.B. zahlreiche Änderungen am Layout der Seiten über einfache XML Dateien in den einzelnen Modulen realisieren. Die Dateien werden dabei im jeweiligen Modul im Ordner etc/ gespeichert. Es ist zum Beispiel auch möglich einen neuen Konfigurationswert anzulegen, der über die Adminoberfläche verwaltet werden kann, ohne eine einzige Zeile PHP zu programmieren. Das heißt alle Einstellungen für die neue Variable werden lediglich in den XML-Files gemacht. Ein kleines Beispiel dafür folgt im nächsten Artikel an dieser Stelle.

Hier aber erst mal eine Übersicht der einzelnen unterschiedlichen XML-Files und ihrer Funktionen im Magento System:

apc/etc/config.xml

In dieser Datei sind ein paar zentrale Konfigurationswerte für den Magento Shop hinterlegt, wie die Datenbankzugangsdaten, Zeitzoneneinstellungen und die Systempfade. An dieser Datei muss man in der Regel nichts manuell ändern, da dies bereits über das Installationsskript erledigt wird.

apc/etc/local.xml

Wenn mehrere Programmierer zusammen an einem größeren Magento Projekt arbeiten, ist es in der Regel üblich, dass jeder Entwickler sich lokal auf seinem Rechner eine Entwicklungsumgebung einrichtet, die aktuelle Projektversion über eine Versionsverwaltung wie z.B. SVN oder CVS auscheckt und dann lokal seine Programmierarbeiten durchführt und testet, bevor er sie dann ins Repository zurückspielt. Da die lokale Entwicklungsumgebung sich natürlich von der Umgebung auf dem Test oder Live-Server unterscheidet, kann jeder Entwickler in der local.xml seine lokalen Einstellungen vornehmen, z.B. die Zugangsdaten für seine lokale Datenbank eintragen oder den Pfad für die Session-Files anpassen. Diese Datei sollte dann natürlich nicht zurück ins Repository gespielt werden.

apc/etc/modules/Mage_All.xml

In diesem File sind alle Magento Core Module registriert. Für jedes Modul gibt es dabei einen kleinen Eintrag, der z.B. wie folgt aussieht

1
2
3
4
<mage_page>
   <active>true</active>
   <codepool>core</codepool>
</mage_page>

Alle selbst programmierten Module müssen in diesem Ordner registriert werden. In der Praxis hat es sich dabei bewährt eine einzelne Datei für alle eigenen Module zu verwenden, analog zu der Mage_All.xml könnten man diese dann z.B. MyModules_All.xml nennen.

app/code/[codepool]/[namespace]/[modulname]/etc/config.xml

Die Basis Einstellungen für ein Modul werden in dieser Datei hinterlegt. Dazu gehören unter anderem

  • Überschreiben oder Registrieren von Models, Controllern, Blöcken, Helpern oder Widgets im Frontend und im Backend
  • Konfiguration der Router
  • Datensatzformate definieren (z.B. Felder der Kundenadresse für PDF Rechnungen definieren)
  • Setup Skripte für Datenbank Anpassungen konfigurieren
  • eigene Übersetzungsfiles für das jweilige Modul definieren

app/code/[codepool]/[namespace]/[modulname]/etc/system.xml

In dieser Datei werden die Menüeintrage eines Moduls im Backend konfiguriert. Man kann also neue Menüeintrage anlegen und Konfigurationswerte definieren. Eine genau Beschreibung dieser Mechanik folgt demnächst in einem eigenen Artikel, da das ein recht komplexes Thema ist.

app/code/[codepool]/[namespace]/[modulname]/etc/adminhtml.xml

In dieser Datei werden die Zugriffsbeschränkungen mit Hilfe der Zend Framework Komponente Zend_Acl (Access Control List) für die Menupünkte eine Moduls definiert. Es kann also genau festgelegt werden, welcher Backend User auf welche Menüpunkte Zugriff hat. Auch hier würde eine genau Erklärung dieser recht komplexen Mechanik den Rahmen diese Artikel sprengen.

Anfang ist es für Magento Einsteiger sicherlich recht verwirrend, welche Informationen in welcher Xml-Datei hinterlegt sind, wenn man das Prinzip aber erst einmal durchschaut hat, ist es durchaus ein interessante Sache, die einem sogar hin und wieder die Arbeit erleichtert.

Ein Nachteil dieser XML-basierten Konfiguration soll allerdings nicht unerwähnt bleiben. Beim Aufbau der Seite eines Magento Shops werden alle Informationen aus allen Xml-Files gesammelt und praktisch zu einer einzelnen großen Datei zusammengefügt. Diese Datei bildet dann das Gerüst des Magento Shops und wird mittels der PHP SimpleXML-Funktionen geparst und verarbeitet. Genau da liegt dann auch der Knackpunkt der Geschichte, da die XML Verarbeitung unter PHP performance-technisch nicht unbedingt zu den großen Highlights gehört. D.h. diese Vorgehensweise ist meiner Meinung nach einer der Ursachen, für die relativ schlechte Performance des Magento Systems. Mit Hilfe von Xdebug kann man z.B. sehen, dass allein die Funktion SimpleXMLElement::children über 6000 Mal beim Erstellen der Startseite des Shops aufgerufen wird.

Dieser Beitrag wurde unter Magento abgelegt und mit , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Die Kommentarfunktion ist geschlossen.