Her blok veya blok grubu, config.xml
böyle bir modülün dosyasında ( <global>
etiketin içinde ) bildirilir.
İşte katalog modülünden bir örnek
<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>
Bir blok diğer adı ile örneklenebilmektedir Bu demektir önek başlayarak sınıf yolu geri kalanı.
Bu , varsayılan olarak ile eşleneceği anlamına gelir . catalog/class_name_here
class_name_here
catalog/class_name_here
Mage_Catalog_Block_Class_Name_Here
Bir bloğu yeniden yazmak için örneğimde değiştirmeye çalıştığınız modüle bağlı bir modül oluşturmanız gerekir Magento_Catalog
.
Ve bunu etiketin config.xml
altına eklemeniz gerekir <global>
.
<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>
Daha sonra sınıfı YourNamespace_YourModule_Block_Your_New_Class_Here
(ZF klasör yapısını izleyerek) oluşturun ve bu sınıfın orijinal sınıfı genişletmesini sağlayın.
class YourNamespace_YourModule_Block_Your_New_Class_Here extends Mage_Catalog_Block_Class_Name_Here
{
//your awesome code here
}
İşiniz bittiğinde, derlemeyi devre dışı bırakın ve tekrar etkinleştirin (gerekirse) ve önbelleği temizleyin.
Bu soyut bloklar için çalışmaz.
Yalnızca somutlaştırılan sınıflar için çalışır.
Misal
Kendi modülünüzde sınıf olan Marius_Test \ app \ code \ core \ Mage \ Catalog \ Block \ Product \ View \ Options \ Type \ Select.php dosyasını yeniden yazmak istediğinizi varsayalım .Mage_Catalog_Block_Product_View_Options_Type_Select
O zaman bu girişe ihtiyacınız olacak 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 \ Catalog \ Product \ View \ Options \ Type \ 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_Select
içinde \ kod \ yerel \ WR \ EPO \ Block'un \ Katalog \ Blok \ Ürün \ Görünüm \ Seçenekler \ Tür \ Select.php app . Ben böyle denedim: codepen.io/anon/pen/WYOqBr