Sitecore LinkManager网址编码

时间:2017-01-24 13:08:49

标签: sitecore

这似乎微不足道,但我无法在线找到现有答案......

我正在使用Sitecore,我已将其配置为使用项目的显示名称来生成其网址(使用“useDisplayName”设置)。

现在,当我有一个显示名称为“测试,带有commä”的项目时 我希望Sitecore的LinkManager能为我提供有效的URL:

  

/ NL-NL / ContentPage /测试%2C-与-COMM%C3%A4

但是,它为我提供了一个包含未编码的无效字符的网址:

  

/ NL-NL / ContentPage /测试, - 附逗号

现在我知道我可以为特定字符制作例外,但这不是重点。我希望Sitecore能够删除任何非法的URL字符及其编码对应物。

是否有设置或简单的方法来实现这一目标?

1 个答案:

答案 0 :(得分:2)

不幸的是,Sitecore不支持以您想要的方式编码网址部分。

encodeNames="true"仅告知Sitecore使用encodeNameReplacements设置中配置的内容。

您有两个选择:

  1. 与Sitecore支持部门联系并告诉他们有关此错误的信息。
  2. 覆盖LinkProvider类并编码网址:
  3. 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>