我在sitecore多站点解决方案上映射SitecoreInfoType.Url时遇到问题。
我在sitecore 2网站上有:
网站A包含一些文章:
在我们的主要“文章登录页面”上,我们有一个小部件,显示每篇文章的简短描述以及指向文章页面的链接。
使用url,我们使用SitecoreInfoType.Url
进行映射e.g。
[SitecoreInfo(SitecoreInfoType.Url)]
public virtual string Url { get; set; }
这是在网站A上使用时正确呈现的,我们获得了动态网址,例如/ en / Articles / {文章名称}。
如果我们尝试在站点B上使用小部件,则不会按预期生成URL:
我们已经在Link类型的Sitecore字段上实现了,我们正在使用UrlOptions来解决这种行为。
e.g。
[SitecoreField(UrlOptions = SitecoreInfoUrlOptions.SiteResolving)]
public virtual Link AlternateLink { get; set; }
这将产生预期的结果。如果我们尝试为其他网站下的目标项生成链接,则域将用于生成网址。
不幸的是,glass mapper没有以相同的方式映射SitecoreField和SitecoreInfoType.Url。
代码更新:
[SitecoreInfo(SitecoreInfoType.Url, UrlOptions = SitecoreInfoUrlOptions.SiteResolving)]
public virtual string Url { get; set; }
在类似的背景下:
注意:
SitecoreInfoUrlOptions.AddAspxExtension
SitecoreInfoUrlOptions.AlwaysIncludeServerUrl
SitecoreInfoUrlOptions.LanguageEmbeddingNever
如果使用SitecoreInfoUrlOptions.AlwaysIncludeServerUrl,结果很奇怪:www.Site B / en / sitecore / content / Site A / Home / Articles / {Target item}
对我而言,这似乎是玻璃映射器库中的一个错误。
是否有人遇到此问题以及修复或解决方法? 我宁愿不使用Sitecore API并尝试获取该项目并再次使用LinkManager,因为这已经在glass mapper实现中使用。
这是我的网站定义配置:
<sites>
<site name="siteA"
patch:before="site[@name='website']"
hostName="siteA.domain.com"
targetHostName="siteA.domain.com"
virtualFolder="/"
physicalFolder="/"
rootPath="/sitecore/content/domain/siteA"
startItem="/Home"
database="web"
domain="extranet"
allowDebug="true"
cacheHtml="true"
htmlCacheSize="50MB"
enablePreview="true"
enableWebEdit="true"
enableDebugger="true"
disableClientData="false"
scheme="http"
/>
<site name="siteB"
patch:before="site[@name='website']"
hostName="siteB.domain.com"
targetHostName="siteB.domain.com"
virtualFolder="/"
physicalFolder="/"
rootPath="/sitecore/content/domain/siteB"
startItem="/Home"
database="web"
domain="extranet"
allowDebug="true"
cacheHtml="true"
htmlCacheSize="50MB"
enablePreview="true"
enableWebEdit="true"
enableDebugger="true"
disableClientData="false"
scheme="http"
/>
</sites>