Получение полей любого ресурса в 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]] — Вывод ТВ с именем 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]] для кешируемых ресурсов.
    Внимание! Используйте фильтр ввода-вывода:stripTags для предостережения XSS-атак (например: [[!#get.name:notags]])

pdoField

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

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

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

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

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

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

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

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

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

[[#resourceID.field]]

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


Свяжитесь с нами

Нажимая на кнопку «Отправить», я даю свое согласие на обработку персональных данных в соответствии с законом №152-ФЗ «О персональных данных» от 27.07.2006 и принимаю условия Пользовательского соглашения