我有一个运行两个不同网站的Magento安装。一个销售电子书而另一个不销售,因此业务团队希望从应用程序的“我的帐户”区域中的客户导航块中删除“我的下载”链接。
我可以看到在design / frontend / base / layout / downloadable.xml中定义的链接,但看不到任何定义的方法,只允许我在其中一个网站上禁用链接。显然,我可以覆盖这个XML以关闭全局,但我需要将更改限制在范围内。
如何在多站点Magento安装中的单个网站或商店上定义布局覆盖?
根据以下回复,我做了以下工作:
创建了app / local / Mage / Customer / Block / Account / Navigation.php并添加了一个不在核心代码中的方法removeLink()。
如果我在local.xml中进行了以下更改,则会删除下载链接:
<?xml version="1.0" encoding="UTF-8"?>
<layout>
<default>
<remove name="catalog.compare.sidebar"/>
</default>
<customer_account>
<reference name="customer_account_navigation">
<action method="removeLink" translate="label" module="downloadable"> <name>downloadable_products</name></action>
</reference>
</customer_account>
</layout>
但是,如果尝试定位特定商店,则不是。 E.g。
<?xml version="1.0" encoding="UTF-8"?>
<layout>
<default>
<remove name="catalog.compare.sidebar"/>
</default>
<STORE_mm>
<customer_account>
<reference name="customer_account_navigation">
<action method="removeLink" translate="label" module="downloadable"> <name>downloadable_products</name></action>
</reference>
</customer_account>
</STORE_mm>
</layout>
答案 0 :(得分:9)
正如Anton所说,为您的商店设置一个新的布局主题。任何站点范围+存储范围的方法的另一种方法是使用商店布局句柄 - 它就像每个商店应用的<default>
句柄。如果您的商店代码(在Manage Stores&gt; Store View下)为'foo',则商店布局句柄为<STORE_foo>
。
参考。 Mage_Core_Controller_Varien_Action::addActionLayoutHandles()
答案 1 :(得分:2)
为此网站创建不同的主题
创建app / design / frontend / default / website1 / layout / local.xml
和app / design / frontend / default / website2 / layout / local.xml
您可以在哪里进行可下载布局所需的更改。
这在magento功能中有描述。