Обновление : текст ниже относится к способу хранения шаблонов и файлов 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 />