Pull to refresh

Архитектура Orchard CMS. Основные понятия

Reading time5 min
Views7.7K
Это вторая часть руководства “Как создать свой сайт с нуля с помощью Orchard CMS”. С первой частью руководства вы можете познакомиться здесь: начало и продолжение.

Напомню, что автоматическая загрузка Orchard доступна из галереи приложений с помощью средства быстрого доступа к веб-инструментам Web Platform Installer (нажмите на эту ссылку, чтобы начать установку).

Введение


Для того чтобы начать работать с Orchard CMS необходимо изучить базовые понятия, которые применяются в этой CMS для работы с содержимым. В этой части руководства мы познакомимся с элементами Orchard CMS, которые составляют архитектуру CMS.

Компоненты, используемые в Orchard CMS


Система управления контентом Orchard построена на базе технологий Microsoft и компонентов с открытым исходным кодом созданных сообществом.

Таблица 2.1. Архитектура Orchard CMS
image

На таблице 1 представлена иерархия компонентов архитектуры Orchard CMS:
  • в основе лежит веб-сервер IIS или облачные сервисы Windows Azure, где могут размещаться сайты, созданные с помощью Orchard. Кроме того, существует возможность запуска Orchard CMS на базе Mono в окружениях, которые поддерживаются Mono;
  • платформой Orchard CMS является платформа .NET компании Microsoft и его веб-инфраструктура ASP.NET;
  • ASP.NET MVC – это фреймворк с поддержкой архитектурного шаблона MVC работающий на базе ASP.NET, который распространяется с открытым исходным кодом под свободной лицензией MS-PL;
  • NHibernate — это проект с открытым исходным кодом, который представляет собой ORM, средство для сопоставления (мэппинга) объектов базы данных с классами в исходном коде;
  • Autofac – проект с открытым исходным кодом, который представляет собой реализацию контейнера IoC для инъекций зависимости в коде. Orchard широко использует механизм Dependency Injection;
  • Castle – большой проект с открытым исходным кодом, из которого в Orchard используется только Castle Dynamic Proxy для генерации во время исполнения прокси-классов. Прокси-классы используются для перехвата обращений к членам класса без модификации самого кода этого класса;
  • фреймворк Orchard – это вся инфраструктура CMS, которая лежит в основе работы: механизмы инициализации системы, dependency injection, маршруты ASP.NET MVC, системы типов контента, транзакции, жизненный цикл запроса, обеспечение модульности и другое;
  • ядро Orchard – это набор базовых модулей, которые являются основными и входят в состав CMS: модуль маршрутизации, навигации, синдикации контента;
  • модули Orchard – это дополнительные элементы расширяющие функционал CMS, некоторые модули входят в комплект CMS, другие созданы сообществом и доступны в галереи модулей на официальном сайте. Для создания нужного функционала вы будете создавать свои модули, расширяя таким образом CMS так как требует стоящая перед вами задача;
  • темы оформления Orchardпредназначены для изменения внешнего вида сайтов созданных на базе CMS. Некоторые темы доступны из онлайн-галереи, но в своей работе, вы, вероятно, будете создавать свои собственные темы оформления для сайтов.

Основные концепции Orchard CMS


Orchard CMS, как и всякая система управления контентом, оперирует рядом концепций. Эти концепции необходимо знать для дальнейшего изучения того, как работает и расширяется система.

Элемент контента (Content item)

Элемент контента – это небольшой кусок информации, часто ассоциированный с единственным адресом (URL). Примерами элементов контента могут служить страницы, записи блогов, товары.

Типы контента (Content types)

Элементы контента – это экземпляры типов контента. Можно сказать по-другому: типы контента – это классы элементов контента. Для записей блога тип контента будет «запись блога», для продуктов товаров – тип контента «товар» и так далее.

Часть контента (Content part)

В Orchard CMS типы контента построены из маленьких частей, которые носят название «части контента». Части контента – это мельчайшая неделимая единица, из которой состоит контент. Части контента могут быть повторно использованы для других типов контента.

clip_image002[4]
Рис. 2.1. Пример частей контента Orchard CMS

На рисунке 1 представлен пример частей контента в Orchard CMS. Для типа контента «запись блога» определены следующие части контента: маршрут (состоящий из заголовка, некоей части URL, признака контента для главной страницы), текст записи блога, теги записи блога, комментарии к записи, владелец записи блога, дата и время отложенной публикации.

Для отдельного типа контента может быть определена только одна часть контента.

Поле контента (Content Field)

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

Например, тип контента «товар» может иметь текстовое поле контента «складской номер товара», числовое поле контента «цена товара» и другое числовое поле контента «вес товара». Все эти поля контента имеют отношение только к товару.

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

image
Рис. 2.2. Схема из двух типов контента и одной части

Система Orchard предлагает возможность сформировать часть контента, которая будет содержать сразу несколько свойств. Это позволяет использовать вместо набора полей контента одну единственную часть с набором свойств. Например, вместо создания для типа контента «товар» нескольких полей «номер», «стоимость», «вес» можно создать часть контента «Свойства товара» с тремя идентичными свойствами. Такую часть можно будет применить в будущем к любому типу контента, не только к «товару».

На рисунке 2.2 представлена схема из двух типов контента «Товар» и «Материал». Каждый тип контента имеет свои собственные поля контента, которые специфичны только для него. С другой стороны в схеме представлена часть контента «Свойства предмета», которая может быть использована как с типом «Товар», так и с типом «Материал».

Таким образом, поля контента и части контента – это два дополняющих и пересекающихся друг с друга варианта формирования типов контента.

Модуль (Module)

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

clip_image002[6]
Рис. 2.3. Список установленных модулей в панели администрирования Orchard CMS

Orchard CMS предлагает несколько основных модулей входящих в ядро CMS (рисунок 2.3). Другие модули можно загрузить из онлайн-галереи доступной из панели администрирования сайта (рисунок 2.4).

clip_image004
Рис. 2.4. Список доступных модулей в панели администрирования Orchard CMS

Функция (Feature)

Каждый модуль может содержать одну или несколько функций, которые представляют определенный функционал. Отдельные функции модулей в сиcтеме Orchard CMS можно включать и выключать по требованию.

clip_image006
Рис. 2.5. Управление функциями модулей в панели администрирования Orchard CMS

Например, пользовательский модуль аутентификации включает функции по поддержке систем аутентификации OpenId, LiveId, Facebook, Twitter. Каждая из функций может быть отключена, так что разработчик сайта гибко определяет набор сервисов аутентификации доступный пользователям на сайте.

Управление функциями модулей производится через панель администрирования (рисунок 2.5).

Манифест (Manifest)

Манифест – это небольшой текстовый файл, который содержит описание модуля или темы оформления Orchard CMS. Манифесты могут содержать набор параметров для первичной настройки работы модуля.

Ниже приведен пример манифеста для модуля комментариев:

Name: Comments

AntiForgery: enabled

Author: The Orchard Team

Website: orchardproject.net

Version: 0.9.0

OrchardVersion: 0.9.0

Description: The comments system implemented by this module can be applied to arbitrary Orchard content types, such as blogs and pages. It includes comment validation and spam protection through the Akismet service.

Features:

    Orchard.Comments:

        Name: Comments

        Description: Standard content item comments.

        Dependencies: Settings

        Category: Social

продолжение следует…
Tags:
Hubs:
+31
Comments11

Articles

Change theme settings