2013-07-13 2 views
1

Я хочу переопределить шаблон и контроллер front-office по умолчанию в моем новом модуле, не изменяя внутренний код/​​структуру prestashop.Как переопределить шаблон и контроллер front-office по умолчанию для prestashop в модуле

Пример:

Я создал один модуль, т.е. «MyModule» в/папке модулей, где я хочу использовать адрес формы PrestaShop (в address.tpl).

описание товара: http://demo-store.prestashop.com/en/address.

Я хочу улучшить форму адреса, предоставив некоторые дополнительные поля/функциональные возможности, но не изменяя основные функции prestashop.

Итак, как я могу переопределить его контроллер/темы/шаблоны в моем модуле? Я искал много об этом на Google, но ничего :(

Любая помощь будет оценена не найдено.

ответ

1

Модули могут работать, как вы только спросить, если есть HOOK внутри template/controller, которые позволяют запускать чтобы настраиваемая функция. Посмотрите, если у вас есть шанс подцепив модуль где-то, наблюдая в списке показал внутри

backoffice > modules > position 

контроллеров Адреса не получили никакого крюка, если я помню хорошо, так что у вас есть 3 способа редактирования его функциональность:

  1. Идём на поразительную клиентскую модификацию (imho), благодаря интенсивному использованию вызова jquery/ajax для выполнения необходимого действия. Поместите код с помощью модуля, который добавляет ваш js-скрипт в заголовок с помощью функции hookHeader(). Поскольку этот крючок всегда вызывается на всем сайте, вы можете использовать недостающий крючок в шаблоне адреса.

  2. добавить себе крюк внутри контроллера и шаблон с помощью следующей процедуры: http://www.prestashop.com/forums/topic/218291-create-custom-and-new-hook-in-ps-15/

  3. использовать удивительные возможности переопределения рамки PrestaShop, чтобы изменить то, что вам нужно в файле контроллера размещены внутри вашего prestashop_root/override/controllers/front/AddressController.php и внутри ваш /prestashop_root/themes/my_theme/address.tpl. таким образом вы можете отказаться от любых функций контроллера, потеряв исходную функциональность, и если вам нужно будет обновить свою установку, вам просто нужно будет проверить функцию, которую вы изменили в переопределенном файле так же, как и для своего модуля.

+0

В моем модуле я являюсь основным контроллером адреса. т.е. я создал структуру папок, такую ​​как 'mymodule/override/controllerlers/front/addresscontroller.php' и вызывая шаблон' address.tpl' в 'mymodule/override/views/front/address.tpl', но его не работает – Sky

+0

Использование' setTemplate' Я пытаюсь выполнить файл 'address.tpl':' $ this-> setTemplate (__ PS_BASE_URI __. 'modules/mymodule/override/views/front/address.tpl'); ' – Sky

+0

Вы не можете переопределить контроллер внутри модуля, который выходит за борт с функцией автозагрузки по умолчанию. автозагрузка всегда будет искать контроллер, выполнив поиск в папке переопределения и для имени класса, которое имеет имя «ControllerName», где исходный контроллер называется «ControllerNameCore», он никогда не будет искать переопределение контроллера внутри папки модуля. вы должны поместить ваши файлы в свой правый каталог, так: address.tpl отправляется в /themes/default/address.tpl, а ваш адресный контроллер должен быть помещен в /override/controllers/front/AddressController.php.:) – kawashita86

Смежные вопросы