Glass Mapper SitecoreInfo.Url在多站点

时间:2017-01-17 09:12:34

标签: sitecore sitecore8 sitecore-mvc glass-mapper

我在sitecore多站点解决方案上映射SitecoreInfoType.Url时遇到问题。

我在sitecore 2网站上有:

  • 网站A
  • 网站B

网站A包含一些文章:

  • www.Site-A / Articles / Article 1
  • www.Site-A / Articles / Article 2

在我们的主要“文章登录页面”上,我们有一个小部件,显示每篇文章的简短描述以及指向文章页面的链接。

使用url,我们使用SitecoreInfoType.Url

进行映射

e.g。

    [SitecoreInfo(SitecoreInfoType.Url)]
    public virtual string Url { get; set; }

这是在网站A上使用时正确呈现的,我们获得了动态网址,例如/ en / Articles / {文章名称}。

如果我们尝试在站点B上使用小部件,则不会按预期生成URL:

  • / en / sitecore / content / Site A / Home / Articles / {Article Name}

我们已经在Link类型的Sitecore字段上实现了,我们正在使用UrlOptions来解决这种行为。

e.g。

    [SitecoreField(UrlOptions = SitecoreInfoUrlOptions.SiteResolving)]
    public virtual Link AlternateLink { get; set; }

这将产生预期的结果。如果我们尝试为其他网站下的目标项生成链接,则域将用于生成网址。

  • 目标项目位于A站点。
  • Widget用于站点B,上下文设置为站点B
  • 链接网址生成如下:www.Site-A / Articles / {Target item}

不幸的是,glass mapper没有以相同的方式映射SitecoreField和SitecoreInfoType.Url。

代码更新:

    [SitecoreInfo(SitecoreInfoType.Url, UrlOptions = SitecoreInfoUrlOptions.SiteResolving)]
    public virtual string Url { get; set; }

在类似的背景下:

  • 目标项目位于A站点。
  • Widget用于站点B,上下文设置为站点B
  • 生成链接网址,如:/ en / sitecore / content / Site A / Home / Articles / {Target item}

注意:

  • SitecoreInfoType.Url上使用的其他UrlOptions正在运行:

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>

0 个答案:

没有答案