首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sitecore URL优化和语言

问Sitecore URL优化和语言
EN

Stack Overflow用户
提问于 2011-01-10 20:06:25
回答 2查看 2.6K关注 0票数 4

在Sitecore 6.2中使用多语言站点时,我希望能够让Sitecore用连字符替换URL中的“”(空格,传统上用%20替换)。

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

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

代码语言:javascript
复制
<replace mode="on" find=" " replaceWith="-" />

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

代码语言:javascript
复制
 <setting name="InvalidItemNameChars" value="\/:?&quot;&lt;&gt;|[]-"/>

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

有没有人能给出一个合适的解决方案呢?我是否应该从InvalidItemNameChars节点中删除连字符,并编写一个自定义代码片段来捕获尝试创建连字符项目名称的行为?如果是这样,我应该如何处理创建事件?

我不喜欢在不必要的地方定制界面,特别是我担心这可能会给Sitecore版本更新带来问题,所以如果有其他解决方案,我很想听听他们的意见。

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-14 22:43:56

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

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

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

如果您希望将名称保留为用户可见的空格,但实际为项目命名时使用短划线,则可以在将空格重命名为短划线时将项目的显示名称设置为原始值,但我建议您不要这么做。

票数 4
EN

Stack Overflow用户

发布于 2011-01-11 03:13:57

您可以编写一个类并将其放入web.config的item saved事件中。只需编写OnItemSaved方法,并让它检查名称中的连字符。我想你需要在重命名和复制的时候做。

代码语言:javascript
复制
<event name="item:saved">
  <handler type="Sitecore.Links.ItemEventHandler, Sitecore.Kernel" method="OnItemSaved" />
  <handler type="Sitecore.Tasks.ItemEventHandler, Sitecore.Kernel" method="OnItemSaved" />
  <handler type="Sitecore.Globalization.ItemEventHandler, Sitecore.Kernel" method="OnItemSaved" />
  <handler type="Sitecore.Rules.ItemEventHandler, Sitecore.Kernel" method="OnItemSaved" />
  <handler type="YourAssembly.ItemEventHandler, YourAssembly" method="OnItemSaved" />
</event>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4646616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档