Фильтры вывода MODX

РНх и модификаторы MODX

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

Напомним некоторые из таких ситуации.

Для MODx Revolution:

[[+publishedon:strtotime:date=`%d-%m-%Y`]] - форматирование даты;
[[+pagetitle:limit=`40`]] — ограничение длины отображаемой строки;
[[+published:isequalto=`1`:then=`Опубликована`:else=``]] — отображение значения на основании проверки условия;
[[+createdby:userinfo=`username`]] — выбор из данных, о пользователе его имени

Такие модификаторы, добавляющие уровень логики непосредственно в заменитель или поле документа, в версии MODx Evolution реализованы с помощью механизма РНх (Place Holders extended — расширенные заменители), а в MODx Revolution — с помощью встроенных в ядро системы фильтров вывода. РНх-модификаторы используют внутри заменителей MODx и полей документа.

Рассмотрим эти средства подробнее.

Теперь для того, чтобы убедиться, что фильтры вывода работают, выполните следующие деЙствия.

1. Создайте новый документ с такими параметрами:

Заголовок — Изучаем фильтры вывода MODX
Описание — пример работы фильтра
Аннотация — проверка работы фильтров вывода MODX Revolution в поле introtext
Шаблон — blank

Убедитесь, что установлен флажок Показывать в меню;

На вкладке Настройка сбросьте флажок Использовать HTML-редактор и установите флажок Публиковать.

2. Нажмите кнопку Сохранить, а затем повторно откройте документ для редактирования.

3. В поле Содержимое ресурса введите следующий код:

Дата создания: [[*createdon]] <br />
Автор: [[*createdby]] <br />
Заголовок: [[*pagetitle]] <br />
Поле description: [[*description]] <br />
Поле introtext: [[*introtext]]

4. Сохраните изменения в документе и выполните его предварительный просмотр. Как видим, дата не отформатирована, а вместо имени пользователя отображается его идентификатор, поле описание и аннотация — с прописной буквы.

Дата создания: 2013-10-14 10:17:53
Автор: 1
Заголовок: Изучаем фильтры вывода MODX
Поле description: пример работы фильтра
Поле introtext: проверка работы фильтров вывода MODX Revolution в поле introtext

Значения полей при выводе не отформатированы

5. Для устранения этих недостатков можно воспользоваться модификаторами MODX. Внесите в содержимое документа следующие дополнения:

Дата создания: [[*createdon:ago]] <br />
Автор: [[*createdby:userinfo=`username`]] <br />
Заголовок: [[*pagetitle]] <br />
Поле description: [[*description:]] <br />
Поле introtext: [[*introtext]]<br /> 

6. Сохраните документ и выполните его предварительный просмотр. Благодаря применению РНх-модификаторов ago (результатом будет — число секунд, минут, недель или месяцев, прошедших с даты, указанной в теге) и userinfо, мы получили отформатированную дату и имя пользователя

Дата создания: 20 минут назад
Автор: Admin
Заголовок: Изучаем фильтры вывода MODX
Поле description: пример работы фильтра
Поле introtext: проверка работы фильтров вывода MODX Revolution в поле introtext

Чуть позже мы рассмотрим полный перечень модификаторов MODX, а сейчас затронем такое полезное свойство РНх, как заменитель.

Заменители MODX

Как было отмечено выше, РНх-модификаторы используют внутри заменителей MODx и полей документа. Но как поступить, если нам необходимо воспользоваться логикой РНх за их пределами. Например, мы хотим, чтобы на странице Изучаем фильтры вывода MODX, кроме имени пользователя, создавшего документ, отображалось еще и имя текущего пользователя. Кроме того, необходимо сделать так, чтобы метка Поле description была видна только в том случае, если дополнительное поле description содержит какое-нибудь значение.

Для решения подобных задач используют заменитель , внутри которого можно применять модификаторы вывода. Например, внесите в содержимое документа Изучаем фильтры вывода MODX следующие дополнения:

Дата создания: [[*createdon:ago]] <br />
Автор: [[*createdby:userinfo=`username`]] <br />
Заголовок: [[*pagetitle]] <br />
[[*description:is=``:then=``:else=`Поле description: [[*description]] <br />`]]
Поле introtext: [[*introtext]]

и очистите поле description.

Сохраните изменения и выполните предварительныйпросмотр документа. Метка description исчезла. Опять откройте для редактирования документ Изучаем фильтры вывода MODX и установите полю description какте либо значение, например — фильтрация поля. Сохраните изменения и выполните предварительный просмотр. Теперь метка description отображается вместе с остальным содержимим страницы.

Дата создания: 35 минут назад
Автор: Admin
Заголовок: Изучаем фильтры вывода MODX
Поле description: фильтрация поля
Поле introtext: проверка работы фильтров вывода MODX Revolution в поле introtext

Как видите достаточно просто можно манипулировать выводом пользовательских данных на сайте.
В следующей статье мы рассмотрим подробнее модификаторы MODX.


Комментарии