Чи можна змінити тип блоку в макеті XML?
Я знаю, як змінити шаблон за допомогою setTemplate
методу, але я намагаюся змінити тип блоку. Чи можливо це?
Чи можна змінити тип блоку в макеті XML?
Я знаю, як змінити шаблон за допомогою setTemplate
методу, але я намагаюся змінити тип блоку. Чи можливо це?
Відповіді:
Зміна типу блоку означає зміну класу блоків, так що ні, але ...
... ви можете просто перезаписати блок:
layout.xml
обробляється після створення блоку, наприклад, з <depends>
inCompany_Module.xml
Проблема полягає в тому, що це перезаписує блок і не змінює тип. Це означає, що все, що робиться на цьому блоці між створенням і вашими змінами, втрачається.
Наприклад для зміни 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>
Ви не можете змінити його у файлах макета afaik. Однак ви можете їх розширити і змінити у своїх конфігураційних файлах.
Приклад:
<config>
<global>
<blocks>
<catalog>
<rewrite><product_view>My_Custom_Block_Product_View</product_view></rewrite>
</catalog>
</blocks>
</global>
</config>
Не забудьте продовжити початковий блок.
У мене виникло подібне питання, що мені потрібно оновити конкретний блок для конкретного макета.
Що я в кінцевому підсумку роблю, і, здається, працює (в файлі макета)
<controller_x_y>
<reference name="block_name_reference">
<block type="mymodule/customblock" name="block_name_reference" />
</reference>
</controller_x_y>
Сподіваюсь, це допомагає.