是否可以在每个商店的基础上定义Magento布局更新



我有一个运行两个不同网站的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>

但是,如果试图针对特定的商店,那就不是。例如

<?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>

正如Anton所建议的,为您的商店设置一个新的布局主题。对于任何站点范围+商店范围的东西,另一种方法是使用商店布局句柄——这就像应用于每个商店的<default>句柄。如果您的商店代码(在管理商店>商店视图下)是"foo",那么商店布局句柄将是<STORE_foo>

参考。Mage_Core_Controller_Varien_Action::addActionLayoutHandles()

为这些网站创建不同的主题
创建app/design/frontend/default/website1/layout/local.xml
和app/design/frontend/default/website2/layout/local.xml
您可以对可下载的布局进行必要的更改。这在magento功能中有描述。

最新更新