2011-11-08 79 views
4

我有一個多站點Sitecore安裝。我正在嘗試創建一封電子郵件,其中包含指向每個項目的Sitecore編輯器的鏈接。除了正確的域名以外,我已經開始工作了。給定一個項目ID,我將如何使用API​​來獲取該項目的域名?例如 - 我想產生像下面這樣的URL:如何獲取Sitecore項目的域名

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

我不知道的是如何以編程方式檢索「只有一部分www.mySite1.com? 「部分。有任何想法嗎?我絕對不會在Sitecore API中找到這樣的內容,儘管我確信它在某處。

+0

我不確定那個功能是否存在......至少在早期版本的Sitecore中是不存在的。Sitecore或多或少構建成單個域的解決方案,儘管您可以克服大部分問題它。但是這個問題通常需要一些自定義代碼才能給你正確的域名。 – Holger

回答

5

我假設您在web.config文件的<sites>部分中設置了多個網站,並且每個網站都有一個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 

希望這有助於:)

3

我認爲日ERE幾個方法給你:

  1. 在你<linkManager>配置,設置alwaysIncludeServerUrltrue所以調用GetItemUrl()有絕對完整的URL。

  2. 設置<site ... />節點上的勉強記錄targetHostName屬性,在web.config,確保Sitecore的配置設置Rendering.SiteResolving設置爲true。然後,這應該解析上下文中給定站點的正確目標主機名。

0

我不確定這可以在多站點環境中使用,但您可以撥打Sitecore.Globals.ServerUrl。如果這不行,您可以通過調用Sitecore.Context.Site.HostName,Sitecore.Context.Site.TargetHostNameSitecore.Context.Site.Properties["hostName"]來獲取主機名,前提是您通過頁面訪問它。