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 个选择:

  1. 联系 Sitecore 支持并告诉他们这个错误。
  2. 覆盖 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>