Дата публикации
28 Августа 2019
Дата изменения
5 Июля 2020
Уникальных просмотров
2.786

Оглавление

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
Время запросов: 0,1246 s
Количество запросов: 24
Источник: cache