Setiap blok, atau kelompok blok dinyatakan dalam config.xml
file 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_here
mana class_name_here
sisa jalur kelas dimulai dari awalan.
Ini berarti catalog/class_name_here
akan 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.xml
bawah <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_Select
dalam 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_Select
di app \ code \ local \ WR \ EPO \ Block \ Catalog \ Block \ Product \ View \ Options \ Type \ Select.php . Saya mencobanya seperti ini: codepen.io/anon/pen/WYOqBr