我在Sitecore中创建了三个站点(在同一个实例中)。现在我必须提供当前站点上其他两个站点的跨站点链接。如何通过代码完成。 (不使用硬编码路径)
答案 0 :(得分:0)
您需要在网站定义中定义两个网站,您将拥有以下内容:
<site name="website_1" hostName="www.site1.com" language="en" cacheHtml="false" virtualFolder="/" physicalFolder="/" rootPath="/sitecore/content/site1" startItem="/home" database="web" domain="extranet" allowDebug="true" htmlCacheSize="10MB" registryCacheSize="0" viewStateCacheSize="0" xslCacheSize="5MB" filteredItemsCacheSize="2MB" enablePreview="true" enableWebEdit="true" enableDebugger="true" disableClientData="false" />
<site name="website_2" hostName="www.site2.com" language="en" cacheHtml="false" virtualFolder="/" physicalFolder="/" rootPath="/sitecore/content/site2" startItem="/home" database="web" domain="extranet" allowDebug="true" htmlCacheSize="10MB" registryCacheSize="0" viewStateCacheSize="0" xslCacheSize="5MB" filteredItemsCacheSize="2MB" enablePreview="true" enableWebEdit="true" enableDebugger="true" disableClientData="false" />
现在访问www.site1.com时,您将获得主页/ sitecore / content / site1 / home,www.site2.com将返回主页/sitecore/content/site2/home.
想象一下,您在/ site1 / home / subitem到/ site2 / home / subitem的页面上创建了一个链接。在Sitecore内部,它存储为GUID。但渲染时,LinkManager确保链接呈现为www.site2.com/subitem.aspx。
这样做是因为在web.config中,默认情况下启用了SiteResolving:
1 当SiteResolving为true时,LinkManager将从web.config中的部分解析正确的站点。它进行最佳匹配并找到该页面所属的站点,并根据其找到的站点的上下文解析主机名和URL。
如果禁用SiteResoving,则LinkManager将保留在当前上下文中。该链接将是www.site1.com/sitecore/content/site2/home/subitem.aspx。
您可以在以下链接中找到更多信息:
https://briancaos.wordpress.com/2012/03/28/sitecore-links-in-multisite-solutions-siteresolving/ https://www.sitecore.net/de-de/learn/blogs/technical-blogs/john-west-sitecore-blog/posts/2013/10/sitecore-multisite-part-4-cross-site-links.aspx http://www.nonlinearcreations.com/Digital/how-we-think/articles/2014/11/Sitecore-host-name-attribute-in-multi-sites.aspx
答案 1 :(得分:0)
站点解析需要打开,如果每个站点有一个域,它通常会起作用。有时,它还可能取决于内容树的外观以及web.config中网站定义的顺序。
此处解释了更多信息和更糟糕的案例嵌套方案: http://blog.paulgeorge.co.uk/2011/05/01/sitecore-linkmanager-inside-out-muti-site-and-sub-site-setups/