Автор Тема: Как сделать, чтобы один из фильтров был по умолчанию включен(модуль bloclayered)  (Прочитано 77 раз)

01 Март 2018, 10:42:42
  • Старожил
  • ****
  • Сообщений: 385
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
День добрый,
подскажите как сделать, чтобы один из фильтров был по умолчанию был включен
Используется модуль bloclayered.

Заранее большое спасибо!
01 Март 2018, 11:53:03
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 14962
  • Репутация: +14588/-5
  • Сообщество PrestaShop
    • Просмотр профиля
В bloclayered.js можно поменять вид элемента при загрузки страницы.
$(document).ready(function() {$('input[name='или id']).attr('checked', true);}
02 Март 2018, 14:13:19
Ответ #2
  • Новичок
  • *
  • Сообщений: 7
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Чтобы не создавать новую тему.
Версия 1.6. Нужно сразу в категории включить фильтр по наличию в положение "в наличии".
Выбрать чекбокс - $("#layered_quantity_1").attr('checked',true);
 имитировать нажатие - $("#layered_quantity_1").attr('checked',true);
 имитировать щелчок - $('#layered_quantity_1').trigger('click');
 прямой переход: window.location =...
 Не дают применения фильтра сразу на первой странице.
 Потом, если перейти на другую страницу или выбрать другой фильтр, то добавится и нужный фильтр.
 Можно в blocklayered.tpl для фильтра прописать checked="checked" - сразу не работает.
 Нужна страница с хвостом в адресе ...#/nalichie-po_nalichiyu
 Если из категории в браузер напрямую добавить к адресу #/nalichie-po_nalichiyu то не работает, сбрасывается
 Похоже первую страницу загружает как обычно только контроллер CategoryController.
 Решение с $(document).ready(function() не нравится: получается загрузка 2 страниц вместо сразу нужной.
 Менял классы Link, Dispatcher (function createUrl), пока не нашел решения
02 Март 2018, 15:54:51
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 14962
  • Репутация: +14588/-5
  • Сообщество PrestaShop
    • Просмотр профиля
$(document).ready(function() не загружает страницу, страница загружается одна и делает это контроллер, потом в переопределяются элементы страницы.

Для того чтобы сразу показать товары, которые есть в наличии без использования javascript, нужно изменить sql запрос. Если такой вариант нужен, ищите на форуме информацию, писали много раз и для разных версий prestashop.
02 Март 2018, 21:20:44
Ответ #4
  • Новичок
  • *
  • Сообщений: 7
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Мне нужно, чтобы в категории выводились только товары в наличии,
товаров на странице нужно как в настройках (константа PS_PRODUCTS_PER_PAGE)
Делаю условие в product-list.tpl, там уже есть нужные переменные,
В цикле перебора товаров пишу условие
$product.quantity > 0
Но на каждой странице количество товаров не соответствует  настройкам.
Получается так: в настройках 16 товаров на странице,  по факту на какой-то 11 на другой 5, а может и 0 на первой странице.
То есть  количество страниц и количество товаров на странице рассчитывается без учета наличия, но выводятся только в наличии.
А  включенный фильтр по наличию выводит как надо.
Поэтому, чтобы не тратить время, проще включить фильтр с первой страницы и его скрыть.

03 Март 2018, 13:48:31
Ответ #5
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22553
  • Репутация: +17130/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
В классе /classes/Category.php в методе getProducts добавить условие WHERE ...
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.