Здравствуйте! Разбил на страницы комментарии к новостям с pdoPage и никак не могу понять как сделать чтобы при клике на новость, комментарии показывались с последней страницы (например 5-ой). В документации к pdopage нашел параметр &page — Номер страницы для вывода, но как сделать чтобы значение этого параметра менялось, ведь страницы добавляются. Пробовал поставить плейсхолдер pageCount который выводит кол-во страниц, ничего не получилось, т.е так &page=`.
Извиняюсь за возможно простой вопрос, но я только начал вникать в MODX
Pdopage — переход на последнюю страницу
Версия MODX: Revolution
Комментарии (11)
Для добавления комментариев вы должны авторизоваться или зарегистрироваться.
Андрей 16.01.2020 14:04 #
Можно использовать за основу подобное решение — Открывалась последняя страница блога, только считать соответственно комментарии и выводить ссылку новости уже с номером нужной страницы. Ну либо допиливать pdoPage =)
Сергей 16.01.2020 14:26 #
P.S Еще забыл добавить, а так плейсхолдер [ [+pageCount] ] уже выводит общее количесто страниц, ну то есть чтобы не делать арифметические вычисления, я думал может его как -то прикрутить к &page
Андрей 16.01.2020 22:58 #
Выставлять определённую страницу для отображения, а как её туда передавать это иной вопрос. В целом это параметр который принимает значение из $_REQUEST для перехода по страницам.
" И обратная пагинация очень часто используется на форумах например, где последний добавленный ответ находиться на последней странице, и комментарии также, замечал на многих сайтах."
Само собой для определённых целей это весьма полезная вещь, но прямо из коробки идёт не везде.
«P.S Еще забыл добавить, а так плейсхолдер [ [+pageCount] ] уже выводит общее количесто страниц, ну то есть чтобы не делать арифметические вычисления, я думал может его как -то прикрутить к &page»
Плейсхолдер выставляется при отработке сниппета, соответственно впихнуть его в параметр этого же сниппета не выйдет. С вычислением это наиболее простой путь решения задачи.
Сергей 17.01.2020 06:39 #
А это важный для меня момент, спасибо Андрей, я вчера пол дня думал «как впихнуть невпихивоемое» =))
Вообщем сделал вычисления по аналогии как рекомендовал Павел Романов по ссылке выше. Может для новичков таких как я и пригодиться, выложу сюда.
Сделал такой сниппет LastPage:
С помощью модификатора разделил количество комментариев и заменил запятую на точку, иначе у меня ceil почему-то округлял неправильно, если например при делении получалось 4,5 и больше то округлял до 5-ти, если меньше 4,5 — то до четырех.
[ [!+total:div=`5`:replace=`,==.`:toPlaceholder=`mytotal`] ]
Ну и еще один фильтр-модификатор чтобы не выводить ?page=, если страниц всего одна
[ [+mytotal:gt=`1`:then=`?page=[ [!LastPage? &result=`[ [+mytotal] ]`] ]`:else=``] ]
Параметр total это как пример, в других компонентах общее количество может называться по разному. Возможно получилось длинно, некрасиво и неправильно то что модификаторы и все такое, но это всего лишь как пример, рабочий пример, возможно кому-то понадобиться и кто-то сделает по другому.
Насчет СЕО не знаю, я ни ради СЕО просто в некоторых моментах на мой взгляд такой вывод привычней что-ли, ну и как-то более удобней для пользователей.
Алексей Либер 16.01.2020 23:28 #
А если задать обратный порядок вывода комментариев разве это не решит задачу? Или вам нужен только обратный порядок страниц, а комменты должны идти так, как они идут?
Андрей 17.01.2020 00:00 #
В DocLister это включается параметром reversePagination — DocLister 2.3.9. В getPage/pdoPage этого не было. Надо кстати заняться на досуге допилить =)
Алексей Либер 17.01.2020 00:15 #
Сергей 17.01.2020 06:43 #
Было бы супер если бы была такая возможность!
Сергей 17.01.2020 06:51 #
нет, возможно я неправильно написал, ну например — имеем пять страниц комментариев статьи, на первой странице = последние комментарии, на пятой, последней странице = самый свежий, последний добавленный коммент, и когда открывается страница этой статьи, то комментарии выводятся именно с пятой страницы
Алексей Либер 17.01.2020 07:54 #
Сергей 18.01.2020 13:46 #
Сниппет LastPage:
Всего количество страниц = [ [!LastPage] ]