Выводим TV-поле ресурса только в том случае, если оно заполнено в MODX Revo
Привет, друзья! Я всегда уделяю мелочам особое внимание, поскольку считаю, что если вы делаете сайт, то должны отточить все его моменты.
Например, в MODX Revolution существуют так называемые TV-поля, поэтому на примере простого поля «цены» давайте рассмотрим способы его вывода.
Начинающий пользователь (а может, и не только начинающий) сделает вывод поля таким образом:
Цена: [[*price]]
Где «price» – соответственно идентификатор (имя) поля.
На что здесь стоит обратить внимание? На то, что если поле не обязательное и не заполнено, то вы получите нечто следующее:
Цена:
Что, по идее, является некой ошибкой. Покажу, как это можно исправить.
Если вы хотите выводить поле только в том случае, когда оно заполнено – первый вариант кода вы заменяете на:
[[*price:!empty=`Цена: [[*price]]`]]
Все названия вы заменяете на свои соответственно.
Если вы хотите вывести сообщение о том, что цена (или другая информация о ресурсе отсутствует), то добавьте следующий код в шаблон вашего сайта:
[[*price:empty=`Цена не указана!`]]
Где «price» – соответственно имя поля.
При использовании двух последних конструкций вместе, то есть:
[[*price:!empty=`Цена: [[*price]]`]]
[[*price:empty=`Цена не указана!`]]
информация из поля будет выводиться вместе с сопутствующим текстом или же просто будет выводиться сообщение об отсутствии должной информации.
Помимо этого, есть еще два варианта совмещенного вывода необходимой информации.
Первый - это:
[[*price:is=``:then=`Цена не указана!`:else=`Цена: [[*price]]`]]
И второй:
[[If? &subject=`[[*price]]` &operator=`notempty` &then=`Цена: [[*price]]` &else=`Цена не указана!`]]
Какой из перечисленных способов использовать - решать вам.