Обновление макета внешнего интерфейса из модуля - PullRequest
4 голосов
/ 29 июня 2009

Я создал свой собственный модуль magento и успешно расширяю основные контроллеры и модели, но у меня возникают проблемы с тем же делом с файлами макета XML. Я хочу обновить страницу оформления заказа. До сих пор мне удалось перезаписать только весь файл checkout.xml, но я бы предпочел просто добавить его в мой xml-файл.

Это то, что у меня есть в моих модулях config.xml, а файл tm.xml находится в app / design / frontend / default / default / layout /

<frontend>
        <layout>
            <updates>
                    <checkout>
                         <file>tm.xml</file>
            </checkout>
        </updates>
    </layout>
</frontend>

Спасибо

1 Ответ

3 голосов
/ 29 июня 2009

Обновление : текст ниже относится к способу хранения шаблонов и файлов XML вне папки app/design. На протяжении многих лет, с тех пор как этот ответ был написан, это сильно обескураживало мою основную команду Magento. Они зашли так далеко, что усилили это на уровне приложений с помощью кода, и продолжали блокировать новые методы по мере их разработки. Настоятельно не рекомендуется, но я оставляю ответ таким, какой он есть по историческим причинам.

Во-первых, вы можете рассмотреть возможность размещения вашего файла макета где-нибудь в вашем модуле. Я не уверен, насколько широко распространена практика, но это имеет смысл с точки зрения распространения. Это также гарантирует, что ваши изменения макета будут применены, даже если кто-то изменит тему по умолчанию. Делать что-то подобное должно работать

<file>../../../../../code/local/Packagename/Modulename/layouts/tm.xml</file>

Во-вторых, как вы заметили, с указанным выше XML-кодом вы полностью замените checkout.xml при установке magento. Вы не хотите делать это. Вместо этого вы хотите добавить обновления макета (содержимое этого XML-файла) в список доступных обновлений Magento. Так что сделайте что-нибудь подобное вместо этого.

<layout>
    <updates>
        <my_package_my_module_name>                     
            <file>../../../../../code/local/Packagename/Modulename/layouts/tm.xml</file>
        </my_package_my_module_name>
    </updates>
</layout>        

Большое изменение здесь в том, что мы изменили на . Magento загружает все XML, указанный в этом разделе, во что-то, называемое макетом пакета. Таким образом, ваш XML будет жить вместе с XML в checkout.xml.

В tm.xml вы настроите свои особые правила для мульти-доставки

<layout version="0.1.0">
    <checkout_multishipping>
        <!-- ... -->
    </checkout_multishipping>

    <checkout_multishipping_login>
        <!-- ... -->
    </checkout_multishipping_login>
</layout>

Здесь важно иметь в виду, что существующие в checkout.xml правила для мульти-доставки все еще будут существовать. Вам нужно будет написать правила для переопределения того, что делают эти правила. Так работает система макетов Magento. Я бы порекомендовал просмотреть Руководство для Magento Designer , если вы еще этого не сделали, особенно раздел Введение в макеты .

Последнее замечание, вы упомянули, что переопределяете контроллеры. Если вы работаете с контроллером мульти-доставки, вам нужно использовать теги , вам нужно будет использовать теги, которые соответствуют названию комбинации контроллер действия / метод действия для этой страницы вашего контроллера

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