Jeder Block oder jede Gruppe von Blöcken wird in der config.xmlDatei eines solchen Moduls (innerhalb des <global>Tags) deklariert .
Hier ist ein Beispiel aus dem Katalogmodul
<blocks><!-- marks definition of a block group -->
<catalog><!-- unique alias for blocks in the module -->
<class>Mage_Catalog_Block</class><!-- class prefix for all blocks -->
</catalog>
</blocks>
Dies bedeutet, dass ein Block mithilfe des Alias instanziiert werden kann, catalog/class_name_herewobei class_name_heresich der Rest des Klassenpfads ab dem Präfix befindet.
Dies bedeutet catalog/class_name_here, dass standardmäßig auf zugeordnet wird Mage_Catalog_Block_Class_Name_Here.
Um einen Block neu zu schreiben, müssen Sie ein Modul erstellen, das von dem Modul abhängt, das Sie Magento_Catalogin meinem Beispiel ändern möchten ( ).
Und Sie müssen dies config.xmlunter dem <global>Tag hinzufügen .
<blocks>
<catalog><!-- alias of the block group you are rewriting -->
<rewrite><!-- reserved tag: specify that you are rewriting something -->
<class_name_here>YourNamespace_YourModule_Block_Your_New_Class_Here</class_name_here> <!-- tag: the rest of the alias of the class you are rewriting. value: the name of your class that rewrites the core class -->
</rewrite>
</catalog>
</blocks>
Erstellen Sie dann die Klasse YourNamespace_YourModule_Block_Your_New_Class_Here(gemäß der ZF-Ordnerstruktur) und lassen Sie diese Klasse die ursprüngliche Klasse erweitern.
class YourNamespace_YourModule_Block_Your_New_Class_Here extends Mage_Catalog_Block_Class_Name_Here
{
//your awesome code here
}
Wenn Sie fertig sind, deaktivieren Sie die Kompilierung und aktivieren Sie sie erneut (falls erforderlich) und leeren Sie den Cache.
Dies funktioniert nicht für abstrakte Blöcke.
Es funktioniert nur für Klassen, die instanziiert werden.
Beispiel
Angenommen, Sie möchten die Datei app \ code \ core \ Mage \ Catalog \ Block \ Product \ View \ Options \ Type \ Select.php neu schreiben, die die Klasse Mage_Catalog_Block_Product_View_Options_Type_Selectin Ihrem eigenen Modul Marius_Test enthält .
Dann benötigen Sie diesen Eintrag in Ihrem config.xml:
<blocks>
<catalog>
<rewrite>
<product_view_options_type_select>Marius_Test_Block_Catalog_Block_Product_View_Options_Type_Select</product_view_options_type_select>
</rewrite>
</catalog>
</blocks>
app \ code \ local \ Marius \ Test \ Block \ Katalog \ Produkt \ Ansicht \ Optionen \ Typ \ Select.php :
class Marius_Test_Block_Catalog_Product_View_Options_Type_Select extends Mage_Catalog_Block_Product_View_Options_Type_Select
{
//your awesome code here
}
Mage_Catalog_Block_Product_View_Options_Type_Selectin app \ code \ local \ WR \ EPO \ Block \ Katalog \ Block \ Produkt \ Ansicht \ Optionen \ Typ \ Select.php zu überschreiben . Ich habe es so versucht: codepen.io/anon/pen/WYOqBr