pdoField
pdoField — сниппет выводит любое поле указанного ресурса или его родителя, включая TV параметры.
Оглавление
pdoField — сниппет выводит любое поле указанного ресурса или его родителя, включая TV параметры.
Отличием от аналогов является работа с документами любых контекстов и возможность указать дополнительные параметры при выборке, что позволяет не выводить поля, например, скрытых ресурсов. Так же с помощью указания параметра &class можно получить поле любого объекта MODx. Может быть вызван как фильтр вывода.
Параметры
Принимает общие параметры выборки и результатов pdoTools и некоторые свои:
Параметр | По умолчанию | Описание |
&id | Текущий документ | Идентификатор ресурса. |
&field | pagetitle | Поле ресурса. |
&top | Выбирает родителя указанного &id на уровне &top. | |
&topLevel | Выбирает родителя указанного &id на уровне &topLevel от корня контекста. | |
&default | Указывает поле ресурса, которое вернётся, если &field окажется пуст. Более быстрый аналог фильтра :default= . |
|
&output | Указывает строку, которая вернётся, если и &default, и &field оказались пусты. | |
&toPlaceholder | Если не пусто, сниппет сохранит все данные в плейсхолдер с этим именем, вместо вывода не экран. |
Если указаны &top или &topLevel, а &context нет, то для его определения будет сделан дополнительный запрос в базу данных.
Работу с чанками сниппет не поддерживает, так как возвращает значение только одного поля.
Примеры
Сниппет может быть вызван как фильтр вывода:
/* modParser */
[[*id:pdofield=`pagetitle`]]
/* pdoParser */
{$_modx->resource.pagetitle} // В щаблоне
{$id | resource: 'pagetitle'} // В чанке
На pdo парсере, показана альтернатива сниппету pdoField.
При этом вы можете указывать параметры JSON массивом. Например, выбор второго родителя от ресурса и вывод его «longtitle»:
/* modParser */
[[*id:pdofield=`{"top":2,"field":"longtitle"}`]]
Но лучше использовать обычный вызов — он и быстрее, и удобнее:
/* modParser */
[[pdoField?
&id=`[[*id]]`
&field=`pagetitle`
&top=`2`
]]
/* pdoParser */
{$_modx->runSnippet('pdoField', [
'id' => $id,
'field' => 'pagetitle',
'top' => 2
])}
При сохранении результата сниппета в плейсхолдер &toPlaceholder:
/* modParser */
[[pdoField?
&id=`[[*id]]`
&field=`pagetitle`
&top=`2`
&toPlaceholder=`placeholderName`
]]
// Получаем результат работы сниппета из плейсхолдера
[[+placeholderName]]
/* pdoParser */
{$_modx->runSnippet('pdoField', [
'id' => $id,
'field' => 'pagetitle',
'top' => 2,
'toPlaceholder' => 'placeholderName',
])}
// Получаем результат работы сниппета из плейсхолдера
{var $placeholderName = $_modx->getPlaceholder('placeholderName')}
{$placeholderName}
Если вы используете pdoParser, то для начала необходимо получить значение плейсхолдера.
Время запросов: 0,1246 s
Количество запросов: 24
Источник: cache