Как перезаписать файлы основных шаблонов из пользовательского модуля?
10
Я хочу перезаписать два файла. А именно view.phtmlи print.phtmlзаказов на продажу.
(путь: app/design/frontend/base/default/template/sales/order/)
Я создаю модуль, в котором я хочу создать путь, app/design/frontend/base/default/template/<My Module Name>/sales/order/чтобы ядро view.phtmlи print.phtmlфайлы не перезаписывались.
Поэтому, пожалуйста, объясните мне, как решить эту задачу.
Вы можете сделать это с помощью XML-файла макета внутри вашего модуля. В вашем модуле должен быть раздел, config.xmlподобный этому, чтобы позволить Magento загружать XML-код вашего модуля (path:) app/design/frontend/base/default/layout/mymodulename.xml:
Нет необходимости переписывать весь блок. В моем ответе конструктор Mage_Sales_Block_Order_Viewget сначала вызывается и устанавливает шаблон, затем setTemplateвызывается get, инициируемый компоновочным XML из моего примера, и устанавливает пользовательский шаблон. Я хотел бы пойти на решения, которые не используют переписывания, поскольку они могут вызвать конфликты.
7очев
7очем верно. Нет необходимости устанавливать шаблон в блоке. Решение 7ochem хорошо, и оно сработало для меня.
Раджан Фалду
Это зависит от вас. Если вы перезаписываете или добавляете какой-либо метод php, вам нужно перезаписать блок, иначе вы просто измените шаблон через module.xml или local.xml. Полагаю, мое решение не влияет на версию magento.
Предположим, что наше имя модуля «CustomSales» и имя пакета «Exercise».
Шаг 1: Создайте файл конфигурации модуля в app / etc / modules / Exercise_CustomSales.xml
Шаг 2: Создайте файл конфигурации в app / code / local / Exercise / CustomSales / etc / config.xml
Шаг 3: Создайте php-файл, который перезаписывает фактический файл view.phtml, app / code / local / Exercise / CustomSales / Block / Sales / Order / View.php
Шаг 4: вам нужно создать файл local.xml внутри папки макета (возможный путь: app / design / frontend / package / theme / layout). Это для print.phtml.
например (app / design / frontend / rwd / default / layout / local.xml)
Переместите файл view.phtml и print.phtml в папку «app / design / frontend / package / theme / template / customsales / sales / order».
Очистить кэш magento.
источник
Mage_Sales_Block_Order_View
get сначала вызывается и устанавливает шаблон, затемsetTemplate
вызывается get, инициируемый компоновочным XML из моего примера, и устанавливает пользовательский шаблон. Я хотел бы пойти на решения, которые не используют переписывания, поскольку они могут вызвать конфликты.