Как переопределить список продуктов / показать название без копирования темы Prestashop дыры?

Я создал модуль для добавления ссылки oneToMany Product->artists.

Это отлично работает в бэк-офисе (CRUD + ссылка на продукт в форме).

Теперь я хочу переопределить тему Prestashop 1.6 по умолчанию, просто добавив имя исполнителя под заголовком для списка продуктов, демонстрации продуктов и всплывающего окна продукта.

Я бы хотел избежать копирования темы с отверстиями всего для десяти строк HTML-тегов ...

Как лучше всего это сделать?


person Soullivaneuh    schedule 01.03.2016    source источник


Ответы (1)


Система тем Prestashop работает следующим образом:

  1. Модуль или контроллер создают файл шаблона.
  2. Модуль может переопределить этот файл шаблона.
  3. Тема может иметь приоритет над этим файлом шаблона.

Если ваша тема уже обрабатывает этот файл шаблона, вы не сможете изменить его в модуле.

Самое простое решение - изменить файлы шаблонов темы.


Если вы хотите добавить данные в шаблон, вы можете использовать систему Prestashop Hook. На странице продукта много крючков:

  • HOOK_EXTRA_LEFT
  • HOOK_EXTRA_RIGHT
  • HOOK_PRODUCT_OOS
  • HOOK_PRODUCT_ACTIONS
  • HOOK_PRODUCT_TAB
  • HOOK_PRODUCT_TAB_CONTENT
  • HOOK_PRODUCT_CONTENT

Если один из этих перехватчиков неудобно размещен на странице, добавьте немного JQuery, чтобы переместить его в DOM по своему усмотрению.


Есть обходной путь, но это не чистое решение. Вы можете переопределить контроллер продукта и вместо $this->setTemplate(_PS_THEME_DIR_.'product.tpl'); объявить свой собственный файл шаблона в своем модуле ... Это действительно не то решение, которое я бы рассматривал.

person Florian Lemaitre    schedule 02.03.2016
comment
Так что официальный ответ - нет. Очень плохо. Почему не рекомендуется второе решение? Потому что при этом мне нужно написать только один файл вместо того, чтобы копировать тему дыр ... - person Soullivaneuh; 02.03.2016
comment
Хорошо, я понимаю, почему это плохая идея - файл product-list.tpl включен во многие шаблоны. Так что использовать еще один будет излишним. - person Soullivaneuh; 02.03.2016