Можно ли определить обновления макета Magento для каждого магазина? - PullRequest
6 голосов
/ 20 марта 2012

У меня есть одна установка Magento, работающая на двух разных сайтах.Один продает электронные книги, а другой нет, поэтому бизнес-команда хотела бы, чтобы ссылка «Мои загрузки» была удалена из блока навигации клиента в области «Моя учетная запись» приложения.

Я вижу ссылку, определенную вdesign / frontend / base / layout / downloadable.xml, но не вижу ни одного определенного способа, который позволил бы мне отключить ссылку только на одном из веб-сайтов.Очевидно, я мог бы переопределить этот XML, чтобы отключить его глобально, но мне нужно, чтобы изменение было ограничено в области действия.

Как определить переопределения макета на одном веб-сайте или хранить в многосайтовой установке Magento?

Основываясь на ответах ниже, я сделал следующее:

Создал app / local / Mage / Customer / Block / Account / Navigation.php и добавил метод removeLink (), которого нет в ядре.code.

Если я внесу следующее изменение в 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>

Ответы [ 2 ]

9 голосов
/ 20 марта 2012

Как предложил Антон, установите новую тему оформления для своего магазина. Другим подходом для всего сайта + области магазина было бы использование дескриптора макета магазина - он похож на дескриптор <default>, который применяется к каждому магазину. Если код вашего магазина (в разделе «Управление магазинами> Представление магазина») равен «foo», дескриптор макета магазина будет <STORE_foo>.

Ref. Mage_Core_Controller_Varien_Action::addActionLayoutHandles()

2 голосов
/ 20 марта 2012

Создание разных тем для этих сайтов.
Создание приложения / design / frontend / default / website1 / layout / local.xml
и app / design / frontend / default / website2 / layout / local.xml
Где вы можете внести изменения, необходимые для загружаемого макета.Это описано в функции magento.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...