Автор Тема: 1.5.6 Ошибка обработки фильтров в BlockLayred  (Прочитано 1151 раз)

06 Ноября 2013, 14:59:26
  • Пользователь
  • **
  • Сообщений: 72
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Невозможно передать ссылку с набором фильтров, если они включают в себя определенное свойство (как предопределенные длина, ширина, высота, так и собственные т.д.). - При открытии в другом окне/браузере или при обновлении окна происходит сброс всех свойств.
Пример - откройте ссылку
http://shop.trodat.kiev.ua/index.php?id_category=21&controller=category&id_lang=1#/long-615-67-85
Предполагалось, что Вы увидите только товары с параметром "Длина" (правый боковой фильтр, примерно посередине чек-боксов) выбранные 3 элемента - 61,5  + 67 + 85 .
Для веса и цены все работает нормально. Возникла мысль, что это из-за того, что в исходной демо-базе не были прописаны теги-имена для отображения фильтра в URL-строке. Но редактирование этих параметров (присвоение имен) ничего не дало. Затем возникал мысль, что сам накосячил - вернул исходные модули "взад". Результат тот же.
Предполагаю ошибку при разборке параметров в
/themes/default/js/modules/blocklayered/blocklayered.js
Найду - сообщу. Исправлю - выложу.


07 Ноября 2013, 17:08:29
Ответ #1
  • Пользователь
  • **
  • Сообщений: 72
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В общем - все грустно.

Ошибки лезут из jQuery - вызовы до инициализации,  ошибки обработки json и т.д. Абы разобраться...
07 Ноября 2013, 18:01:37
Ответ #2
  • Ветеран
  • *****
  • Сообщений: 1217
  • Репутация: +30/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Проверил в ff, работает, фильтры сохраняются при перезагруке страницы, при открытии в новом окне, до включения фильтра "Макс. длина клише" и всех фильтров после него. Может ошибка в этом фильтре, поэтому js и не работает.
07 Ноября 2013, 20:17:03
Ответ #3
  • Пользователь
  • **
  • Сообщений: 72
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля

Не работает потому, что:
1. Когда идет перебор фильтров, разбор полетов и присвоение значения переменной "params_plus" начинается с таймерной функции в blocklayered.js и при смене URL разбор отдается в products-comparison.js. А оттуда в ajax.
2. А при перезагрузке страницы в 1-ю очередь вызывается products-comparison.js, а затем - дальше. И о том, что params_plus не должен быть пустым (и должен ли быть вообще, как и current_friendly_url) ему неведомо.

Ошибка связана с любым созданным ручками свойствами. Развернул на отдельной машине PHP/MySQL/PrestaShop 1.5.6 в ее первозданном виде и залил сверху свою базу товаров. Результат тот же.

Есть еще подозрение, что кто-то забыл в переборке свойств или их номеров поставить условие else для Case. Но это неточно. Хотя и не принято не предусматривать наличие других свойств, если есть возможность их создавать.

А на самом деле, все выросло из попытки превратить выбор параметров для свойств Длина/Ширина/Высота в slider. (Механизм, казалось, заложен. Только оказалось, что слишком загадочно - отдельные таблицы/запросы/условия). Проще изменить существующий механизм списка: на экране он дублируется и выбирается верхний/нижний пределы. Вывод - в интервале. Но это пока в будущих планах. А сейчас надо надо исправить этот глюк. Как выдать клиенту ссылку на товар,  если она не отрабатывается?

Кстати, надо попробовать, будет ли сие проявляться для другого способа выбора - чекбокса, например.
07 Ноября 2013, 20:25:06
Ответ #4
  • Пользователь
  • **
  • Сообщений: 72
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Проверил.
Режим Список/Галочка/Переключатель для вновь созданных свойств роли не играет.

Поправка.
Режим Список/Галочка/Переключатель для ЛЮБЫХ свойств, кроме цвет и  цена  и вес (только, если он - фильтр и слайдер) не дает не только возможность обновить страницу, но и еще вызывает внутреннюю ошибку, в рез-те получаем сообщение - товаров нет.

Кстати, заметил, что у меня почему-то есть возможность добавить вес в набор фильтров 2 раза - один раз как слайдер, второй - как свойство. С чего-бы это?
08 Ноября 2013, 10:51:59
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 13287
  • Репутация: +14557/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В этом модуле много и других ошибок. Некоторые уже исправили Prestashop blocklayered displaying issues
15 Ноября 2013, 20:06:04
Ответ #6
  • Пользователь
  • **
  • Сообщений: 72
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Решено.

Были ошибки в скриптах: поле фильтра не должно быть пустым ни для одной позиции. Иначе ошибка.
11 Августа 2014, 15:40:15
Ответ #7
  • Новичок
  • *
  • Сообщений: 2
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Решено.

Были ошибки в скриптах: поле фильтра не должно быть пустым ни для одной позиции. Иначе ошибка.

Здравствуйте! А можно подробнее о том, как исправить эту ошибку? При передачи ссылки с набором фильтров, происходит сброс параметров. Prestashop 1.5.6.
Спасибо!
11 Августа 2014, 16:07:26
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 1010
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Установите значения по-умолчанию для каждого аттрибута (фитьра). Если у товара есть комбинации, обязательно нужно присвоить значения по-умолчанию.
Так как при пустом фильтре возникает ошибка в передаче данных.
11 Августа 2014, 16:10:45
Ответ #9
  • Новичок
  • *
  • Сообщений: 2
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо большое. Все работает!
20 Августа 2014, 22:10:58
Ответ #10
  • Новичок
  • *
  • Сообщений: 44
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Ребят, у меня не заработало все равно!:(    вот пример http://grandmarket.by/203-trimmery
Работают только цена и производитель.
Другое ставишь, ссылка вроде красиво формируется. пытаешь открыть по ней в другой вкладке - слетает...
Блин уже весь инет перерыл. Помогите советом пожалуйста!
21 Августа 2014, 11:26:06
Ответ #11
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86057
  • Репутация: +25403/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Чтобы советывать, нужно знать причину. Найти в чем проблема можно в логах ошибок или самому включить режим отладки и тестировать.
Ошибка у вас специфическая, причин может быть много. То что обычно помогает, уже написали.
29 Января 2015, 20:52:59
Ответ #12
  • Новичок
  • *
  • Сообщений: 44
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Я готов, заплатить, если кто-нить поможет разобраться с вопросом почему не сохраняет набор фильров при перезагрузке странцы модуль blocklayered.
фильтр работает для характеристик, а не для атрибутов.