È possibile cambiare un tipo di blocco nel layout XML?
So come cambiare il modello usando il setTemplate
metodo, ma sto cercando di cambiare il tipo di un blocco. È possibile?
È possibile cambiare un tipo di blocco nel layout XML?
So come cambiare il modello usando il setTemplate
metodo, ma sto cercando di cambiare il tipo di un blocco. È possibile?
Risposte:
Cambiare il tipo di blocco significa cambiare la classe di blocco, quindi no, ma ...
... puoi semplicemente sovrascrivere il blocco:
layout.xml
sia elaborato dopo la creazione del blocco, ad es. Con <depends>
inCompany_Module.xml
Il problema è che questo sovrascrive il blocco e non cambia il tipo. Ciò significa che tutto ciò che viene fatto in questo blocco tra la creazione e la modifica viene perso.
Ad esempio per modificare 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>
Non puoi cambiarlo nei file di layout afaik. È possibile, tuttavia, estenderli e sovrascriverli nei file di configurazione.
Esempio:
<config>
<global>
<blocks>
<catalog>
<rewrite><product_view>My_Custom_Block_Product_View</product_view></rewrite>
</catalog>
</blocks>
</global>
</config>
Ricorda di estendere il blocco originale.
Stavo affrontando un problema simile che ho bisogno di aggiornare un blocco specifico per un layout specifico.
Quello che finisco di fare e sembra funzionare è (nel file di layout)
<controller_x_y>
<reference name="block_name_reference">
<block type="mymodule/customblock" name="block_name_reference" />
</reference>
</controller_x_y>
Spero che sia di aiuto.