MODX. Ориентирование в дереве ресурсов с помощью сниппета pdoField

Компонент pdoField создан для вывода любого поля указанного ресурса или его родителя, включая ТВ параметры. Он объединил в себе возможности getResourceField и UltimateParent. Но помимо возможности вывода полей обладает и куда более интересным функционалом — возможностью ориентироваться в уровнях каталога. 

Например, если необходимо настроить вывод информации в зависимости от того, в каком каталоге находится ресурс на 3 уровне вложенности:

{set $desired = id искомого каталога}

{if '!pdofield' | snippet : [
    'topLevel' => 3, 
    'field'=>'id', 
    'ultimate'=>'1'] == $desired}

Выводим информацию

{/if}

Или, к примеру, можно проверить входит ли алиас родителя на 3 уровне вложенности в массив неких значений 

{if '!pdofield' | snippet : [
    'topLevel' => 3, 
    'field'=>'alias', 
    'ultimate'=>'1'] not in list $key_aliases}

Выводим информацию

{/if}

Параметр ultimate включает режим, при котором &top и &topLevel работают в точности как в сниппете UltimateParent.

Документация сниппета pdoField

pdoField ​

pdoField

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

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

Параметры

Принимает общие параметры выборки и результатов pdoTools и некоторые свои:

Параметр По умолчанию Описание
&id Текущий документ Идентификатор ресурса.
&field pagetitle Поле ресурса.
&top Выбирает родителя указанного &id на уровне &top.
&topLevel Выбирает родителя указанного &id на уровне &topLevel от корня контекста.
&default Указывает поле ресурса, которое вернётся, если &field окажется пуст. Более быстрый аналог фильтра :default=
&output Указывает строку, которая вернётся, если и &default, и &field оказались пусты.
&toPlaceholder Если не пусто, сниппет сохранит все данные в плейсхолдер с этим именем, вместо вывода не экран.

Если указаны &top или &topLevel, а &context нет, то для его определения будет сделан дополнительный запрос в базу данных.

Работу с чанками сниппет не поддерживает, так как возвращает значение только одного поля.

Примеры

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

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

При этом вы можете указывать параметры JSON массивом. Например, выбор второго родителя от ресурса и вывод его «longtitle»:

modx
[[*id:pdofield=`{"top":2,"field":"longtitle"}`]]

Но лучше использовать обычный вызов - он и быстрее, и удобнее:

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