Альтернатива атрибутам (скрытие товаров в Prestashop)

Довелось мне недавно переносить интернет-магазин из Webasyst Shop Script Premium на Prestashop 1.6x, да не простой магазин, а с кучей переделок, с функционалом, чпу, и тд… Нужно было скрыть товары из категорий со скобками () в названии и отобразить кнопки в карточке товара на эти скрытые товары. А еще в этих скобках находилась характеристика – ширина товара, при ее выборе в фильтре необходимо раскрывать эти товары, которые мы ранее скрыли. Такое решение имеет огромный плюс – вместо атрибутов используем полноценный товар – получаем гибкость при настройке URL, экспорте в маркет, синхронизации с 1С УТ …

Проблема решилась написанием своего скрипта для экспорта из из Webasyst Shop Script Premium в Prestashop 1.6x. , модулем  Faktiva Clean URLs и некоторыми переделками кода, которыми хочу поделиться с вами. Для начала скроем товары со скобкой, для этого в classes/Сategory.php в SQL запрос добавим AND pl.name NOT LIKE “%(%”

Еще нужно немного переделать часть кода, который отвечает за общее количество товаров в категории.

Теперь у нас “Товар (2м)” скрыт, (при отключенном модуле фильтров) давайте отобразим его в карточке родительского товара “Товар”. Для этого я добавил свою функцию getProductsLinksAt($name), после getCombinationImageById, примерно 2225 строка в classes/Product.php

Далее в product.tpl вашей темы добавим вывод кнопок

 

И в product.js добавим вначале кода небольшой скрипт для сортировки и показа

Теперь у нас товар со скобкой скрывается в категории и отображается в товаре, но если включим модуль – Блок многоуровневой навигации (фильтры), скрытие пропадет, исправим это. Идем в modules/blocklayered/blocklayered.php ищем $this->nbr_products = Db::getInstance()->getValue(‘SELECT COUNT(*) FROM ‘._DB_PREFIX_.’cat_filter_restriction’, false); и меняем на

И немного меняем запрос

Далее поправим вывод товаров по производителю (classes/Manufacturer.php 382 строка AND pl.name NOT LIKE “%(%”):

Далее поправим вывод в поиске (classes/Search.php 284 строка AND pl.name NOT LIKE “%(%”):

И наконец в модулях, на главной – популярные и новые товары (classes/Product.php в функции getNewProducts)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Яндекс.Метрика