这似乎微不足道,但我无法在线找到现有答案......
我正在使用Sitecore,我已将其配置为使用项目的显示名称来生成其网址(使用“useDisplayName”设置)。
现在,当我有一个显示名称为“测试,带有commä”的项目时 我希望Sitecore的LinkManager能为我提供有效的URL:
/ NL-NL / ContentPage /测试%2C-与-COMM%C3%A4
但是,它为我提供了一个包含未编码的无效字符的网址:
/ NL-NL / ContentPage /测试, - 附逗号
现在我知道我可以为特定字符制作例外,但这不是重点。我希望Sitecore能够删除任何非法的URL字符及其编码对应物。
是否有设置或简单的方法来实现这一目标?
答案 0 :(得分:2)
不幸的是,Sitecore不支持以您想要的方式编码网址部分。
encodeNames="true"
仅告知Sitecore使用encodeNameReplacements
设置中配置的内容。
您有两个选择:
LinkProvider
类并编码网址: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>