Кожен блок або група блоків оголошується у config.xml
файлі такого модуля (всередині <global>
тегу).
Ось приклад із модуля каталогу
<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>
Це означає, що блок можна екземплярувати, використовуючи псевдонім, catalog/class_name_here
де class_name_here
знаходиться решта шляху до класу, починаючи з префікса.
Це означає catalog/class_name_here
, що за замовчуванням буде відображено до Mage_Catalog_Block_Class_Name_Here
.
Щоб переписати блок, вам потрібно створити модуль, який залежить від модуля, який ви намагаєтесь змінити ( Magento_Catalog
) у моєму прикладі.
І вам потрібно додати це в тезі config.xml
під <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>
Потім створіть клас YourNamespace_YourModule_Block_Your_New_Class_Here
(слідуючи структурі папок ZF) і зробіть цей клас розширенням початкового класу.
class YourNamespace_YourModule_Block_Your_New_Class_Here extends Mage_Catalog_Block_Class_Name_Here
{
//your awesome code here
}
Коли ви закінчите, відключіть компіляцію та ввімкніть її знову (за потреби) та очистіть кеш.
Це не працюватиме для абстрактних блоків.
Він працює лише для класів, які отримують інстанціювання.
Приклад
Припустимо, що ви хочете переписати файл- додаток \ код \ core \ Mage \ Каталог \ Блок \ Продукт \ Перегляд \ Опції \ Тип \ Тип \ Select.php, який має клас Mage_Catalog_Block_Product_View_Options_Type_Select
у власному модулі Marius_Test .
Тоді вам знадобиться цей запис у вашому 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>
додаток \ код \ локальний \ Маріус \ Тест \ Блок \ Каталог \ Продукт \ Вид \ Параметри \ Тип \ Виберіть.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
у додаток \ код \ локальний \ WR \ EPO \ Блок \ Каталог \ Блок \ Продукт \ Перегляд \ Параметри \ Тип \ Вибрати.php . Я спробував це так: codepen.io/anon/pen/WYOqBr