我试图在我的主题布局XMLs中更新现有Block的"type"参数.在示例中,我想使用块"catalog/rewrite_navigation"而不是"catalog/navigation"作为引用名称"catalog.topnav".
我已经通过读取核心PHP文件的布局,块,更新等来测试了几种方法,但没有成功.我只是想避免使用unsetChild然后重新创建一个块.
"常规"方式是:
<reference name="top.menu">
<action method="unsetChild"><name>catalog.topnav</name></action>
<block type="catalog/rewrite_navigation" name="catalog.topnav" template="catalog/navigation/top.phtml"/>
</reference>
Run Code Online (Sandbox Code Playgroud)
但你们有一个线索做这样的事情:
<reference name="catalog.topnav">
<action method="setType"><name>catalog/rewrite_navigation</name></action>
</reference>
Run Code Online (Sandbox Code Playgroud)
通过这样的更新,catalog.topnav的块类型将从"catalog/navigation"更新为"catalog/rewrite_navigation".
非常感谢你的想法!
我从来没有见过像这样的语法,我知道Magento在对它运行动作之前创建了对象(因为它需要有一个实例才能在该实例上执行方法).这让我相信没有办法用行动来做到这一点.
还要注意尝试通过取消设置块并再次添加它来实现.在布局执行时,其他块可能已经将子块添加到该块,并且当您移除块时它们将会脱落.
执行此操作的规范方法是简单地覆盖实际的catalog/navigation块,以便它返回您想要的类.如果由于某种原因,这对您不起作用(例如,其他人已经覆盖了该块),您可能需要修改XML文件以反映您的新类句柄.
希望有所帮助!
| 归档时间: |
|
| 查看次数: |
4032 次 |
| 最近记录: |