¿Es posible cambiar un tipo de bloque en el diseño XML?
Sé cómo cambiar la plantilla usando el setTemplate
método, pero estoy tratando de cambiar el tipo de un bloque. es posible?
¿Es posible cambiar un tipo de bloque en el diseño XML?
Sé cómo cambiar la plantilla usando el setTemplate
método, pero estoy tratando de cambiar el tipo de un bloque. es posible?
Respuestas:
Cambiar el tipo de bloque significa cambiar la clase de bloque, así que no, pero ...
... simplemente puedes sobrescribir el bloque:
layout.xml
se procesa después de crear el bloque, por ejemplo, con <depends>
inCompany_Module.xml
El problema es que esto sobrescribe el bloque y no cambia el tipo. Esto significa que todo lo que se hace en este bloque entre la creación y su cambio se pierde.
Por ejemplo para cambiar el 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>
No puede cambiarlo en los archivos de diseño afaik. Sin embargo, puede extenderlos y anularlos en sus archivos de configuración.
Ejemplo:
<config>
<global>
<blocks>
<catalog>
<rewrite><product_view>My_Custom_Block_Product_View</product_view></rewrite>
</catalog>
</blocks>
</global>
</config>
Recuerda extender el bloque original.
Estaba enfrentando un problema similar que necesito para actualizar un bloque específico para un diseño específico.
Lo que termino haciendo y parece funcionar es (en el archivo de diseño)
<controller_x_y>
<reference name="block_name_reference">
<block type="mymodule/customblock" name="block_name_reference" />
</reference>
</controller_x_y>
Espero que esto ayude.