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

30 апреля 2019, 10:53

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 нет, то для его определения будет сделан дополнительный запрос в базу данных.

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

Примеры

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

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

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

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

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

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

?

Благодарю за ответ!

Была ли эта информация полезной?

Здравствуйте!

Позвольте представиться, меня зовут Марина. Более 10 лет я занимаюсь обслуживанием сайтов и развитием интернет проектов. Если вы хотите избавиться от хлопот связанных с созданием и поддержкой сайта, тогда вы попали по адресу. При работе с сайтами я предоставляю качественные услуги, ориентируясь на ваши индивидуальные потребности. Для связи со мной воспользуйтесь формой обратной связи.

Инсталента
Пожалуйста, активируйте JavaScript.
Please enable JavaScript.
return; 1