pdoPage и ajaxMode одновременно default и button

Добрый день сообщество MODX!
Подскажите пожалуйста вариант реализации пагинации, как в яндекс маркете.
В pdoPage это есть, судя документации, но только по отдельности.
Что мне удалось выяснить под катом.

В pdoPage есть ajaxMode с режимом default, когда выводятся ссылки на номера страниц, и режим button (там еще скролл есть, но он почти аналогичен кнопке). Дак вот, стоит задача одновременно вывести кнопку «загрузить еще» и постраничную навигацию. В консоли браузера заметил, что, если выставляем ajaxMode — button, то появляется кнопка, а для div с классом mse2_pagination, в котором размещен вызов
[[!+page.nav]]
для этого дива выставляется атрибут display:none, и постраничная пагинация скрывается, если через консоль браузера этот атрибут удалить, то всё по сути работает почти идеально: при нажатии на кнопку «загрузить еще» появляются новые результаты, а постраничная пагинация активной делает следующую страницу (за исключением History API, которое в этом случае отключается, если бы его можно было в этом режиме оставлять включенным и при «загрузить еще» он бы добавлял в урл номер страницы, то было бы идеально).

Если мы вынесем
[[!+page.nav]]
из дива с классом mse2_pagination, то в этом случае постраничная навигация всегда остается на странице, но при использовании кнопки «загрузить еще» активная страница на следующую не переключается. Как это можно решить более правильно?

К слову пока это пытался одновременно вывести вместе с выводом mFilter2 со стандартными чанками.

В идеале бы получилось такое же решение с пагинацией, как в яндекс маркете, где и кнопкой подгружаются результаты и переход страниц происходит при этом и в адресную строку подставляется номер страницы.
Буду очень благодарен за помощь.
Oracul22
14 августа 2017, 10:26
1
647
0

Комментарии: 1

Алексей Смирнов
17 октября 2017, 00:06
0
У меня похожая задача была. А именно при скроле через кнопку button в строке оставлять номер страницы, чтобы в истории сохранялась, и хотя бы не отфутболивало человека на 1ю страницу, если он с 48й зашел в товар, а потом нажал НАЗАД и попал на 1ю, а не на 48ю.
Решение было простое. (пришлось чуть поразбираться с кодом от mSearch2).
Файл JS скриптов assets/components/msearch2/js/web/default.js (скопируйте и подключите отдельно свой, чтобы при обновлении не затерлись изменения).
Находим в файле строку функции:
addPage:
В ней нужно найти и закомментировать строкуdelete(tmp['page']);:
if (page > current) {
                mse2Config.page = (page != mse2Config.start_page) ? page : '';
                var tmp = mSearch2.getFilters();
               // delete(tmp['page']); // стирание в истории страницу по которой переход.
                mSearch2.Hash.set(tmp);

                var params = mSearch2.getFilters();
                mSearch2.load(params, null, true);
                return false;
            }
Успеха!