pdoPage + Easycomm: вывод комментариев на 1 странице с разбивкой кнопкой показать еще
Здравствуйте, друзья!
Столкнулась с задачей вывести комментарии Easycomm на одной странице. Необходимо собрать все комментарии которые находятся под ресурсом с id 5. Комментарии оставлены к дочерним ресурсам ресурса 5. То есть, комментарии оставлены не к ресурсу с id 5, а к дочерним ресурсам родителя с id 5. Мне необх+одимо эти комментарии вывести в новом ресурсе так чтобы на странице отображались по 10 комментариев и была кнопка Показать еще. Поэтому подумала можете pdoPage сможет это сделать.
Вот какой запрос написать с pdoPage, пока не знаю. Не нашла примеры.
Кстати, в комментариях, мне необходимо также вывести pagetitle и дополнительные поля ресурсов (не комментариев). Например, tv.logo, tv.lic.
Может вы сталкивались с подобной задачей? Пожалуйста, поделитесь опытом! Спасибо!
Столкнулась с задачей вывести комментарии Easycomm на одной странице. Необходимо собрать все комментарии которые находятся под ресурсом с id 5. Комментарии оставлены к дочерним ресурсам ресурса 5. То есть, комментарии оставлены не к ресурсу с id 5, а к дочерним ресурсам родителя с id 5. Мне необх+одимо эти комментарии вывести в новом ресурсе так чтобы на странице отображались по 10 комментариев и была кнопка Показать еще. Поэтому подумала можете pdoPage сможет это сделать.
Вот какой запрос написать с pdoPage, пока не знаю. Не нашла примеры.
Кстати, в комментариях, мне необходимо также вывести pagetitle и дополнительные поля ресурсов (не комментариев). Например, tv.logo, tv.lic.
Может вы сталкивались с подобной задачей? Пожалуйста, поделитесь опытом! Спасибо!
Комментарии: 12
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Да, здесь pdoPage должен работать.
Про работу кнопки «Загрузить еще» стоит читать его документацию…
Насчет этого «Необходимо собрать все комментарии которые находятся под ресурсом с id 5.»
Два варианта решения:
1. дочерних ресурсов мало — просто формируйте сторонним сниппетом строку для параметра threads для ecMessages в виде 'resource-6,resource-7,resource-8,resource-9,resource-10'…
2. Дочерних много — укажите threads='*', а ограничение выборки делайте через параметр where.
3. Дочерних много и они вложены на много уровней вниз — тут посложнее, все зависит от конкретной ситуации.
Я бы наверное изначально формировал thread в виде category-5-resource-10, чтобы потом через LIKE выбирать: 'category-5-%'.
>> также вывести pagetitle
Читайте про параметр resourceFields у сниппета ecMessages в документации.
А вот TV вы так не выберете. Тут только JOIN если делать.
Спасибо вам за подробный ответ!
Попробовала 2 вариант с параметром where. Ресурсы с комментариями которые необходимо вывести имеют шаблон 69. Поэтому я указала 69 в where.
Но что-то ничего не показывает. Если убираю параметр where, то выводятся все комментарии со всего сайта. А необходимо выводить комментарии ресурсов у которых шаблон равен 69. Может я неправильно указала параметр where?
Еще вопрос. Как использовать JOIN для выборки TV? Можно пример без fenom? Спасибо большое!
Я сейчас не вспомню точно как, но что-то типа resource.template или modResource.template.
насчет join — поищите примеры здесь на форуме…
ну типа modx.pro/help/13888
И используйте его в качестве &messages в вызове:
Что касается полей ресурса, то в чанке сообщения можно использовать FastField:
Спасибо большое за готовое решение!
Вы можете уточнить 10 в
За что отвечает цифра 10?
5 — если правильно поняла, это родитель (дедушка) в котором есть ресурсы, которые имеют комментарии.
Подробности тут
В комментариях эти плейсхолдеры выводят значения с других ресурсов, а не значения ресурсов которым написаны комментарии.
Например, если комментарий был написал к ресурсу Демо 1, то при выводе комментарий ресурса Демо 1, [[#[[+thread]].pagetitle]] и [[#[[+thread]].logo]] выводят значения с Демо Х.
Что выводит просто [[+thread]].
В ресурсе Демо 1, плейсхолдер [[+thread]] выводит ID ресурса Демо Х.
Наверно поэтому в комментариях ресурса Демо 1 выводятся значения с Демо Х.
Вот так должно сработать:
В чанках вот так попробуйте: