настройка мультисайта sitecore

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


person xoail    schedule 10.05.2011    source источник


Ответы (2)


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

/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#, чтобы они были специфичны для каждого сайта и имели общий проект для зашифрованного кода (например, служебный код для любого сайта, методы расширения, вспомогательные классы и т. д.). Решение 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)
person Mark Ursino    schedule 10.05.2011
comment
Спасибо, это имеет смысл. Но для дальнейшего разделения проектов я думаю о создании нового проекта для сайта B, который будет иметь dll-файлы sitecore, связанные с проектом сайта A, и поддерживать два отдельных web.configs для каждого проекта/сайта. web.config узла веб-сайта siteA будет указывать на siteA в дереве содержимого, а web.config узла B будет указывать на siteB в дереве содержимого. С помощью этой модели я надеюсь реализовать два разных проекта в одном решении, использующем один и тот же экземпляр sitecore. Я надеюсь, что у меня есть смысл и ясность в том, о чем я говорю;). - person xoail; 10.05.2011
comment
Аааа, похоже, вы хотите удалить свои особенности сайта из готового решения Sitecore. Взгляните на это: seankearney.com/post/Visual-Studio- Проекты-и-Sitecore.aspx - person Mark Ursino; 10.05.2011

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

У вас, вероятно, будет всего 2 папки в папке макетов:

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

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

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

Просто не забудьте иметь отдельные s в разделе, а также новые сайты в разделе publish:end файла 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-адрес, поскольку домены совпадают.

person Holger    schedule 10.05.2011