Общий алгоритм создания и публикации плагинов для системы KooBoo CMS


08.06.2012 || Раздел: || Плагины KooBoo


Общая информация

Страница в системе Kooboo CMS используется для объединения шаблона и данных для отображения их в виде обычных html страниц. Как правило, это облегчает труд разработчика, т.к. не требуется написание кода в макете и представлении. Наиболее  часто используемый код — это код отрисовки шаблона.

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

  • Отобразить на странице данные, полученные от удаленного сервиса
  • Отработать данные формы для нестандартного добавления содержимого или отправки почты
  • Другие запросы

Это нормально, писать код непосредственно внутри макета или представления, но подобная практика не приветствуется при разработке MVC-шаблонов.

Лучшим решением для такого случая является разработка плагина, позволяющее скомпилировать код логики в пользовательскую сборку (dll), а затем загрузить ее в систему Kooboo CMS и использовать на странице или в представлении.

Создать плагин достаточно легко. Разработчики системы Kooboo создали специальный шаблон для Visual Studio, файл «PagePluginSample.cs» в шаблоне проекта соответствует плагину страницы. Плагин реализует интерфейс «IPagePlugin»:

    public interface IPagePlugin
    {
        string Description { get; }
 
        ActionResult Execute(Page_Context pageContext, PagePositionContext positionContext);
    }

Разработка плагина

1) Скачайте шаблон плагина (Kooboo.CMS.PluginTemplate.vsi) с сайта codeplex:

Скачивание шаблона плагина

2) Двойным щелчком по файлу Kooboo.CMS.PluginTemplate.vsi установите шаблон проекта в Visual Studio:

установка плагина kooboo

3) Создайте проект плагина, используя шаблон, расположенный по пути "Visual C# -> Web":

проект плагина kooboo

4) Удалите следующие три файла: "AssemblyInitializer.cs", "CustomContentEventSubscriber.cs", "CustomSiteEventsSubscriber.cs"

5) Переименуйте "PagePluginSample" в то имя плагина, которое Вам необходимо.

6) Напишите свой код логики внутри метода "Execute":

разработка плагина kooboo

7) После завершения написания кода, откомпилируйте  проект:

компиляция плагина kooboo

В окне Output получаем путь:

---- Build started: Project: Kooboo.CMS.PluginTemplate1, Configuration: Debug Any CPU ----
  Kooboo.CMS.PluginTemplate1 -> c:\visual studio 2010\Projects\Kooboo.CMS.PluginTemplate1\Kooboo.CMS.PluginTemplate1\bin\Debug\Kooboo.CMS.PluginTemplate1.dll

Находим Kooboo.CMS.PluginTemplate1.dll по указанному пути. Это и будет файл плагина.

Использование плагина

1) Загрузите плагин в систему Kooboo. Для этого перейдите в меню "Extension" ("Дополнения") - "Plug-ins" ("Плагины"). Нажмите кнопку "Upload" ("Загрузить") - выберите и загрузите файл скомпилированного плагина (dll-файл):

загрузка плагина в kooboo

2) Теперь Вы можете использовать плагин. Добавьте его на нужную страницу или представление (последовательность исполнения кода плагина будет одинакова).

Для вставки плагина на страницу, перейдите в редактирование нужной страницы ("Pages"/"Страницы" - "Edit"/"Редактировать") и перейдите на вкладку "Plug-ins" ("Плагины"). Из раскрывающегося списка выберите свой плагин и нажмите "Add" ("Добавить"). Пример включения плагина на страницу:

вставка плагина на страницу kooboo

Для вставки плагина в представление, перейдите в редактирование нужного представления ("Views"/"Представления" - "Edit"/"Редактировать") и раскройте блок справа "Plug-ins" ("Плагины"). Из раскрывающегося списка выберите свой плагин и нажмите "Add" ("Добавить"). Пример включения плагина в представление:

вставка плагина в представление kooboo

Последовательность выполнения блоков системы Kooboo

Все плагины, добавленные как на страницу, так и в представление, будут вызываться в контроллере. Здесь имеются в виду представления, добавленные на страницу, а не использующие команду RenderView.

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

поток отработки событий kooboo

 

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

- Если метод "Execute" возвратил не нулевой результат (NOT-Null ActionResult value), то поток снова вернется к контроллеру без выполнения дальнейшего кода. Например: плагин может возвращать результат в виде JsonResult, JavascriptResult, ContentResult,FileResult и т.д.

-  Если метод "Execute" возвратил нулевое значение , контроллер продолжает исполнение кода и отрисовку  html-страницы. В этом случае разработчики могут сохранять определенные данные в специальной переменной ViewData, которая может использоваться в макете и представлениях. Например:

pageViewContext.ControllerContext.Controller.ViewBag.PluginData = "Hello plug-in";

- По-умолчанию плагин может быть вызван в любом типе HTTP-запроса, но Вы можете фильтровать методы, чтобы ограничить определенные типы, например:

if (pageViewContext.ControllerContext.RequestContext.HttpContext.Request.HttpMethod.ToUpper() =="POST")
  { ...  }

Встроенные плагины

Система Kooboo имеет три уже встроенных плагина:

  • AddTextContentPlugin, используется для добавления содержимого на основе отправляемых значений.
  • UpdateTextContentPlugin, используется для обновления содержимого на основе отправляемых значений.
  • DeleteTextContentPlugin, используется для удаления содержимого.

© Элла С. (Автор: Ella Sea)

Основано на материалах официальной документации - http://wiki.kooboo.com/?wiki=Page_plugin_development

< Предыдущая статья

Аналог SQL запроса "WHERE IN (Value1,Value2)" в LINQ или как сделать выборку по вхождению в множество (по нескольким значениям)

Следующая статья >

Пример создания простейшего плагина Hello World для системы KooBoo