我正在研究 Sitecore 中的多语言解决方案,并希望使用项目的 DisplayName 属性来表示 URL,以允许特定语言的 URL。
我已将useDisplayName
web.config 属性设置为 true,如下所示
<linkManager defaultProvider="sitecore">
<providers>
<clear />
<add name="sitecore"
alwaysIncludeServerUrl="false"
encodeNames="true"
type="Sitecore.Links.LinkProvider, Sitecore.Kernel"
addAspxExtension="false"
shortenUrls="true"
languageEmbedding="asNeeded"
languageLocation="filePath"
useDisplayName="true" />
</providers>
</linkManager>
我也一直在玩<encodeNameReplacements>
可以在 URL 中用连字符替换%20
以提供漂亮干净的 URL 的部分 - 对于那些感兴趣的人,这是通过以下方式完成的:
<replace mode="on" find=" " replaceWith="-" />
一切都很好,除了如果用户在打开上述设置的情况下在 DisplayName 中输入连字符,Sitecore 会中断......如果我关闭上述设置,那么我必须确保用户为 DisplayName 输入很好的连字符分隔值否则我们开始%20
在 URL 中再次看到 nasty s ......
那么,有没有办法验证 DisplayName 属性以禁止或允许使用连字符?
或者,更好的是,有没有办法挂钩到发生 encodeNameReplacements 事情时执行的任何代码?这将是理想的,因为我可以允许用户为 DisplayName 输入他们喜欢的任何内容,然后即时清理此值。