Создание блога в MODx Revolution

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

Перед тем как мы начнём, хочу отметить, что данный урок довольно обширный и на нём я рассмотрю как установить мощный блог с системой написания записей, архивами, тегами, комментированием и многим другим. Если вам не нужна какая-то часть, то можете просто пропустить данный ненужный для вас элемент. MODX – гибкая система управления содержимым модульного типа и ваш блог может функционировать любым образом. Существуют сотни способов создания блога в MODX Revolution. Мы разберём один из них.

Установка необходимых дополнений

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

Необходимые дополнения MODX Revolution для создания блога:

  • getResources – для списка записей, страниц и других ресурсов.
  • getPage – для проставления номеров списков.
  • Quip – разнообразные функции комментирования.
  • tagLister – для управления тегами и создание теговой навигации.
  • Archivist – для управления разделом архивы.

Возможные дополнения

  • Breadcrumbs – для отображения навигационного следа «хлебные крошки».
  • Gallery – для управления фото-галлереями.
  • SimpleSearch – для добавления простого поискового окна в вашем сайте.
  • getFeed– если вы хотите разместить в вашем сайте какие-нибудь фиды, типа фида Твиттера.
  • Login – функция комментирования только для зарегистрированных пользователей.

Создание шаблона блога

Для начала нужен шаблон для нашего блога. Этот урок подразумевает, что у вас уже есть базовый шаблон для всех страниц вашего сайта. Мы будем ссылаться на такой шаблон в дальнейшем как на 'BaseTemplate'.

Давайте создадим еще один шаблон 'BlogPostTemplate'. Содержимое будет выглядеть так:

Давайте исследуем данный шаблон. Запомните, вы можете менять любой из элементов, изменять параметры и их размещение. Это всего лишь базовая структура – если вы, например, хотите, чтобы внизу были теги – просто передвинте их туда.  MODX не ограничивает вас в этом.

Шапка и Подвал блога

Во-первых, обратите внимание на два чанка: "pageHeader" и "pageFooter". Этм  чанки содержат мои общие HTML теги, которые я положил в подвал и шапку моего сайта, поэтому я могу их использовать во моём сайте в различных шаблонах.  То есть, если вам нужно изменить содержимое шапки или подвала, то вы можете поменять содержимое только одного чанка и автоматически пройдут изменения во всех шаблонах. После этого я дам название Ресурсу и сделаю ссылку на эту же страницу.

Информация поста

Далее отредактируем "info" нашего поста – в основном это автор и теги поста. В деталях это выглядит так:

Первая часть берёт поле Ресурса publishedon, форматирует и приводит его в нормальный вид.

Второй частью мы далее отображаем список тегов для этой записи блога. Обратите внимание как мы ссылаемся на переменную шаблона "tags" – мы её еще не создали, но не волнуйтесь – потом мы вставим её как реквизит сниппета 'tolinks'. Сниппет tolinks идёт вместе с дополнением tagLister и переводит отдельные теги в ссылки. Это значит, что наши теги стают кликабельными! Мы определили Ресурс 1 как 'target' или наша домашняя страница. Если ваш блог находится на другой странице, то поменяйте для него ID.

Наконец, мы загрузили быстрый счёт количества комментариев вместе с кликабельными якорь-ссылками для их загрузки. Обратите внимание как наш реквизит 'thread' в вызове сниппета QuipCount (и позднее в вызове Quip) использует 'blog-post-[[*id]]'. Это значит, что MODX автоматически создаст новый поток для каждого созданного поста. Крууууто!

Содержимое поста

Отлично, давайте вернёмся к нашему шаблону. Мы находимся в секции контента, обратите внимание, что мы начинаем с [[*introtext]]. Это полезное поле MODX ресурса – думайте об этом как начало отрывка поста блога, который показывается на нашей главной странице, где содержится список последних записей поста.

Добавление комментариев к постам

