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

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

http://www.mySite1.com/sitecore/shell/sitecore/content/Applications/Content Editor.aspx?id=id

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


person Corey Burnett    schedule 08.11.2011    source источник
comment
Я не уверен, что там есть эта функциональность... по крайней мере, не в более ранней версии Sitecore 6. Sitecore более или менее построен как решение для одного домена, хотя с его помощью можно решить большинство проблем. Но эта проблема обычно требует специального кода, чтобы дать вам правильный домен.   -  person Holger    schedule 09.11.2011


Ответы (3)


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

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

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

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

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

Sitecore.Context.Site 

Надеюсь это поможет :)

person Stephen Pope    schedule 10.11.2011

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

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

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

person Mark Ursino    schedule 03.04.2012

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

person Ogglas    schedule 23.09.2015
comment
У меня есть несколько доменов: один для sitecore, другой для другого стороннего приложения. Они используют один и тот же контент sitecore для навигационного баннера. При переходе к стороннему приложению мне нужно использовать Sitecore.Globals.ServerUrl, чтобы вернуться к URL-адресу «HOME», который является основным доменом sitecore. - person Ryan Huang; 02.08.2018