На этом уроке мы рассмотрим основные объекты CMS MODX Revolution и создадим несколько веб-страниц (ресурсов) для блога.

В MODX Revolution основные объекты можно разделить на 2 категории:

  • Ресурс (resource). В большинстве случаев данный объект представляет собой веб-страницу сайта, но кроме этого ресурсом может быть вообще любая сущность, которую можно идентифицировать в сети с помощью URL или URI. Ресурсы также можно использовать как контейнеры и помещать в них другие ресурсы, таким образом, вы можете создать структуру сайта. Каждый ресурс характеризуется уникальным идентификатором. Для того чтобы обратиться к полю ресурса необходимо использовать следующий синтаксис:
    [[*pagetitle]] //выводит заголовок ресурса
    [[*id]] //выводит идентификатор ресурса
    
  • Элементы: шаблон (template), дополнительное поле (tv), чанк (chunk), сниппет (snippet), плагин (plugin). Они могут применяться для формирования структуры веб-страницы, хранения дополнительной информации связанной с основным ресурсом, вывода динамического контента, выполнения обработки событий веб-страницы и т.д.
Элемент Описание
Шаблон (template) Шаблон всегда должен быть связан с ресурсом и определяет, как данный ресурс будет выглядеть в браузере. Шаблон следует создавать, если с его помощью будет выводиться множество ресурсов. В шаблонах можно использовать любые теги, чанки, сниппеты и др.
Дополнительное поле (tv) Дополнительное поле (TV) - это пользовательское поле для MODX ресурсов. Переменные TV используются для расширения атрибутов, доступных для ресурса. Изначально в MODX ресурс имеет определенное количество полей по умолчанию: pagetitle, content, description и др. Если вам необходимо добавить несколько дополнительных полей к вашим страницам, то это можно сделать с помощью переменных TV. MODX позволяет иметь практически неограниченное число переменных TV.
Чанк (chunk) Чанк – это кусочек статического текста, который Вы можете использовать на всех страницах сайта. В чанках можно размещать сниппеты, но запрещается использовать код PHP. Для обращения к чанкам в MODX Revolution принята следующая запись:
[[$chunk]]  //вызов кэшированного чанка
[[!$chunk]]  //вызов не кэшированного чанка
Сниппет (snippet) Сниппет – это исполняемый кусок PHP кода, который осуществляет вывод динамического контента на странице или в другом элементе CMS MODX Revolution. Он может применяться для создания динамического меню, вывода последних постов, организации поиска по сайту и многого другого. В сниппетах нельзя смешивать код php и html, т.е. он должен начинаться с <?php и заканчиваться ?>. Если вам необходимо получить на выходе из сниппета html код, то используйте чанк, который установите в качестве возвращаемого значения сниппета. Для передачи значений из спиппета в чанк используйте плейсхолднеры. Для вызова сниппетов используйте следующий код:
[[mySnippet]]  //вызов кэшированного сниппета
[[!mySnippet]] //вызов не кэшированного сниппета
Плагин (plugin) Плагины также как и сниппеты представляют собой фрагменты кода, которые имеют доступ к MODx API. Однако в отличие от сниппетов плагины не требуется вызывать непосредственно в коде, т.к. они связаны с системными событиями, которые могут произойти на веб-странице. Т.е. код плагина выполняется только при наступлении какого-либо события на веб-страницы.

Для обращения к элементам MODX Revolution используется специальный тег, состоящий из множества частей.

[[ //открывающий тег
! //необязательный флаг, который устанавливает, что данный тег является некэшируемым 
elementToken //необязательный маркер, идентифицирующий тип элемента ($ - чанк, * - поля ресурса/tv, + - плейсхолдеры и др.). Если данный маркер не использовать, то данный элемент является сниппетом 
elementName //имя элемента
@propertyset //необязательный идентификатор, предназначенный для использования набора свойств (PropertySet)
:filterName=`modifier`:... //необязательный элемент, который предназначен для применения одного или нескольких выходных фильтров 
? //данный элемент необходимо использовать, если дальше будут следовать свойства 
&propertyName=`propertyValue` &... //необязательный элемент, предназначенный для установки свойств, которые разделяются с помощью символа & 
]] //закрывающий тег

