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

Дополнение: pdoPage

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

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

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

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

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

Комментарии (1)

  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;
                }
    Успеха!
    Вы должны авторизоваться, чтобы оставлять комментарии.