Orchard - блог с человеческим лицом


Orchard - популярная система управления сайтом, которая предоставляет блоговую функциональность "из коробки".

Однако не всё так просто - есть довольно много тонкостей и нюансов, без знания которых полноценно работать в предустановленном Orchard блоге не получится.

Начнём с того, что во время установки CMS Orchard настоятельно не рекомендуется выбирать рецепт (recipe) под названием "Blog" - хотя, казалось бы, для ведения блога это должно быть самое оно.

Выбор рецепта Orchard

Здесь нужно выбрать рецепт Default! Это в дальнейшей работе очень пригодится. Если вы уже выбрали рецепт "Blog" и довели установку до конца - скорее всего, будет проще переустановить Orchard с нужным рецептом, чем подключать вручную всю необходимую функциональность.

Если после установки Orchard сразу же, без предварительных настроек, создать запись блога - можно увидеть, что CMS отображает в списке блогов не очень красивый анонс: система просто отрезает от поста первые N символов. Кроме того, для записи невозможно задать метаинформацию: тэги (meta-tags), и описание (meta-description), которая помогает в продвижении.

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

Итак, что надо сделать:

  1. Войти в панель упроавления Orchard.
  2. Выбрать пункт меню Модули (Modules).
  3. Перейти на вкладку Галерея (Gallery).
  4. Ввести в поиск "Vandelay" и установить модуль Vandelay Industries. Из всех его многочисленных фич пригодится только Vandelay Meta.

После этого щёлкаем на пункт Определение контента (Content Definition) админки Orchard, выбираем в списке Blog Post и нажимаем справа на ссылку Править (Edit). Потом жмём на кнопку Добавить части (Add part) - ставим галочку напротив Meta, и щёлкаем на кнопку Cохранить (Save).

Попробуйте теперь создать новую запись блога или отредактировать существующую - увидите поля для задания метаинформации:

Задаём Meta Keywords и Meta Description для записи блога

Теперь сделаем вывод Meta-Description вместо "обрезанного" анонса. Для этого в папке Views темы (по умолчанию Themes/TheThemeMachine/Views) создадим файл Content-BlogPost.Summary.cshtml, в котором переопределим вывод summary для списка блогов:

@using Orchard.ContentManagement
@{
    var blogPost = Model.ContentItem;
}
<article class="content-item blog-post">
    <header>
      <span class="published">@Display.PublishedState(createdDateTimeUtc: blogPost.CommonPart.CreatedUtc, publisheddateTimeUtc: blogPost.CommonPart.PublishedUtc)</span>
      <h1>
        <a href="@Url.ItemDisplayUrl((IContent)blogPost)">
            @blogPost.TitlePart.Title
        </a>
      </h1>
    </header>
    <p>@blogPost.MetaPart.Description
        <a href="@Url.ItemDisplayUrl((IContent)blogPost)">
            @T("More...").ToString()
        </a>
    </p>
</article>

Для того, чтобы наше переопределение корректно отображалось и в русской локали сайта (а не только в английской), нужно создать (если его ещё нет) файл App_Data/Localization/ru-RU/orchard.theme.po, и добавить туда перевод строки "More...":

#: ~/Themes/Overlogic/Views/Content-BlogPost.Summary.cshtml
#| msgid "More..."
msgctxt "~/Themes/Overlogic/Views/Content-BlogPost.Summary.cshtml"
msgid "More..."
msgstr "Подробнее..."

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

Идём дальше.

У каждого блога есть поле для ввода описания. По умолчанию оно не поддерживает html-разметку - только обычный текст, выразительности которого может не хватать.

Чтобы это исправить:

  1. Выбираем пункт Определение контента (Content Definition) в админке.
  2. Выбираем в списке Blog (не Blog Post) и нажимаем справа на ссылку Править (Edit).
  3. Жмём на Добавить части (Add part) - ставим галочку напротив Body, и щёлкаем на кнопку Cохранить (Save).

