Setiap blok, atau kelompok blok dinyatakan dalam config.xmlfile modul seperti ini (di dalam <global>tag).
Ini adalah contoh dari modul katalog
<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>
Ini berarti bahwa blok dapat dipakai menggunakan alias di catalog/class_name_heremana class_name_heresisa jalur kelas dimulai dari awalan.
Ini berarti catalog/class_name_hereakan dipetakan secara default ke Mage_Catalog_Block_Class_Name_Here.
Untuk menulis ulang blok, Anda perlu membuat modul yang tergantung pada modul yang Anda coba ubah ( Magento_Catalog) dalam contoh saya.
Dan Anda perlu menambahkan ini di config.xmlbawah <global>tag.
<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>
Kemudian buat kelas YourNamespace_YourModule_Block_Your_New_Class_Here(mengikuti struktur folder ZF) dan membuat kelas ini memperluas kelas asli.
class YourNamespace_YourModule_Block_Your_New_Class_Here extends Mage_Catalog_Block_Class_Name_Here
{
//your awesome code here
}
Setelah selesai, nonaktifkan kompilasi dan aktifkan lagi (jika perlu) dan kosongkan cache.
Ini tidak akan berfungsi untuk blok abstrak.
Ini hanya berfungsi untuk kelas yang akan dipakai.
Contoh
Mari kita asumsikan bahwa Anda ingin menulis ulang aplikasi file \ code \ core \ Mage \ Catalog \ Block \ Product \ View \ Options \ Type \ Select.php yang memiliki kelas Mage_Catalog_Block_Product_View_Options_Type_Selectdalam modul Anda sendiri Marius_Test .
Maka Anda akan membutuhkan entri ini di 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_Selectdi app \ code \ local \ WR \ EPO \ Block \ Catalog \ Block \ Product \ View \ Options \ Type \ Select.php . Saya mencobanya seperti ini: codepen.io/anon/pen/WYOqBr