Модуль Полезные модификации Prestashop 1.7

fortuner

Хранитель порядка
Регистрация
26 Июн 2012
Сообщения
631
Реакции
1.238
Делимся полезными модификациями, хаками, допиленными модулями (или самописными) для Prestashop 1.7.
Предлагаю скопировать правила из темы модулей Prestashop, чтобы в теме было проще ориентироваться.
Правила:
1. Увидели чужую ошибку - исправьте :)
2. Запросы "а сделайте мне то-то" пожалуйста пишите в тему "Помощь с Prestashop".
3. Не спамьте, пусть раздел будет соответствовать своему названию :)
4. Не пишите "спасибо, должен навеки вечные!", просто нажмите "спасибо".
 
Не дочитал тему до конца, но поправлю, они в
1.7.6.3 символы валюты перенесли в БД таблица ps_currency_lang
Если поменять символ только в таблице, то это поможет лишь в случае, если у этой валюты никогда не нужно менять курс через админку. Потому что при смене курса после сохранения валюты вручную исправленный символ будет затерт стандартным символом по умолчанию. В подобных случаях все-равно придется править файлы из папки /cldr/ откуда Преста берет этом символ при записи валюты в базу.
 
Спасибо, буду знать про StockAvailable::getQuantityAvailableByProduct($id_product) , по второму сообщению- - это не решает проблему, если у нас (пример)
upload_2020-2-15_18-47-32.png

Такая ситуация, где используется select и input
Нет например товара с цветом белый, размер S, но цвет Черный есть.
У клиента будет возможность выбрать цвет Белый, но добавить в корзину он не сможет.

upload_2020-2-15_18-49-16.png
 
Еще один LifeHack по PS1.7, не знаю почему, но у некоторых клиентов на PS 1.7.3.2 есть баг, нет возможности изменить
ККК (Комбинирование, Компрессия и Кеширование)
Проблему можно решить через БД. Вдруг будет полезно
Таблица ps_configuration , для отключения 0 , для включения 1
upload_2020-2-16_21-33-11.png
 
Как клонировать модуль.

Пример описывает клонирование модуля 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. Если нужно клонировать ещё - клонируем по данному же алгоритму.
 
Решение некоторых проблем при работе на 1.7
Как подгрузить Javascript если они не работают корректно при добавлении в javascript.tpl?

Найдите файл: /themes/classic/templates/layouts/layout-both-columns.tpl
И перед тегом </body> пишите свой скрипт.

Таким образом запускается Яндекс.Метрика, SlickSlider и многое другое.
 
Решение некоторых проблем при работе на 1.7
Как убрать копейки в ценах?

На главной странице:
Находим в файле /themes/classic/templates/catalog/_partials/miniatures/product.tpl

строки:
{hook h='displayProductPriceBlock' product=$product type="before_price"}
<span class="sr-only">{l s='Price' d='Shop.Theme.Catalog'}</span>
<span itemprop="price" class="price">{$product.price}</span>

и меняем последнюю на:
<span itemprop="price" class="price">{$product.price|replace:',00':''}</span>

По этой же логике меняете $product.regular_price, $product.discount_to_display

В карточке товара:
Находим в файле /themes/classic/templates/catalog/_partials/product-prices.tpl

$product.price, $product.regular_price, $product.discount_to_display и меняем на $product.price|replace:',00':'', $product.regular_price|replace:',00':'', $product.discount_to_display|replace:',00':''
 
Последнее редактирование:
Модуль для 1.7 адаптированный "Отложить покупку"
Для просмотра ссылки Войди или Зарегистрируйся

Работает только в корзине и с авторизованными пользователями.

После установки модуля можете подгрузить мои доработки:
Для просмотра ссылки Войди или Зарегистрируйся

Распакуйте архив и полностью замените файлы в папке /modules/buylater на новые.

подгрузите файл стилей buylater.css или добавьте стили из этого файла в конец файла /themes/classic/assets/css/theme.css

Пример работы Для просмотра ссылки Войди или Зарегистрируйся
 
Назад
Сверху