Magento Blöcke durch Überschreiben erweitern

26.07.2010   //   von Ingo Hillebrand   //   Entwicklung, Magento  //  1 Kommentar

Für jede Erweiterung, die Magento nicht schon nativ mitliefert, müssen Teile des original Quellcodes angepasst oder weitere neu geschrieben werden. Um jedoch immer updatefähig zu bleiben, ist es ein Muss, die betreffenden Module zu überschreiben. Anhand eines Blocks wird das Prinzip erklärt.

Zuerst wird im Ordner “app/etc/modules” eine weitere config.xml erstellt, diese weisst Magento darauf hin, dass es lokale Änderungen bestehen.

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

Der Name es Moduls ist frei wählbar, fängt jedoch mit einem Grossbuchstaben; ein “_” stellt einen Verzeichniswechsel dar. Eigene Erweiterungen werden immer im Ordner “app/local” abgelegt, in unserem Beispiel im Ordner “app/local/Wg/Catalog”. Im Ordner “app/code/local” erstellen wir nun die Struktur für das neue Modul. Dazu benötigen wir folgende Ordner: “app/code/local/Wg/Catalog/Block”, “app/code/local/Wg/Catalog/Block/Category”, sowie “app/code/local/Wg/Catalog/etc”. In dem Verzeichnis etc erstellen wir eine config.xml mit folgendem Inhalt:

<?xml version="1.0"?>
<config>
    <global>
        <blocks>
             <wg_catalog>
    	         <class>Wg_Catalog_Block</class>
	     </wg_catalog>
             <catalog>
		<rewrite>
	            <category_view>Wg_Catalog_Block_Category_View</category_view>
                </rewrite>
            </catalog>
        </blocks>
    </global>
</config>

Im Ordner “app/code/local/Wg/Catalog/Block/Category” erstellen wir Datei, die wir erweitern möchten, in diesem Fall “View.php”. Dazu benötigen wir initial diesen Inhalt:

class Wg_Catalog_Block_Category_View extends Mage_Catalog_Block_Category_View
{
    public function MyFunction(){
        /* magic */
   }
}

Nun kann die Function “MyFunction()” aus dem gewohnten Kontext heraus aufgerufen werden, ohne die Core Dateien von Magento modifizieren zu müssen. Denn dies sollte unter keinen Umständen passieren, denn nach einem Update sind sämtliche Änderungen überschrieben.

Der Autor

Ingo HIllebrand lebt in Soest, Deutschland, und arbeitet als Anwendungsentwickler bei der Paderborner Firma code-x. Dort beschäftigt er sich seit 2010 mit Magento, persönliche Erfahrungen und Gedanken über Magento und Web-Entwicklung teilt er in diesem Blog. Sie erreichen ihn per e-Mail an ingo@webguys.de oder über Xing.

1 Kommentar

Kommentar schreiben

Am 14.02 ist Valentinstag!

FloraPrima Ihr Blumenversand Nebenbei eben ein Blumen für die Freundin bestellen?
Ich empfehle FloraPrima!

Magento-Support

Sie benötigen kurzfristig Unterstützung in einem Magento-Projekt oder möchten eine individuelle Extension einsetzen? Sprechen Sie uns an.