Est-il possible de changer un type de bloc en XML de mise en page?
Je sais comment changer de modèle en utilisant la setTemplate
méthode, mais j'essaie de changer le type d'un bloc. Est-ce possible?
Est-il possible de changer un type de bloc en XML de mise en page?
Je sais comment changer de modèle en utilisant la setTemplate
méthode, mais j'essaie de changer le type d'un bloc. Est-ce possible?
Réponses:
Changer le type de bloc signifie changer la classe de bloc, donc non, mais ...
... vous pouvez simplement écraser le bloc:
layout.xml
est traité après la création du bloc, par exemple avec <depends>
inCompany_Module.xml
Le problème est que cela écrase le bloc et ne change pas le type. Cela signifie que tout ce qui est fait sur ce bloc entre la création et votre modification est perdu.
Par exemple pour changer le 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>
Vous ne pouvez pas le changer dans les fichiers de mise en page afaik. Vous pouvez cependant les étendre et les remplacer dans vos fichiers de configuration.
Exemple:
<config>
<global>
<blocks>
<catalog>
<rewrite><product_view>My_Custom_Block_Product_View</product_view></rewrite>
</catalog>
</blocks>
</global>
</config>
N'oubliez pas d'étendre le bloc d'origine.
J'étais confronté à un problème similaire dont j'ai besoin pour mettre à jour un bloc spécifique pour une mise en page spécifique.
Ce que je finis par faire et ça semble marcher (dans le fichier de mise en page)
<controller_x_y>
<reference name="block_name_reference">
<block type="mymodule/customblock" name="block_name_reference" />
</reference>
</controller_x_y>
J'espère que cela t'aides.