pdoPage и ajaxMode одновременно default и button
Добрый день сообщество MODX!
Подскажите пожалуйста вариант реализации пагинации, как в яндекс маркете.
В pdoPage это есть, судя документации, но только по отдельности.
Что мне удалось выяснить под катом.
В pdoPage есть ajaxMode с режимом default, когда выводятся ссылки на номера страниц, и режим button (там еще скролл есть, но он почти аналогичен кнопке). Дак вот, стоит задача одновременно вывести кнопку «загрузить еще» и постраничную навигацию. В консоли браузера заметил, что, если выставляем ajaxMode — button, то появляется кнопка, а для div с классом mse2_pagination, в котором размещен вызов
Если мы вынесем
К слову пока это пытался одновременно вывести вместе с выводом mFilter2 со стандартными чанками.
В идеале бы получилось такое же решение с пагинацией, как в яндекс маркете, где и кнопкой подгружаются результаты и переход страниц происходит при этом и в адресную строку подставляется номер страницы.
Буду очень благодарен за помощь.
Подскажите пожалуйста вариант реализации пагинации, как в яндекс маркете.
В pdoPage это есть, судя документации, но только по отдельности.
Что мне удалось выяснить под катом.
В pdoPage есть ajaxMode с режимом default, когда выводятся ссылки на номера страниц, и режим button (там еще скролл есть, но он почти аналогичен кнопке). Дак вот, стоит задача одновременно вывести кнопку «загрузить еще» и постраничную навигацию. В консоли браузера заметил, что, если выставляем ajaxMode — button, то появляется кнопка, а для div с классом mse2_pagination, в котором размещен вызов
[[!+page.nav]]
для этого дива выставляется атрибут display:none, и постраничная пагинация скрывается, если через консоль браузера этот атрибут удалить, то всё по сути работает почти идеально: при нажатии на кнопку «загрузить еще» появляются новые результаты, а постраничная пагинация активной делает следующую страницу (за исключением History API, которое в этом случае отключается, если бы его можно было в этом режиме оставлять включенным и при «загрузить еще» он бы добавлял в урл номер страницы, то было бы идеально).Если мы вынесем
[[!+page.nav]]
из дива с классом mse2_pagination, то в этом случае постраничная навигация всегда остается на странице, но при использовании кнопки «загрузить еще» активная страница на следующую не переключается. Как это можно решить более правильно?К слову пока это пытался одновременно вывести вместе с выводом mFilter2 со стандартными чанками.
В идеале бы получилось такое же решение с пагинацией, как в яндекс маркете, где и кнопкой подгружаются результаты и переход страниц происходит при этом и в адресную строку подставляется номер страницы.
Буду очень благодарен за помощь.
Комментарии: 1
У меня похожая задача была. А именно при скроле через кнопку button в строке оставлять номер страницы, чтобы в истории сохранялась, и хотя бы не отфутболивало человека на 1ю страницу, если он с 48й зашел в товар, а потом нажал НАЗАД и попал на 1ю, а не на 48ю.
Решение было простое. (пришлось чуть поразбираться с кодом от mSearch2).
Файл JS скриптов assets/components/msearch2/js/web/default.js (скопируйте и подключите отдельно свой, чтобы при обновлении не затерлись изменения).
Находим в файле строку функции:
addPage:
В ней нужно найти и закомментировать строкуdelete(tmp['page']);:
Решение было простое. (пришлось чуть поразбираться с кодом от 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;
}
Успеха!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.