我有一个多站点Sitecore安装。我正在尝试创建一个发送的电子邮件,其中包含每个项目的Sitecore编辑器链接。除了正确的域名,我都能正常工作。给定一个项目ID,我将如何使用API获取该项目的域名?例如 - 我想生成如下的URL:
http://www.mySite1.com/sitecore/shell/sitecore/content/Applications/Content Editor.aspx?id = id
我唯一不确定的部分是如何以编程方式检索“www.mySite1.com”部分。有任何想法吗?我在Sitecore API中找不到这样的东西,虽然我确信它在某处。
答案 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)
我认为你有几种方法:
在<linkManager>
配置中,将alwaysIncludeServerUrl
设置为true
,以便GetItemUrl()
的来电拥有绝对完整的网址。
在targetHostName
的{{1}}节点上设置几乎没有记录的<site ... />
属性,并确保Sitecore配置设置web.config
设置为Rendering.SiteResolving
。然后,应该根据上下文中的站点解析正确的目标主机名。
答案 2 :(得分:1)
我不确定这会在多站点环境中有效,但您可以致电Sitecore.Globals.ServerUrl
。如果这不起作用,您可以通过调用Sitecore.Context.Site.HostName
,Sitecore.Context.Site.TargetHostName
或Sitecore.Context.Site.Properties["hostName"]
来获取主机名,如果您通过前面提到的页面访问它。