Как фильтровать данные tv в modx через pdoPage

На modx можно делать интересные вещи. Не зря много веб-компаний делают порталы, интернет-магазины, мощные сервисы бронирования и другие сайты. Кроме того, modx входит в ТОП бесплатных CMS.
Но что-то я далеко зашел. Одним из нужных функционалов есть фильтрацией данных по определенному критерию. И в этой статье я хочу написать вам несколько примеров как фильтровать и выводить данные на modx с помощью pdoPage, в том числе и с дополнительных полей (tv).

Выводим данные с дополнительного поля с фильтрацией where

Не забываем, что при использовании дополнительных полей в pdoPage их нужно прописать в includeTVs:

По коду:
!pdoPage = вызов сниппета, не кешируемый (знак восклицания).
parents = родительский элемент (если документы у вас в корне, то ставьте 0)
includeTVs = включает дополнительные поля для вывода
where = фильтрация запроса (в моем примере поле «статус» должно быть «Заявка»). Кстати, есть нюанс если стоит «поле по умолчанию» в настройке ввода дополнительного поля. Об этом позже.
tpl = шаблон вывода. В примере идет название статьи с активной ссылкой, дальше статус и еще два дополнительных поля.
limit = максимальное количество пунктов для вывода.

Примеры использования where в pdoPage modx revolution

Несколько примеров самого where:

Обратите внимание на комбинированные запросы (AND, OR). В них для значений «равно» нужно писать := . Для неизвестной части значения знаки процентов %. Запросы могут быть и длиннее. Также обращайте внимание на формат дат, особенно в Дополнительных полях с Параметров ввода Дата.

Фильтр данных в pdoMenu modx

Все примеры выше также подойдут и для pdoMenu.

Не выводит дополнительное поле в where через pdoPage modx

Это может быть из-за того, что забыли указать includeTVs. Также я столкнулся с такой проблемой в modx revolution 2.5.7-pl, версия pdoTools 2.9.2-pl1. Не выводило данные, которые в Параметрах ввода дополнительного поля стояли По умолчанию. Хотя в некоторых других частях кода все работало. Как только я убрал данные (заменил по умолчанию на пробел) сразу все заработало.

Фильтр данных на modx с помощью pdoPage
Фильтр данных на modx с помощью pdoPage

  • Добрый день!

    Подскажите, как работать с pdoPage через Smarty?

    Я написал следующий код вызова сниппета pdoPage в шаблоне Smarty:

    Но затем в шаблоне item.tpl не могу обратиться к дополнительным полям image,price.

    Я нашел извращенный способ, но при этом типы данных становятся типа string и никак не обрабатываются в логике Smarty, например в условиях if, собственно item.tpl

    Вот тут условие не работает, так как $params.price не является числом.

    Что я делаю не так? Посоветуйте пожалуйста!

    • здравствуйте, к сожалению, не работал со Smarty.

  • Многие люди обвиняют MODX в том, что он не умеет хранить чанки в файлах и вынуждает лишний раз работать с базой данных. Это и неудобно для системы контроля версий, и медленнее.

    • С другой стороны меньше обращение к файлам :)
      Я думаю что хранение в БД лучшее решение.

    • Кто вам такое сказал, что Modx не может хранить в файлах чанки?
      Посмотрите у каждого чанка, шаблона, сниппета, есть опция «статичный». Жмете на нее и слева появляется окно для выбора пути сохранения. Сохраняете. Далее, работаете уже в этом файле, где сохранили, через FTP, например. А чтобы обновлялось после каждой загрузки, не забывайте сбрасывать кеш страница, шаблона или этого чанка, либо вызов как некешируемый [[!$chunk_name]]

    • Спасибо, за некешируемый знал, а вот по статичному — не проверял

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *