gpt4 book ai didi

asp.net - 仅为 Sitecore 中的特定站点嵌入语言

转载 作者:行者123 更新时间:2023-12-04 20:04:54 25 4
gpt4 key购买 nike

如何在 Sitecore 中嵌入特定网站的语言/区域设置?

假设我有美国站点,其 URL 为 http://exmaple.com

对于加拿大站点,我有 2 种语言,因此 URL 应该是这样的。

http://exmaple.ca/en-ca

http://exmaple.ca/fr-ca

最佳答案

没有现成的方法可以实现这一点,因为您只能设置一个链接提供程序,并且这些设置适用于解决方案的实例/使用。

我之前在博客上发布了一个我用来实现的解决方案 Site Specific Link Provider for Multisite Implementations in Sitecore它本质上是一个切换链接提供程序,允许您定义多个链接提供程序,每个链接提供程序针对不同的站点具有不同的配置。

这将允许您创建两个链接提供程序配置:

<linkManager>
<providers>
<add name="provider-site1" languageEmbedding="never" type="Sitecore.Links.LinkProvider, Sitecore.Kernel" ... />
<add name="provider-site2" languageEmbedding="always" type="Sitecore.Custom.Links.SpecificLinkProvider, Sitecore.Custom" ... />
</providers>
</linkManager>

然后在您的网站定义中指定要使用的提供商:

<sites>
<site name="site1" linkProvider="provider-site1" ... />
<site name="site2" linkProvider="provider-site2" ... />
<site name="site3" ... />
</sites>

所有代码代码都可以在这个Github Gist中找到

或者,创建您自己的链接提供程序,继承自 Sitecore.Links.LinkProvider 并覆盖 GetItemUrl 方法:

public override string GetItemUrl(Sitecore.Data.Items.Item item, Sitecore.Links.UrlOptions options)
{
if (Sitecore.Context.Site.Name == "US-Site")
{
options.LanguageEmbedding = LanguageEmbedding.Never;
}
return base.GetItemUrl(item, options);
}

然后将其修补以替换默认链接提供程序:

<linkManager>
<patch:attribute name="defaultProvider">custom</patch:attribute>
<providers>
<add name="custom" type="MyProject.SiteLinkProvider, MyProject" languageEmbedding="always" />
</providers>
</linkManager>

关于asp.net - 仅为 Sitecore 中的特定站点嵌入语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37995215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com