Создание нескольких модулей в одной области (area) для KooBoo CMS


27.03.2012 || Раздел: || Модули KooBoo


Чтобы создать еще один модуль внутри одной области (area), можно воспользоваться простым копированием директории примерного модуля (SampleModule) в папке Areas:

kooboo copy module

Но если Вы попытаетесь откомпилировать проект (Build), то получите следующие ошибки:

  • The namespace 'MyModule1.Controllers' already contains a definition for 'AdminController'
  • The namespace 'MyModule1' already contains a definition for 'AdminControllerBase'
  • The namespace 'MyModule1.Controllers' already contains a definition for 'ArticleController'
  • The namespace 'MyModule1.Repositories' already contains a definition for 'IRepository'
  • The namespace 'MyModule1' already contains a definition for 'SampleAreaRegistration'
  • The namespace 'MyModule1.Models' already contains a definition for 'ModuleInfo_Metadata'
  • The namespace 'MyModule1.Models' already contains a definition for 'ThemesDatasource'
  • The namespace 'MyModule1.Models' already contains a definition for 'ModuleSettings_Metadata'
  • The namespace 'MyModule1.Models' already contains a definition for 'TitleColumnRender'
  • The namespace 'MyModule1.Models' already contains a definition for 'News'
  • The namespace 'MyModule1.Controllers' already contains a definition for 'NewsAdminController'
  • The namespace 'MyModule1.Controllers' already contains a definition for 'NewsController'
  • The namespace 'MyModule1.Repositories' already contains a definition for 'NewsRepository'

Это означает, что в Вашем проекте произошел конфликт имен.

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

Пример, где используются модули с различными namespaces, Вы можете скачать здесь (альтернативная ссылка).

Инструкция по установке данного примера:

1. Создайте новый проект модуля на основе шаблона "Kooboo.CMS.ModuleArea.vsi" (который можно скачать здесь).

2. Создайте папку "NewModule" внутри поддиректории проекта "Areas".

3. Извлеките все файлы из архива в папку, созданную на предыдущем шаге.

4. Включите все извлеченные файлы в проект, созданный на первом шаге.

Solution Exporer в Visual Studio 2010 будет выглядеть примерно так:

New Module Solution Kooboo

Запуск примера:

1. Запустите проект (меню "Debug/Start") без использования отладки (debugging) или нажмите Ctrl-F5. Если возникнет исключение "Storage scopes cannot be created when _AppStart is executing" просто обновите страницу. В результате будет запущен экземпляр сайта KooBoo.

2. Перейдите на административную страницу и осуществите вход (log in).

3. Щелкните "SampleSite" для перехода в административную консоль.

4. В блоке меню "Site Manager" должен появиться пункт "NewModule":

New Module Admin kooboo

Также при переходе на страницу модулей по ссылке "Modules" Вы увидите элемент "NewModule":

New Module Admin Modules Kooboo

Некоторые рекомендации:

1. Хорошей практикой является использование такой же структуры пространства имен (namespaces) как и структура директорий в сочетании с именем проекта. Например, в проекте под названием "MyProject" для файла "/Site/Controllers/AdminController.cs" желательно использовать следующее пространство имен: MyProject.Site.Controllers. Это упростит поиск файла, если Вы знаете соответствующий ему namespace.

2. Новый модуль с другим именем может быть создан из файлов архива примера путем поиска и замены пространства имен в контенте всех файлов.

© PetrAlexeev, Элла С. (соавтор: Ella Sea)

Основано на материалах официального форума KooBoo CMS

См. также:

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

Правим ошибку EventID 8193: Volume Shadow Copy Service error: Unexpected error calling routine, Access is denied, после установки роли DHCP Server

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

Плагины KooBoo. Плагин ReCaptcha Validator. Часть 2. Использование в форме вставки контента