Альтернатива атрибутам (скрытие товаров в 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)

Ваша оценка

Комментарии 2

  • почему было бы просто не импортировать и не прописать 301 переадресацию.
    товаров много было?

    все же такие лучше танцы с бубном думаю опасно.
    я бы анализировал 100% времени через вебвизор как ведет себя клиент на сайте с отказом

    • Товаров 20000 примерно, 301 редирект — не очень качественное решение. Сайт работает нормально, СЕО в плюсе, клиентов больше.

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

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