Как получить доменное имя для элемента Sitecore

#sitecore #sitecore6

#sitecore #sitecore6

Вопрос:

У меня установлена система Sitecore с несколькими сайтами. Я пытаюсь создать отправляемое электронное письмо, содержащее ссылки на редактор Sitecore для каждого элемента. У меня все работает, кроме правильного доменного имени. Учитывая идентификатор элемента, как я могу использовать API для получения домена для этого элемента? Например, я хочу создать URL-адрес, подобный следующему:

http://www.mySite1.com/sitecore/shell/sitecore/content/Applications/Content Editor.aspx?id=идентификатор

Единственная часть, в которой я не уверен, — это как программно получить «www.mySite1.com «часть. Есть идеи? Я никогда не могу найти ничего подобного в Sitecore API, хотя я уверен, что это где-то есть.

Комментарии:

1. Я не уверен, что такая функциональность присутствует там … по крайней мере, не в более ранней версии Sitecore 6. Sitecore более или менее построен как решение для одного домена, хотя с его помощью вы можете преодолеть большинство проблем. Но эта проблема обычно требует некоторого пользовательского кода, чтобы предоставить вам правильный домен.

Ответ №1:

Я предполагаю, что у вас настроено несколько сайтов в <sites> разделе вашего файла web.config и что у каждого из них определено hostName свойство, например

 <site name="website1" hostName="website1.com" ...
<site name="website2" hostName="website2.com" ...
  

Вы можете использовать класс SiteManager для доступа к информации о каждом сайте, включая имя хоста

 Sitecore.Sites.SiteManager.GetSite("website1").Properties["hostName"]
  

.. если вы работаете на странице Sitecore, вы можете получить доступ к текущему запущенному Site объекту с помощью

 Sitecore.Context.Site 
  

Надеюсь, это поможет 🙂

Ответ №2:

Я думаю, что есть несколько подходов для вас:

  1. В вашей <linkManager> конфигурации установите alwaysIncludeServerUrl значение true so, чтобы у вызовов GetItemUrl() были абсолютные полные URL.

  2. Установите едва документированный targetHostName атрибут на <site ... /> узле в вашем web.config и убедитесь, что параметр конфигурации Sitecore Rendering.SiteResolving установлен на true . Затем это должно разрешить правильное целевое имя хоста, заданное сайтом в контексте.

Ответ №3:

Я не уверен, что это сработает в среде с несколькими сайтами, но вы могли бы вызвать Sitecore.Globals.ServerUrl . Если это не сработает, вы можете получить имя хоста, вызвав Sitecore.Context.Site.HostName , Sitecore.Context.Site.TargetHostName или Sitecore.Context.Site.Properties["hostName"] если вы получаете к нему доступ через страницу, как упоминалось ранее.

Комментарии:

1. У меня есть несколько доменов, один для sitecore, другой для другого стороннего приложения. Они используют один и тот же контент sitecore для навигационного баннера. При переходе к стороннему приложению мне нужно использовать Sitecore.Globals.ServerUrl , чтобы вернуться к «ДОМАШНЕМУ» URL, который является основным доменом sitecore.