tagManager 2: слетает сортировка товара при использовании пагинации

Здраствуйте!

Настроил на MODX Revolution 2.5.1-pl систему фильтрации tagManager 2 2.3-pl в режиме AJAX. Пагинация, сортировка и фильтрация работает четко, но есть один неудобный момент.

Порядок действий:

  1. каталог с пагинацией, страниц 2 или более
  2. отсортировали товары, например, по цене
  3. на первой странице кликнули на товар и перешли на его страницу
  4. в браузере жмем возврат на предыдущую страницу, т. е. в каталог
  5. видим идентично отсортированный по цене каталог, все селекты сортировки в том же положении
  6. посредством пагинации переходим на вторую страницу каталога и видим сортировку товара по pagetitle, а селект сортировки в положении «сортировать по цене».

Проверил все записи на форуме по tagManager. Похожей проблемы не нашел.
Скачал готовый демо-сайт, добавил в него сортировку.

<select class="f_sortby" name="sortby" onchange="tmFilters.changeOrder(this);">
    <option value="pagetitle">по названию</option>
    <option value="price">по цене</option>
    <option value="publishedon">по дате</option>
</select>

Возникает аналогичная проблема.

Похожая проблема есть и на демо-сайте http://demo.modx-shopkeeper.ru/

  1. заходим в раздел каталога «Компьютеры», в котором 18 товаров с постраничной разбивкой по 9шт.
  2. выбираем вывод по 12 шт на страницу. На первой странице выводиться 12шт, на второй остальные 6. Параметры в адресной строке - sortdir=asc&page=1&limit=12
  3. находясь на первой странице кликаем на любой товар
  4. на странице товара в браузере жмем возврат на предыдущую страницу
  5. возвращаемся в каталог. Параметры теже sortdir=asc&page=1&limit=12. В селекте стоит «вывести по 12». Выведено теже 12 товаров.
  6. переходим на вторую страницу, где должны находиться остальные 6 товаров, а выводится уже 9. Параметры — sortdir=asc&page=2. В селекте так и стоит 12 товаров на страницу.

alt text

По первичной диагностике проблема возникает из за того, что после возврата со страницы товара в каталог, у последнего исчезают следующие скрытые поля перед тегом </form>.

<input name="limit" value="12" type="hidden">
<input name="page" value="1" type="hidden">

Подскажите можно ли решить эту проблему настройками tagManager-а?

Попробуйте добавить такие поля:

<input name="limit" value="[[!getRequest?paramName=`limit`&defaultValue=`9`]]" type="hidden">
<input name="page" value="[[!getRequest?paramName=`page`&defaultValue=`1`]]" type="hidden">

Код сниппета "getRequest" здесь:
https://github.com/andchir/shopkeeper3/blob/master/core/components/shopkeeper3/elements/snippets/getRequest.php

Для сортировки видимо надо по такому же принципу.

Andchir, добрый день. Спасибо за ответ.

Для сортировки товара предложенное решение действительно подошло, но проблему с фильтрацией оно не решает.

На примере демосайта (http://demo.modx-shopkeeper.ru/):

  1. заходим в Каталог > Компьютеры
  2. максимальную цену урезаем до 80000, то останется 12 и 5 товаров на 1 и 2 странице соответственно.
  3. находясь на 1 странице раздела каталога обновляем ее или заходим в любой товар, затем возвращаемся обратно в раздел.
  4. выглядит все как и до обновления
  5. переходим на страницу 2 и видим вывод всех 9 товаров вместо 5. Возвращаемся на 1-ю страницу, а там товары дороже 80000. Фильтр стоит с ограничением — не дороже 80000.

При тестировании выше указанной последовательности на демосайте нашелся мини-баг. Для меня он не критичен, т. к. для указания границы цены использовать текстовое поле не буду. Суть — если в разделе Компьютеры указать в текстовом поле верхний лимит цены 80000 и после фильтрации нажать на 2 страницу, то на мгновение загружается 2-я страница и тут же идет возврат на 1-ю. При использовании слайдера такой проблемы нет.

Похоже, подключение к Форум | MODX Shopkeeper было разорвано, подождите, пока мы пытаемся восстановить соединение.