Получение полей любого ресурса в MODX Revo

Часто при разработке сайтов требуется получить нужные поля некоторых ресурсов, к примеру, вывести в шапке сайта телефон, который менеджер мог бы менять в ресурсе "Контакты". Так вот, рассмотрим как это сделать с помощью сниппетов.

Навигация по статье:


fastField

Данный сниппет обладает более широкими возможностями, чем getResourceField, и у него удобный синтаксис.

Скачать fastField можно из официального репозитория - https://modx.com/extras/package/fastfield

Синтаксис вызова выглядит так:

[[#resourceID.field]]

Где resourceID - ID нужного ресурса, field - название поля.

Примеры использования плагина fastField:

  • [[#1.pagetitle]] - Вывод pagetitle ресурса с ID = 1;
  • [[#1.tv.myTV]] - Вывод TV с именем myTV для ресурса с ID = 1;
  • [[#1.properties.articles.articlesPerPage]] - Вывод параметров ресурса с ID = 1;
  • [[#[[*parent]].introtext:default=`[[#[[*parent]].description]]`]] - Вывод аннотации родителя ресурса и если она пуста, то выдаёт описание (fastField поддерживает фильтры ввода-вывода);
  • [[#POST.name]] - значение $_POST['name'] (и других глобальных ресурсов аналогично сниппету getReqParam)
    Поддерживаются глобальные массивы: $_GET, $_POST, $_REQUEST, $_SERVER, $_FILES, $_COOKIE, $_SESSION. Тип массива после диеза (#) является чувствительным к регистру. Имя элемента массива также чувствительно к регистру. Вы можете использовать некешируемый тег [[!#get.name]] для кешируемых ресурсов.
    Внимание! Используйте фильтр ввода-вывода :notags для предостережения XSS-атак (например: [[!#get.name:notags]])

pdoField

Сниппет входит в пакет pdoTools, скачать его можно тут - https://modstore.pro/packages/utilities/pdotools или в официальном репозитории - https://modx.com/extras/package/pdotools

Этот сниппет одновременно обладает возможностями getResourceField и UltimateParent, то есть выводит любое поле указанного ресурса или его родителя, включая TV-параметры.

Отличием от аналогов является работа с документами любых контекстов и возможность указать дополнительные параметры при выборке, что позволяет не выводить поля, например, скрытых ресурсов. Так же с помощью указания параметра &class можно получить поле любого объекта MODX. Может быть вызван как фильтр вывода.

Сниппет может быть вызван как фильтр вывода:

[[*id:pdofield=`longtitle`]]

И обычный вызов:

[[pdoField?
&id=`[[*id]]`
&field=`longtitle`
&top=`2`
]]

Так же pdoField включает в себя и синтаксис fastField:

[[#resourceID.field]]

Все параметры сниппета смотрите в документации тут - https://docs.modx.pro/components/pdotools/snippets/pdofield




Комментарии к посту
  • Andrey Knyazkov Andrey Knyazkov 18 января 2020, 14:31 #
    Не ставьте fastField. Приложение устаревшее, после установки ляжет весь сайт