Jump to main content Jump to doc navigation

Что такое getResourceField?

getResourceField - это простой Сниппет, который можно использовать для отображения одного поля, включая переменные шаблона (TV), другого ресурса в MODX Revolution.

История

getResourceField был впервые выпущен 16 сентября 2010 года автором paulmerchant, соавтором которого является Shaun McCormick.

Скачать

Сниппет можно получить через диспетчер пакетов или загрузить вручную из Официального репозитория.

Использование

Минимальный вызов тега выглядит следующим образом:

[[getResourceField]]

Это выведет заголовок текущего ресурса.

Параметры getResourceField

Имя Описание Значение по умолчанию
id Идентификатор ресурса, из которого нужно получить поле. $modx->resource->get('id')
field Имя возвращаемого поля или переменной шаблона. pagetitle
isTV Если установлено значение 1 или true, поле считается переменной шаблона. false
processTV Если установлено значение 1 или true, TV переменная будет обрабатываться в соответствии с ее параметрами вывода. false
default Значение (строка), возвращаемое, если поле не найдено или пусто.

Примеры

Вернуть заголовок страницы из ресурса с идентификатором 123:

[[getResourceField? &id=`123`]]

Вернуть обработанную переменную шаблона с именем myTV родительского ресурса и, если ее значение пусто, вывести сообщение «Извините, значение отсутствует»:

[[getResourceField? &id=`[[*parent]]` &field=`myTV` &processTV=`1` &default=`Извините, значение отсутствует`]]

Вернуть поле introtext конечного родителя (обратите внимание, что для этого необходимо установить Сниппет UltimateParent):

[[getResourceField? &id=`[[UltimateParent]]` &field=`introtext`]]

Ошибки

Одна ошибка, к которой склонен этот Cниппет, обманчиво незаметна: вы можете получить зацикливание. Рассмотрим пример, в котором вы определили TV переменную шаблона на своей домашней странице, например [[*Feature_article]], и вы используете это в вызове сниппета getResourceField:

 [[getResourceField? &id=`[[*featured_article]]` &field=`content`]]

Если этот TV параметр не установлен, по умолчанию используется идентификатор текущей страницы. Если ваш вызов Сниппета находится в содержимом вашей страницы, и вы запрашиваете контент в качестве своего поля, ваш Сниппет может "попасть в кроличью нору" и бесконечно зацикливаться сам на себе, в результате чего ваш запрос страницы будет завершен со слишком большим количеством перенаправлений.

Итог: если вызов Сниппета находится внутри того же поля, которое вы запрашиваете (например, контентное содержимое), убедитесь, что параметр id никогда не указывает на текущую страницу.