Magento Blöcke durch Überschreiben erweitern

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.



Ein Beitrag von Ingo Hillebrand
Ingo's avatar

Ingo Hillebrand lebt in Soest und arbeitet als Anwendungsentwickler bei der Firma connect-io. Dort beschäftigt sich der studierte Wirtschaftsinformatiker (Bachelor of Science) weiterhin mit Magento. Sie erreichen ihn per e-Mail an ingo@webguys.de oder über Xing.

Alle Beiträge von Ingo

Kommentare
Anatoliy am

Der Beitrag (http://www.magentocommerce.com/wiki/modules_reference/german/klassen) ist auch nicht schlecht.

Dein Kommentar