Có thể thay đổi một loại khối trong bố cục XML không?
Tôi biết cách thay đổi mẫu bằng setTemplate
phương thức, nhưng tôi đang cố gắng thay đổi loại của khối. Điều này có thể không?
Có thể thay đổi một loại khối trong bố cục XML không?
Tôi biết cách thay đổi mẫu bằng setTemplate
phương thức, nhưng tôi đang cố gắng thay đổi loại của khối. Điều này có thể không?
Câu trả lời:
Thay đổi loại khối có nghĩa là thay đổi lớp khối, vì vậy không, nhưng ...
... bạn chỉ có thể ghi đè lên khối:
layout.xml
được xử lý sau khi khối được tạo, ví dụ như <depends>
trongCompany_Module.xml
Vấn đề là, điều này sẽ ghi đè lên khối và không thay đổi loại. Điều này có nghĩa là mọi thứ được thực hiện trên khối này giữa sáng tạo và thay đổi của bạn sẽ bị mất.
Ví dụ để thay đổi catalog.navigation
:
<layout version="0.1.0">
<catalog_category_default translate="label">
<reference name="left">
<block type="myModule/navigation" name="catalog.leftnav" after="currency" template="myModule/catalog/navigation/left.phtml"/>
</reference>
</catalog_category_default>
</layout>
Bạn không thể thay đổi nó trong tập tin bố trí afaik. Tuy nhiên, bạn có thể mở rộng và ghi đè chúng trong tệp cấu hình của mình.
Thí dụ:
<config>
<global>
<blocks>
<catalog>
<rewrite><product_view>My_Custom_Block_Product_View</product_view></rewrite>
</catalog>
</blocks>
</global>
</config>
Nhớ mở rộng khối ban đầu.
Tôi đã phải đối mặt với vấn đề tương tự rằng tôi cần cập nhật một khối cụ thể cho một bố cục cụ thể.
Những gì tôi kết thúc và nó dường như hoạt động (trong tệp bố cục)
<controller_x_y>
<reference name="block_name_reference">
<block type="mymodule/customblock" name="block_name_reference" />
</reference>
</controller_x_y>
Hi vọng điêu nay co ich.