Prestashop 1.7: клонирование модуля


25-07-2018
Денис Л.
Cms
3
1970
Prestashop 1.7: клонирование модуля

Недавно столкнулся с одной проблемой. Нужно было разместить несколько модулей с рекомендуемыми товарами в одном блоке сайта, в частности - "displayHome". Требовалось вывести на главной странице друг за другом 8 модулей с товарами из разных категорий. Решил воспользоваться модулем "Рекомендуемые товары", который идёт в комплекте с Prestashop 1.7. Один модуль в области "displayHome" разместился прекрасно, но как только я попытался разместить второй такой же, вышла ошибка: "Модуль уже трансплантирован в хук". Много часов бился над этой проблемой в выходные. Итогом многочасовых попыток был выверен следующий алгоритм действий, который я привожу ниже.

Итак, как клонировать модуль Featured products в Prestashop 1.7


Пример описывает клонирование модуля ps_featuredproducts, но алгоритм применим к любому модулю Престы.

  1. Клонируем папку с нужным нам модулем, присваиваем ей другое имя, например ps_featuredproducts2
  2. В корне папки с клонированным модулем изменяем название файла ps_featuredproducts.php на ps_featuredproducts2.php
  3. В корне этой же папки видим два файла config.xml и config_ru.xml. Заходим в каждый и меняем тег <name> и тег <displayName>, прибавляя к имени двойку. Вот так: <name>ps_featuredproducts2</name> и <displayName><![CDATA[Featured products2]]></displayName>
  4. Заходим в папку views, далее templates, далее hook и меняем название файла ps_featuredproducts.tpl на ps_featuredproducts2.tpl
  5. Открываем получившийся файл, прибавляем к тегу <section> классы "featured-products clearfix". Вот так: <section class="featured-products clearfix">.
  6. Далее тегу <h1> добавляем классы "h1 products-section-title text-uppercase".
  7. В атрибуте "s" тега <h1> пишем имя данного блока, например, если мы показываем товары категории "Серия X", то пишем данное название.
  8. Далее для элемента <a> внизу добавляем классы "all-product-link float-xs-left float-md-right h4", а в атрибуте "s" данного элемента пишем нужную нам фразу для ссылки на все элементы данной категории, например "Все товары серии X"
  9. Возвращаемся к файлу ps_featuredproducts2.php, который находится в корне клонируемого модуля. Открываем его.
  10. Меняем "class Ps_FeaturedProducts" на "class Ps_FeaturedProducts2"
  11. Меняем "$this->name = 'ps_featuredproducts'" на "$this->name = 'ps_featuredproducts2'"
  12. Меняем "$this->displayName = $this->trans('Featured products', array(), 'Modules.Featuredproducts.Admin')" на "$this->displayName = $this->trans('Featured products2', array(), 'Modules.Featuredproducts.Admin');"
  13. Меняем "$this->templateFile = 'module:ps_featuredproducts/views/templates/hook/ps_featuredproducts.tpl';" на "$this->templateFile = 'module:ps_featuredproducts2/views/templates/hook/ps_featuredproducts2.tpl';"
  14. Меняем "if (!$this->isCached($this->templateFile, $this->getCacheId('ps_featuredproducts')))" на "if (!$this->isCached($this->templateFile, $this->getCacheId('ps_featuredproducts2')))"
  15. Меняем "return $this->fetch($this->templateFile, $this->getCacheId('ps_featuredproducts'));" на "return $this->fetch($this->templateFile, $this->getCacheId('ps_featuredproducts2'));"
  16. Нажимаем ctrl+h для вызова функции поиска и замены в текстовом редакторе. Во всём файле меняем "HOME_FEATURED_CAT" на "HOME_FEATURED_CAT2"
  17. Сохраняем файл.
  18. С помощью phpMyAdmin заходим в базу данных сайта.
  19. Открываем таблицу "ps_configuration". Кликаем галочку "показать все", чтобы отобразить все строки данной таблицы.
  20. В графу "Фильтровать строки" вводим "HOME_FEATURED_CAT". Копируем данную строку. Имя меняем на "HOME_FEATURED_CAT2"
  21. Открываем таблицу "ps_module", кликаем галочку "показать все", чтобы отобразить все строки данной таблицы.
  22. Ищем строку "ps_featuredproducts", копируем её, имя присваиваем "ps_featuredproducts2"
  23. Переходим в админ-панель сайта.
  24. Нажимаем "Расширенные параметры" --> "Производительность". Нажимаем "Очистить кэш".
  25. Заходим в "Модули" --> "Модули и сервисы"
  26. Заходим в установленные модули.
  27. Находим модуль "ps_featuredproducts2".
  28. Выбираем "Настроить" --> "Деинсталлировать"
  29. Внимание! При деинсталляции файлы модуля НЕ удаляем!
  30. Снова заходим в "Модули" --> "Модули и сервисы"
  31. Нажимаем "Расширенные параметры" --> "Производительность". Нажимаем "Очистить кэш".
  32. В графе Поиск вводим ps_featuredproducts2. Видим наш удалённый модуль. Нажимаем "install". Выходит окно о благополучной установке модуля.
  33. Нажимаем "Расширенные параметры" --> "Производительность". Нажимаем "Очистить кэш".
  34. Выбираем "Настроить модуль". В настройкам ставим нужную нам категорию для вывода товаров.
  35. Заходим в "Дизайн" --> "Расположение блоков". Нажимаем иконку с якорем "Расположить модуль".
  36. Выбираем модуль "ps_featuredproducts2", располагаем его в нужной нам области сайта, например "displayHome"
  37. Проверяем, что в выводимой категории товаров есть товары, иначе ничего выводиться не будет.
  38. Если товары в выводимой категории есть, то переходим на сайт и видим в нужной области наш клонированный модуль.
  39. Если нужно клонировать ещё - клонируем по данному же алгоритму.

Подписывайтесь на группу в ВКонтакте, вступайте в сообщество на Facebook, чтобы всегда быть в курсе актуальных выпусков
Web development blog!

Читайте также:

1С Битрикс: убираем из кода скрытые подпункты в меню

Создаём свою таблицу в базе данных 1С-Битрикс

October CMS - переезд сайта. Практика, разбор ошибок при переносе