Mỗi khối hoặc nhóm khối được khai báo trong config.xml
tệp của một mô-đun như thế này (bên trong <global>
thẻ).
Dưới đây là một ví dụ từ mô-đun danh mục
<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>
Điều này có nghĩa là một khối có thể được khởi tạo bằng cách sử dụng bí danh catalog/class_name_here
trong đó class_name_here
phần còn lại của đường dẫn lớp bắt đầu từ tiền tố.
Điều này có nghĩa là catalog/class_name_here
sẽ được ánh xạ theo mặc định Mage_Catalog_Block_Class_Name_Here
.
Để viết lại một khối, bạn cần tạo một mô-đun phụ thuộc vào mô-đun mà bạn đang cố gắng thay đổi ( Magento_Catalog
) trong ví dụ của tôi.
Và bạn cần thêm cái này vào config.xml
dưới <global>
thẻ.
<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>
Sau đó tạo lớp YourNamespace_YourModule_Block_Your_New_Class_Here
(theo cấu trúc thư mục ZF) và làm cho lớp này mở rộng lớp ban đầu.
class YourNamespace_YourModule_Block_Your_New_Class_Here extends Mage_Catalog_Block_Class_Name_Here
{
//your awesome code here
}
Khi bạn đã hoàn tất, tắt chức năng biên dịch và bật lại (nếu cần) và xóa bộ đệm.
Điều này sẽ không làm việc cho các khối trừu tượng.
Nó chỉ hoạt động cho các lớp được khởi tạo.
Thí dụ
Giả sử rằng bạn muốn viết lại ứng dụng tệp \ code \ core \ Mage \ Catalog \ Block \ Product \ View \ Options \ Type \ Select.php có lớp Mage_Catalog_Block_Product_View_Options_Type_Select
trong mô-đun Marius_Test của riêng bạn .
Sau đó, bạn sẽ cần mục này trong 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>
ứng dụng \ 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
trong ứng dụng \ code \ local \ WR \ EPO \ Block \ Catalog \ Block \ Product \ View \ Options \ Type \ Select.php . Tôi đã thử nó như thế này: codepen.io/anon/pen/WYOqBr