многосайтовая настройка sitecore - PullRequest
3 голосов
/ 10 мая 2011

Я успешно создал сайт A в sitecore и развернул его в рабочей среде, теперь я хочу добавить другой сайт B в тот же экземпляр sitecore.Я знаю, как это сделать, но я не уверен, как разделить код двух сайтов (макеты, элементы управления и т. Д.), Чтобы один из них не зависел от другого.Вместо того, чтобы объединить оба сайта на одном сайте. Проект в визуальной студии, мне было интересно, могу ли я создать новый проект для сайта B, но все же повторно использовать файлы sitecore, которые находятся в проекте сайта A?То, что я пытаюсь понять, на самом деле - это лучшие практики в разработке многосайтовых решений в sitecore.Есть идеи?Примечание: сайт A и сайт B совершенно разные во всех аспектах, за исключением того факта, что они должны работать на одном экземпляре sitecore.

Ответы [ 2 ]

3 голосов
/ 10 мая 2011

Я рекомендую разделить ресурсы каждого сайта на папки в файловой системе:

/Website/
/Website/sites/
/Website/sites/SiteA  (<-- specific to SiteA)
/Website/sites/SiteB  (<-- specific to SiteA)
/Website/sites/Common (<-- shared across any sites)

В Sitecore сделайте то же самое для компонентов презентации.

- layouts
  - SiteA
  - SiteB
  - Common
  - Sublayouts
    - SiteA
    - SiteB
    - Common

И то же самое дляшаблоны:

Templates
  User Defined
    SiteA
    SiteB
    Common

Выделите также библиотеки классов C #, чтобы они были специфичны для каждого сайта и имели общий проект для hared-кода (например, служебный код для любого сайта, методы расширения, вспомогательные классы и т. д.).Решение Visual Studio:

- WebApp
- SiteALib  (<- SiteA specific code)
- SiteBLib  (<- SiteB specific code)
- CommonLib (<- reusable code for any site)

Что касается сайтов в дереве контента, их тоже нужно разделить на одном уровне:

sitecore
  content
    SiteA  (<-- root item for SiteA)
      home (<-- start item for SiteA)
    SiteB  (<-- root item for SiteB)
      home (<-- start item for SiteB)
0 голосов
/ 10 мая 2011

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

Возможно, у вас просто есть 2 папки в папке раскладок:

макеты / SiteA макеты / SiteB

они будут содержать файлы aspx и ascx для каждого сайта. Тогда вы будете использовать те же файлы Sitecore. При необходимости вы также сможете обмениваться библиотеками DLL или другими проектами в решении (если у вас есть универсальный DLL-файл Util или некоторые общие элементы WebControl, которые вы используете во всех своих решениях).

Возможно, это не лучший способ отделить их, но это просто.

Только не забудьте иметь отдельные разделы в разделе, а также новые сайты в разделе публикации: конец web.config.

И помните, что вы сможете получить доступ к контенту с одного сайта на другой (например, www.sitea.com/sitecore/content/Siteb.aspx), если у вас нет кода, который это обрабатывает.

Другим общим советом является использование внешних URL-адресов для связи между сайтами, а во избежание того, чтобы Sitecore изменил их на внутренние URL-адреса, настройте сайт редактирования в другом домене (например, edit.mysites.com). Потому что, если вы редактируете на www.sitea.com/sitecore и вставляете внешний URL-адрес на www.sitea.com, Sitecore «поможет вам» и преобразует его во внутренний URL-адрес при совпадении доменов.

...