Недавно столкнулся с одной проблемой. Нужно было разместить несколько модулей с рекомендуемыми товарами в одном блоке сайта, в частности - "displayHome". Требовалось вывести на главной странице друг за другом 8 модулей с товарами из разных категорий. Решил воспользоваться модулем "Рекомендуемые товары", который идёт в комплекте с Prestashop 1.7. Один модуль в области "displayHome" разместился прекрасно, но как только я попытался разместить второй такой же, вышла ошибка: "Модуль уже трансплантирован в хук". Много часов бился над этой проблемой в выходные. Итогом многочасовых попыток был выверен следующий алгоритм действий, который я привожу ниже.
Итак, как клонировать модуль Featured products в Prestashop 1.7
Пример описывает клонирование модуля ps_featuredproducts, но алгоритм применим к любому модулю Престы.
- Клонируем папку с нужным нам модулем, присваиваем ей другое имя, например ps_featuredproducts2
- В корне папки с клонированным модулем изменяем название файла ps_featuredproducts.php на ps_featuredproducts2.php
- В корне этой же папки видим два файла config.xml и config_ru.xml. Заходим в каждый и меняем тег <name> и тег <displayName>, прибавляя к имени двойку. Вот так: <name>ps_featuredproducts2</name> и <displayName><![CDATA[Featured products2]]></displayName>
- Заходим в папку views, далее templates, далее hook и меняем название файла ps_featuredproducts.tpl на ps_featuredproducts2.tpl
- Открываем получившийся файл, прибавляем к тегу <section> классы "featured-products clearfix". Вот так: <section class="featured-products clearfix">.
- Далее тегу <h1> добавляем классы "h1 products-section-title text-uppercase".
- В атрибуте "s" тега <h1> пишем имя данного блока, например, если мы показываем товары категории "Серия X", то пишем данное название.
- Далее для элемента <a> внизу добавляем классы "all-product-link float-xs-left float-md-right h4", а в атрибуте "s" данного элемента пишем нужную нам фразу для ссылки на все элементы данной категории, например "Все товары серии X"
- Возвращаемся к файлу ps_featuredproducts2.php, который находится в корне клонируемого модуля. Открываем его.
- Меняем "class Ps_FeaturedProducts" на "class Ps_FeaturedProducts2"
- Меняем "$this->name = 'ps_featuredproducts'" на "$this->name = 'ps_featuredproducts2'"
- Меняем "$this->displayName = $this->trans('Featured products', array(), 'Modules.Featuredproducts.Admin')" на "$this->displayName = $this->trans('Featured products2', array(), 'Modules.Featuredproducts.Admin');"
- Меняем "$this->templateFile = 'module:ps_featuredproducts/views/templates/hook/ps_featuredproducts.tpl';" на "$this->templateFile = 'module:ps_featuredproducts2/views/templates/hook/ps_featuredproducts2.tpl';"
- Меняем "if (!$this->isCached($this->templateFile, $this->getCacheId('ps_featuredproducts')))" на "if (!$this->isCached($this->templateFile, $this->getCacheId('ps_featuredproducts2')))"
- Меняем "return $this->fetch($this->templateFile, $this->getCacheId('ps_featuredproducts'));" на "return $this->fetch($this->templateFile, $this->getCacheId('ps_featuredproducts2'));"
- Нажимаем ctrl+h для вызова функции поиска и замены в текстовом редакторе. Во всём файле меняем "HOME_FEATURED_CAT" на "HOME_FEATURED_CAT2"
- Сохраняем файл.
- С помощью phpMyAdmin заходим в базу данных сайта.
- Открываем таблицу "ps_configuration". Кликаем галочку "показать все", чтобы отобразить все строки данной таблицы.
- В графу "Фильтровать строки" вводим "HOME_FEATURED_CAT". Копируем данную строку. Имя меняем на "HOME_FEATURED_CAT2"
- Открываем таблицу "ps_module", кликаем галочку "показать все", чтобы отобразить все строки данной таблицы.
- Ищем строку "ps_featuredproducts", копируем её, имя присваиваем "ps_featuredproducts2"
- Переходим в админ-панель сайта.
- Нажимаем "Расширенные параметры" --> "Производительность". Нажимаем "Очистить кэш".
- Заходим в "Модули" --> "Модули и сервисы"
- Заходим в установленные модули.
- Находим модуль "ps_featuredproducts2".
- Выбираем "Настроить" --> "Деинсталлировать"
- Внимание! При деинсталляции файлы модуля НЕ удаляем!
- Снова заходим в "Модули" --> "Модули и сервисы"
- Нажимаем "Расширенные параметры" --> "Производительность". Нажимаем "Очистить кэш".
- В графе Поиск вводим ps_featuredproducts2. Видим наш удалённый модуль. Нажимаем "install". Выходит окно о благополучной установке модуля.
- Нажимаем "Расширенные параметры" --> "Производительность". Нажимаем "Очистить кэш".
- Выбираем "Настроить модуль". В настройкам ставим нужную нам категорию для вывода товаров.
- Заходим в "Дизайн" --> "Расположение блоков". Нажимаем иконку с якорем "Расположить модуль".
- Выбираем модуль "ps_featuredproducts2", располагаем его в нужной нам области сайта, например "displayHome"
- Проверяем, что в выводимой категории товаров есть товары, иначе ничего выводиться не будет.
- Если товары в выводимой категории есть, то переходим на сайт и видим в нужной области наш клонированный модуль.
- Если нужно клонировать ещё - клонируем по данному же алгоритму.
Подписывайтесь на группу в ВКонтакте, вступайте в сообщество на Facebook, чтобы всегда быть в курсе актуальных выпусков
Web development blog!