Ist es möglich, einen Blocktyp in Layout-XML zu ändern?
Ich weiß, wie man eine Vorlage mit der setTemplate
Methode ändert , aber ich versuche, den Typ eines Blocks zu ändern. Ist das möglich?
Ist es möglich, einen Blocktyp in Layout-XML zu ändern?
Ich weiß, wie man eine Vorlage mit der setTemplate
Methode ändert , aber ich versuche, den Typ eines Blocks zu ändern. Ist das möglich?
Antworten:
Wenn Sie den Blocktyp ändern, müssen Sie die Blockklasse ändern. Nein, aber ...
... Sie können den Block einfach überschreiben:
layout.xml
nach dem Erstellen des Blocks verarbeitet wird, z. B. mit <depends>
inCompany_Module.xml
Das Problem ist, dass dies den Block überschreibt und den Typ nicht ändert. Dies bedeutet, dass alles, was in diesem Block zwischen der Erstellung und Ihrer Änderung getan wird, verloren geht.
Zum Beispiel zum Ändern der 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>
Sie können es nicht in den Layout-Dateien afaik ändern. Sie können sie jedoch in Ihren Konfigurationsdateien erweitern und überschreiben.
Beispiel:
<config>
<global>
<blocks>
<catalog>
<rewrite><product_view>My_Custom_Block_Product_View</product_view></rewrite>
</catalog>
</blocks>
</global>
</config>
Denken Sie daran, den ursprünglichen Block zu erweitern.
Ich hatte ein ähnliches Problem, bei dem ich einen bestimmten Block für ein bestimmtes Layout aktualisieren muss.
Was ich am Ende mache und es scheint zu funktionieren, ist (in der Layoutdatei)
<controller_x_y>
<reference name="block_name_reference">
<block type="mymodule/customblock" name="block_name_reference" />
</reference>
</controller_x_y>
Hoffe das hilft.