Sitecore LinkManager url 编码
Sitecore LinkManager url encoded
这似乎微不足道,但我无法在网上找到现有答案...
我正在使用 Sitecore,我已将其配置为使用项目的显示名称来生成其 url(使用 "useDisplayName" 设置)。
现在,当我有一个显示名称为“Test, with commä”的项目时
我希望 Sitecore 的 LinkManager 为我提供有效的 URL:
/nl-NL/ContentPage/Test%2C-with-comm%C3%A4
但是,它给了我一个 URL,其中包含未编码的无效字符:
/nl-NL/ContentPage/Test,-with-commä
现在我知道我可以为特定字符设置例外,但这不是重点。我希望 Sitecore 删除任何非法 URL 字符及其编码对应字符。
没有设置或简单的方法可以实现吗?
遗憾的是,Sitecore 不支持以您想要的方式对 url 部分进行编码。
而 encodeNames="true"
只告诉 Sitecore 使用 encodeNameReplacements
设置中配置的内容。
您有 2 个选择:
- 联系 Sitecore 支持并告诉他们这个错误。
- 覆盖
LinkProvider
class 并编码 urls:
public class CustomLinkProvider : Sitecore.Links.LinkProvider
{
public override string GetItemUrl(Item item, UrlOptions options)
{
var itemUrl = base.GetItemUrl(item, options);
// your code to encode the url
return itemUrl;
}
}
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<linkManager>
<providers>
<add name="sitecore">
<patch:attribute name="type">My.Assembly.Namespace.CustomLinkProvider,My.Assembly</patch:attribute>
</add>
</providers>
</linkManager>
</sitecore>
</configuration>
这似乎微不足道,但我无法在网上找到现有答案...
我正在使用 Sitecore,我已将其配置为使用项目的显示名称来生成其 url(使用 "useDisplayName" 设置)。
现在,当我有一个显示名称为“Test, with commä”的项目时 我希望 Sitecore 的 LinkManager 为我提供有效的 URL:
/nl-NL/ContentPage/Test%2C-with-comm%C3%A4
但是,它给了我一个 URL,其中包含未编码的无效字符:
/nl-NL/ContentPage/Test,-with-commä
现在我知道我可以为特定字符设置例外,但这不是重点。我希望 Sitecore 删除任何非法 URL 字符及其编码对应字符。
没有设置或简单的方法可以实现吗?
遗憾的是,Sitecore 不支持以您想要的方式对 url 部分进行编码。
而 encodeNames="true"
只告诉 Sitecore 使用 encodeNameReplacements
设置中配置的内容。
您有 2 个选择:
- 联系 Sitecore 支持并告诉他们这个错误。
- 覆盖
LinkProvider
class 并编码 urls:
public class CustomLinkProvider : Sitecore.Links.LinkProvider
{
public override string GetItemUrl(Item item, UrlOptions options)
{
var itemUrl = base.GetItemUrl(item, options);
// your code to encode the url
return itemUrl;
}
}
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<linkManager>
<providers>
<add name="sitecore">
<patch:attribute name="type">My.Assembly.Namespace.CustomLinkProvider,My.Assembly</patch:attribute>
</add>
</providers>
</linkManager>
</sitecore>
</configuration>