如何获取Sitecore项目的域名

时间:2011-11-08 16:33:29

标签: sitecore sitecore6

我有一个多站点Sitecore安装。我正在尝试创建一个发送的电子邮件,其中包含每个项目的Sitecore编辑器链接。除了正确的域名,我都能正常工作。给定一个项目ID,我将如何使用API​​获取该项目的域名?例如 - 我想生成如下的URL:

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

我唯一不确定的部分是如何以编程方式检索“www.mySite1.com”部分。有任何想法吗?我在Sitecore API中找不到这样的东西,虽然我确信它在某处。

3 个答案:

答案 0 :(得分:6)

我假设您在web.config文件的<sites>部分中设置了多个网站,并且每个网站都定义了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 

希望这会有所帮助:)

答案 1 :(得分:4)

我认为你有几种方法:

  1. <linkManager>配置中,将alwaysIncludeServerUrl设置为true,以便GetItemUrl()的来电拥有绝对完整的网址。

  2. targetHostName的{​​{1}}节点上设置几乎没有记录的<site ... />属性,并确保Sitecore配置设置web.config设置为Rendering.SiteResolving 。然后,应该根据上下文中的站点解析正确的目标主机名。

答案 2 :(得分:1)

我不确定这会在多站点环境中有效,但您可以致电Sitecore.Globals.ServerUrl。如果这不起作用,您可以通过调用Sitecore.Context.Site.HostNameSitecore.Context.Site.TargetHostNameSitecore.Context.Site.Properties["hostName"]来获取主机名,如果您通过前面提到的页面访问它。