#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:
Я думаю, что есть несколько подходов для вас:
-
В вашей
<linkManager>
конфигурации установитеalwaysIncludeServerUrl
значениеtrue
so, чтобы у вызововGetItemUrl()
были абсолютные полные URL. -
Установите едва документированный
targetHostName
атрибут на<site ... />
узле в вашемweb.config
и убедитесь, что параметр конфигурации SitecoreRendering.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.