gpt4 book ai didi

c# - Sitecore URL 优化和语言

转载 作者:太空狗 更新时间:2023-10-30 00:45:52 26 4
gpt4 key购买 nike

在 Sitecore 6.2 中处理多语言网站 我希望能够让 Sitecore 将 URL 中的“”(空格,传统上用 %20 代替)替换为连字符。

例如www.MySite.com/Hello World > www.MySite.com/Hello-World

到目前为止没问题,我们只是向 encodeNameReplacements 添加另一个条目

<replace mode="on" find=" " replaceWith="-" />

然后,为了防止我们的内容作者创建名称中带有连字符的项目(Sitecore 在读取其 URL 时会将其理解为有空格,从而导致 404 未找到),我们可以将连字符添加到禁止字符列表中在项目名称中,使用

 <setting name="InvalidItemNameChars" value="\/:?&quot;&lt;&gt;|[]-"/>

一切正常 - 直到我尝试创建新的语言定义。 Sitecore 中的语言可以使用简单的语言代码(例如 en、da、de 等)或语言和区域代码 (ISO),例如 en-GB、da-DK、de-DE 等。对于我们的网站,我们需要区域代码,因为我们打算支持区域语言变体(例如瑞士法语和瑞士德语)。但当然,我现在已经禁止在项目名称中使用连字符(和语言一样,Sitecore 中的所有其他内容都被定义为项目)。事实上,Sitecore 要求将语言名称正确构造为文化标识符,因此我无法使用模板的 ISO 代码字段中指定的 ISO 代码为语言分配描述性名称(例如美国英语)。

任何人都可以建议一个合适的解决方案吗?我是否应该从 InvalidItemNameChars 节点中删除连字符并编写一个自定义代码片段来捕获尝试创建带连字符的项目名称 i?如果是这样,我应该如何拦截创建事件?

我讨厌在不必要的地方自定义界面,尤其是我担心这可能会给 Sitecore 版本更新带来问题,所以如果有其他解决方案,我很乐意听取。

提前致谢。

最佳答案

这使用规则引擎来替换特殊字符,例如项目名称中的空格:

https://marketplace.sitecore.net/en/Modules/Item_Naming_rules.aspx

如果您不替换,而只是翻译,那么在处理 URL 时,Sitecore 的项目解析器会尝试查找带有破折号而不是空格的项目名称,并且不会找到匹配的项目。如果您实际上不替换字符,则需要覆盖项目解析器。

如果你想保留用户可见的带空格的名称,但实际上用破折号命名项目,那么你可以在将空格重命名为破折号时将项目的显示名称设置为带空格的原始值,但是我不建议这样做。

关于c# - Sitecore URL 优化和语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4646616/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com