Теперь при редактировании блога появилась возможность задать ему полноценное html-описание. Однако, вот незадача - оно отображается не вместо старого описания, а вместе с ним!

Чтобы убрать старое описание с экрана, нужно открыть файл Placement.info темы (по умолчанию Themes/TheThemeMachine/Placement.info), и добавить в него:

    <Match ContentType="Blog">
        <Match DisplayType="Detail">
            <Place Parts_Blogs_Blog_Description="-"/>
        </Match>
        <Match DisplayType="DetailAdmin">
            <Place Parts_Blogs_Blog_Description="-"/>
        </Match>
    </Match>

Всё, со старым описанием мы распрощались. Проверьте это.

Теперь займёмся форматированием даты и времени. Эти форматы в Orchard по умолчанию настроены весьма своебразно, и вам почти наверняка захочется изменить их.

Это делается так:

  1. В админке щёлкаем на Модули (Modules).
  2. Включаем (Enable) модуль Date/Time Format Localization.
  3. Создаём (или изменяем, если он уже создан) файл Modules\Orchard.Localization\App_Data\Localization\ru-RU\orchard.module.po, добавляя в него следующие строчки:

#: Orchard.Localization.Services.LocalizationDateTimeFormatProvider
msgctxt Orchard.Localization.Services.LocalizationDateTimeFormatProvider
msgid "M/d/yyyy"
msgstr "dd.MM.yyyy"

#: Orchard.Localization.Services.LocalizationDateTimeFormatProvider
msgctxt Orchard.Localization.Services.LocalizationDateTimeFormatProvider
msgid "h:mm tt"
msgstr "HH:mm"

#: Orchard.Localization.Services.LocalizationDateTimeFormatProvider
msgctxt Orchard.Localization.Services.LocalizationDateTimeFormatProvider
msgid "dddd, MMMM d, yyyy"
msgstr "d MMMM yyyy"

#: Orchard.Localization.Services.LocalizationDateTimeFormatProvider
msgctxt Orchard.Localization.Services.LocalizationDateTimeFormatProvider
msgid "h:mm:ss tt"
msgstr "HH:mm"

#: Orchard.Localization.Services.LocalizationDateTimeFormatProvider
msgctxt Orchard.Localization.Services.LocalizationDateTimeFormatProvider
msgid "use24HourTime: false"
msgstr "use24HourTime: true"

Здесь мы выставляем 24-часовой формат времени вместо 12-часового, а также убираем отображение секунд + делаем некоторые другие мелкие улучшения.

Посмотрите теперь на отображение даты и времени в своём блоге - оно явно изменилось в лучшую сторону, как в админке, так и во front-end'е. Не забудьте переключиться в русскую локаль: Настройки (Settings) -> Культура по умолчанию (Default culture) -> ru-RU.

Завершающим штрихом добавим к записям блога перелинковку - сслыки на предыдущую и на следующую запись (если такие имеются). Для этого нам придётся установить форк модуля Contrib.NextPrevious (https://bitbucket.org/ems/orchard-nextprevious-module/overview). Закачайте его к себе с помощью любого Mercurial-клиента (например, SourceTree) - а затем скопируйте каталог Contrib.NextPrevious в каталог Modules сайта.

Затем в админке выберите пукт меню Модули (Modules) и включите (Enable) модуль Contrib.NextPrevious.

После этого:

  1. Зайдите в Определение контента (Content Definition) в админке.
  2. Выберите в списке Blog Post и нажмите ссылку Править (Edit).
  3. Жмите на Добавить части (Add part) - ставьте галочку напротив Next Previous, и сохраняйте (Save).

Ну что ж, теперь - считаю, что результат получился достойный.

Как всё это работает в сборе - можно посмотреть прямо на этом сайте.

Что-то осталось непонятым? Хотите, чтобы я помог вам в настройке Orchard? Выходите на связь - мы сможем договориться :-)

24 августа 2014 02:51 — Георгий Чурочкин