Отлично, теперь мы дошли до части комментирования нашего шаблона BlogPostTemplate. Как видно, мы используем дополнение  Quip для системы комментирования. Вы можете использовать другую систему, такую как Disqus. В этом уроке мы будем использовать Quip. Наш код будет выглядеть следующим образом:

Отлично. Обратите внимание: у нас вызовы двух сниппетов – один для отображения комментариев для этого потока (Quip) и другой для отображения формы ответа (QuipReply).

В нашем вызове сниппета Quip, мы определили ID потока вышеописанным способом и далее установили некоторые настройки. Наши комментарии будут отображаться потоком (по-умолчанию), поэтому нам нужно определить ID Ресурса, где будет наш ответ (это детально описано в Quip Документации. Я рекомендую почитать эту документацию, чтобы понять как это всё установить.)  с реквизитом 'replyResourceId'.

Далее, что нужно определить в обоих Quip и Quip Reply вызовах - реквизит 'closeAfter'.  Это говорит Quip автоматичестки закрыть коментирование на тех потоках, на которых прошло 30 дней со времени создания потока (когда мы загружали его).

В нашем вызове QuipReply, мы хотим сообщаем Quip, что модерировать все посты и модераторы наших постов заданы в группе Moderators User Group.

Есть еще много других Quip настроек, которые мы можем поменять, но оставим это на будущее, кому интерестно, то можете найти описание этих настроек в Quip docs.

Установка Тегов

Итак, мы установили и настроили шаблон, теперь нужно установить переменную шаблона 'tags', которую мы будем использовать для нашей системы тегов.

Давайте созданим переменную шаблона 'tags' и дадим ей описание как "Теги текущего Ресурса через запятую". Убедимся, что она имеет доступ к шаблону 'BlogPostTemplate', созданному нами ранее.

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

Ну вот! Теперь мы можем добавлять теги к любому посту, который мы создали, просто редактируя свой Ресурс и добавляя туда теги через запятую.

Создание разделов

Если вы хотите, чтобы блог содержал 'Секции' (Категории), то вам необходимо вначале создать эти Ресурсы - ресурсы-контейнеры, которые будут содержать посты данных категорий.

В этом уроке мы создадим два раздела: "Personal" и "Technology". Давайте создадим 2 Ресурса в корне вашего сайта и определим их как контейнеры - 'containers'. Определим их псевдонимы (алиасы) как 'personal' и 'technology', таким образом записи блога будут иметь разумное отображение.

Здесь мы оговорим, что наши разделы имеют ID 34 и 35.

Убедитесь в том, что вы не используете шаблон BlogPostTemplate, а вместо этого используете ваш шаблон Base Template. Эти страницы будут иметь в конечном итоге путь, который позволит просмотреть все сообщения в определенном разделе. В содержимом этих ресурсов поместите следующее:

Давайте теперь объясню это. Сниппет getResourcesTag – это сниппет-обёртка для getResources и getPage, который автоматически фильтрует результаты переменной шаблона 'tags'. В основном, нам нужно взять все опубликованные ресурсы в середине этого раздела (также мы можем отфильтровать по тегу, то есть можем вставить параметр '?tag=TagName' в URL).

Ниже выхова getResourcesTag, мы вставляем наши ссылки на пагинацию (проставление страниц), так как по умолчанию getResourcesTag показывает только 10 постов на страницу.

Для отображения нумерации с русскими словами для первой (Первая) и последней (Последняя) страниц добавляем два параметра с шаблонами в вызов getResourcesTag

Таким образом наш вызов будет выглядеть так:

Настройка чанка blogPost

В этом вызове у нас также есть реквизит с именем 'tpl', который мы установили в 'blogPost'. Это наш чанк, который показывает каждый результат для списков постов нашего блога. Он должен содержать следующий код:

Обратите внимание tolinks использует параметр &keyTag=`tag`, а не &key как указано в документации

