我有一个多商店 Magento 设置(Magento 1.7.0.2),我想为不同的商店提供两个不同的模板。安装第二个后,第一个模板中的菜单消失。我认为这是因为模板实现的自定义菜单模块。
如何编辑模块以两种不同的方式覆盖 Magento 导航(对于两个不同的模板)?
干杯!
我有一个多商店 Magento 设置(Magento 1.7.0.2),我想为不同的商店提供两个不同的模板。安装第二个后,第一个模板中的菜单消失。我认为这是因为模板实现的自定义菜单模块。
如何编辑模块以两种不同的方式覆盖 Magento 导航(对于两个不同的模板)?
干杯!
根据您的描述,我猜这个问题是由菜单模块覆盖的默认块、控制器或模型引起的。在当前版本的 Magento 中处理这个问题并不容易。我可以针对您遇到的情况提出解决方案。
检查哪个类被覆盖
您可以检查菜单模块下的 config.xml,路径应该是
/MAGENT_ROOT/app/code/{local,community}/Custom/Menu/etc/config.xml
检查标签
/config/global/models/xxxx/rewrite # for model rewrite
/config/global/rewrite/xxxx/{from, to} # for controller rewrite
/config/global/blocks/xxxx/rewrite # for block rewrite
然后,您可以查看模块覆盖的内容。
创建基于商店视图的选项
/MAGENT_ROOT/app/code/{local,community}/Custom/Menu/etc/system.xml
添加一个名为Enable the extension的选项。(部分片段如下)
# the xml should insert into /config/sections/xxxx/groups/general/fields/
<enabled>
<label>Enable the extension</label>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_yesno</source_model>
<sort_order>10</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</enabled>
检查班级
良好的编程应该覆盖默认类。所以我们可以使用以下逻辑:
if (Mage::getStoreConfig('xxxx/general/enabled') === '1') {
# the original module logic
} else {
parent::some_method($_args);
}
这是我可以根据我的假设提出的解决方案。希望它可以帮助你。
在创建第二家商店时,只需为该商店选择相同的类别根或您的自定义类别列表,您将在第二家、第三家商店中使用菜单。
System > Manage Stores:
选择Store Name
现在不显示菜单的那个,然后选择默认Root Category *
希望这对您有所帮助。