Разработку блога начнём с создания основных шаблонов, которые мы будем использовать для вывода раздела с постами и непосредственно самих постов.

Изменим настройку начального шаблона, который уже есть в системе MODX Revolution. Данный шаблон будем использовать для вывода раздела "Блог":

  • Откройте начальный шаблон, посредством нажатия не него левой кнопкой мыши;
  • Измените его имя на "Блог", а описание на "Шаблон для раздела";
  • Создание шаблона в MODX Revolution для раздела Блог

  • Нажмите на кнопку "Сохранить".

Создайте шаблон, который будем использовать для вывода поста:

  • Нажмите на значок "Новый шаблон";
  • В открывшейся форме введите имя "Пост", а описание - "Шаблон для поста";
  • Нажмите на кнопку "Сохранить".

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

В результате выполненных действий у нас должны получиться следующие шаблоны:

Шаблоны (templates) в MODX Revolution

Наш блог будет состоять из:

  • главной страницы, имеющей название "Мой блог";
  • раздела "Блог", в котором мы будем создавать посты;
  • страницы "О себе", где мы разметим информацию об блоге и авторе;
  • страницы "Карта блога", которая будет содержать ссылки на все ресурсы нашего сайта в удобной для посетителя форме.

Для создания страниц или их редактирования необходимо перейти в левой панели на вкладку "Ресурсы" и открыть раскрывающий список "Website".

Т.к. главная страница у нас уже есть, то произведите необходимую настройку её полей:

  • В поле "Заголовок" введите текст "Мой блог";
  • В раскрывающем списке "Начальный шаблон" выберите значение "(пустой)".

    Настройка полей документа в MODX Revolution

  • После выполнения изменений в полях ресурса, выполните его сохранение.

Для создания раздела с тикетами (постами) нажмите на значок "Новый документ", в открывшейся форме выполните следующее:

  • В поле "Заголовок" введите текст "Блог";
  • Выберите из раскрывающего списка "Шаблон" значение "Блог";
  • Во вкладке "Настройки" выберите из раскрывающего списка "Тип ресурса" значение "Раздел" и нажмите на кнопку "Сохранить".
  • После сохранения документа перейдите во вкладку "Настройка раздела", а затем в ней выберите пункт "Дочерние тикеты";
  • В этом разделе в качестве шаблона дочерних документов выберите значение "Пост", а в поле "Формирование URI" измените строчку на %alias%ext;

    Настройка дочерних тикетов раздела

  • Нажмите на кнопку "Сохранить".

Страницы "О себе" и "Карта блога" создадим следующим образом:

  • Нажмите на значок "Новый документ";
  • В открывшейся панели в поле "Заголовок" введите название соответствующей страницы;
  • В качестве шаблона ресурса выберите значение "(пустой)", т.е. данный ресурс не будет использовать шаблон.
  • Во вкладке "Настройки" проверьте, что тип ресурса соответствует значению "Документ", а тип содержимого – значению "HTML".
  • Нажмите на кнопку "Сохранить".

Настройка полей ресурса О себе

Для создания постов в разделе "Блог" выполните следующее:

  • Загрузите изображения в каталог на сервере (например: assets/images/tickets/2015.02/), которые Вы будете использовать в постах;
  • Откройте ресурс "Блог" и перейдите на вкладку "Раздел";
  • Создайте пост используйте кнопку "Создать тикет";

    Создание тикета в MODX Revolution

    • В открывшейся форме введите посту заголовок и содержимое. В содержимом для обрезания поста используйте тег <cut />. Т.е. с помощью данного тега определите, какая часть статьи будет отображаться при выводе списка постов на веб-странице;

      Создание поста в MODX Revolution

  • Создайте аналогичным образом ещё 3 - 4 поста.

    Посты в MODX Revolution