我试图改变一个块的模板(view.phtml)( product.info)用于商品详细页,要做到这一点,我观察的事件(controller_action_layout_generate_blocks_before),它做必要的检查,我试图改变块的模板后, (product.info)以下方式:
$layout = $observer->getEvent()->getLayout();
$layout->getUpdate()->addUpdate('
<reference name="product.info">
<action method="setTemplate">
<template>customlayout/product/view.phtml</template>
</action>
</reference>');
$layout->getUpdate()->load();
$layout->generateXml();
Run Code Online (Sandbox Code Playgroud)
如果我放"<remove name='product.info'/>",它将被删除,但当试图做上述,它不工作.
编辑:
要求是将模板(产品详细信息)动态切换到当前产品中的选定模板(在CustomModule中).
我试图比较magento版本,所以我可以检查当前版本是否大于1.6使用代码,否则不.我可以通过使用获得magento版本Mage::getVersion()并返回1.7.0.2(一个字符串)但是如何比较它以便我的代码在安装到另一个版本低于此版本的magento时不会破坏页面?有没有比这更好的方法.解决方案必须来自magento.
我正在抓住以下事件来做进一步的逻辑:
core_block_abstract_prepare_layout_before
Run Code Online (Sandbox Code Playgroud)
在Observer类我这样做:
Mage::app()->setCurrentStore($storeView);
Mage::run($storeCode, "store");
但这引发了一个例外:
Mage注册表项"application_params"已经存在
基本上我想要做的是"根据当前的IP更改语言(商店视图)",我试图通过magento自定义模块实现这一点.
我希望能够使用magento事件观察器以编程方式更改magento的默认存储视图?并且可以在不重定向到所选商店的情况下这样做,我的意思是在页面加载之前设置商店视图的值吗?
magento ×3