Отлично! Мы начали с кликабельной ссылки к посту и оглавлением ресурса pagetitle как названием. Далее мы установили часть  'posted by' и список тегов (похожие действия мы делали в нашем шаблоне BlogPostTemplate).

Далее, мы покажем отрывок из контента, который мы храним в поле 'introtext' контента.

После этого мы сделаем ссылку 'read more' которая ссылается на пост и далее наши комментарии и дата публикации. Вот и всё!

 Вывод поста в MODX Revolution

Установка и настройка домашней страницы вашего блога

На домашней странице нашего блога, которая у нас содержится в Ресурсе ID 1 – начало нашего сайта – у нас идёт это:

Это позволяет нам показывать все посты из двух разделов, которые мы сделали, в ресурсах 34 и 35. Это также позволяет нам фильтровать по тегам (так как наши вызовы 'tolinks' и 'tagLister' имеют target равную 1 (это ID ресурса). Другими словами, разместив здесь вызов getResourcesTag у нас автоматически появятся теги.

Вы можете легко сделать это с другой страницы с которой ваш сайт начинается (или ID 1) – просто убедидесь в том, что изменили параметр 'target' в ваших вызовах сниппетов  tagLister и tolinks.

Добавление постов

Отлично, теперь всё настроено и мы готовы добавлять посты.

Структура страницы в середине разделов

Перед тем как начнём, важно отметить, что структура ваших постов в середине раздела зависит целиком от вас. Можете добавить контейнер года и месяца Resources, чтобы размещать там посты или просто постить в середине раздела. Всё зависит от вас.

Если вы хотите сделать субконтейнеры даты/года, убедитесь, что у них проставлены чекбоксы «Скрыть от меню», таким образом они не появятся при вызовах getResources.

Помните о том, что не важно какую структуру вы делаете под разделами, это не повлияет на вашу навигацию - Archivist позаботится обо всём. Он определит какими буду URL ваших постов.

Добавление нового поста

Давайте создадим новый ресурс и определим для него шаблон 'BlogPostTemplate'. Теперь вы можете начать писать ваш пост. Вы можете определить в поле 'introtext' выдержку из вашего поста и далее написать полное содержание вашего поста в поле содержимого.

Наконец, когда вы всё сделаете, убедитесь в том, что вы определили теги вашего поста в только что сделанных переменных шаблона 'tags'!

Установка и настройка Архивов

Отлично – теперь у нас есть первая запись в блоге! И вы можете добратся к ней через разделы. Теперь, наверное, вы захотите иметь возможность просматривать старые записи вашего блога. Для этого нам понадобится 'Archvist'.

Создание ресурса Архивы

Давайте разместим ресурс в корне и назовём его 'Archives' и дадим ему псевдоним (алиас) - 'archives'. В середине контента вставьте этот код:

Выглядит знакомо? Всё это очень схоже с тегом getResourcesTag, описанном выше на странице разделов. Сейчас getPage обёрнут в сниппет getArchives  и сообщает о том, что мы хотим взять записи в Ресурсах 34 и 35 (наша страницы Разделов). Мы установим результат в заполнитель с именем 'archives', на который сошлёмся позже.

Затем, ниже после этого, мы добавим несколько заполнителей, которые показывают текущие месяц и год. И в самом конце мы установим пагинацию. Отлично! Мы это всё сделали. Наш Ресурс Resource, для создания ссылок на него, имеет ID = 30.

Установка виджета Archivist

Отлично, теперь мы имеем Ресурс, чтобы иметь доступ к старым записям, но вам еще нужно сгенерировать месяца для записей. Это на самом деле очень просто: где-нибудь на вашем сайте (скажем в подвале) вставьте этот кусок кода:

Таким образом сниппет Archivist генерирует помесячный список ваших записей (вы можете добавить любые другие функции, с этой целью загляните в документацию). Мы говорим о том, что хотим, чтобы эти ссылки вели к нашему Ресурсу Archives (30) и брали только записи в Ресурсах 34 и 35 (ресурсы разделов).

Вот и всё! Archivist автоматически сделает всю работу, включая URL генерацию для архивов - archives/2010/05/ сгенерируются для всех записей мая 2010 года, и archives/2009/ сгенерируются для всех записей 2009 года. Отлично, не правда ли?

Установка дополнительных функций

Добавление группы модераторов

Ранее в нашем вызове QuipReply, мы определили нашу групу moderatorGroup 'Модераторы'. Давайте продвинемся дальше и создадим группу пользователей.

Нажмите Security -> Access Controls и создайте новую группу пользователей и назвите её 'Moderators'. Добавьте любого пользователя в группу (включая себя!) и дайте ему любую должность (роль).

Далее, проследуйте на вкладку Context Access (Доступ к содержимому).  Добавьте ACL (ряд доступа к содержимому) который даёт этой группе пользователей доступ к 'mgr' содержимому в с минимальной ролью Члена -  Member (9999) и политикой доступа 'QuipModeratorPolicy'.

Это позволит любому члену группы пользователей 'Moderators' модерировать записи в ваших потоках и также сообщать им через имейл о новых записях в блоге. Они могут войти в менеджер сайта для модерированния комментариев или щёлкнуть прямо на ссылке в имейле для утверждения или изъятия комментария. Ваш ACL должен выглядеть приблизительно так:

Сохраните вашу пользовательскую групу и всё! Вам может понадобится  обновить сессию (Security -> Flush Sessions) и перелогинится, чтобы обновить ваши права, об остальном позаботится Quip.

Добавление виджета "Последние записи"

Еще можно установить виджет "Последние записи" где-нибудь на вашем сайте и не бойтесь – это очень просто.

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

Мы даём команду getResources выдать нам список из последних 5 записей ресурса в наших разделах ресурсов (34,35) и отсортировать их по дате публикации.

Далее, создайте чанк `latestPostsTpl`, который вы определили вызовом 'tpl' в вызове сниппета getResources. Вставьте следующий код в этот чанк:

Бум! Последние записи отображаются у вас на сайте:

 Последние записи блога

Добавление виджета "Последние комментарии"

Для отображения последних комментариев в дополнениях Quip есть отличный небольшой сниппет, называемый QuipLatestComments, который очень просто использовать.

Разместите вызов списка комментариев, где вам нужно:

Теперь создайте чанк с названием 'latestCommentTpl':

Перед тем, как мы продолжим, необходимо отметить, что QuipLatestComments автоматически обрежет комментарии (по умолчанию до 30 символов) и добавит эллипсис после реквизита &bodyLimit. Во вторых, обратите внимание, что здесь мы использовали 'ago' Output Filter. Этот фильтр встроен в MODX Revolution и переводит время к записи вида 'two hours, 34 minutes' (или другие метрические системы: мин/сек, год/месяц, месяц/неделя).

Обратите внимание, что по умолчанию он показывает последние 5 комментариев. Результат работы сниппета:

 Последние комментарии блога

Вы можете обратиться к  документации сниппета для более точного конфигурирования.

Добавление виджета "Часто используемые теги"

Эта часть просто до очумения проста; за вас всё сделает tagLister. Просто поместите его, где вам удобно:

tagLister проверит переменные шаблона 'tags' и создаст ссылки на цель (в нашем случае, Ресурс с ID 1) с 10 наиболее часто используемыми тегами. Есть еще куча настроек конфигурации, но мы оставим всё как есть.

Заключение

Итак мы установили и настроили наш блог. Он будет иметь приблизительно следующий вид в дереве ресурсов:

 Дерево ресурсов блога

Снова подчёркиваю то, что можно добавить еще очень много функций к нашему блогу. Этот урок является просто точкой старта, чувствуйте себя свободно в настраивании вашего блога, добавляйте нужную функциональность. Большим плюсом MODX является то, что можно настраивать как угодно, расширять функциональность любого вашего решения: включая блог! 

Оригинал статьи Creating a Blog in MODX Revolution