【问题标题】:Sitecore URL optimisation and languagesSitecore URL 优化和语言
【发布时间】:2011-01-10 12:06:24
【问题描述】:

在 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 Not Found),我们可以将连字符添加到禁止的字符列表中在项目名称中,使用

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

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

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

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

提前致谢。

【问题讨论】:

    标签: c# web-config sitecore sitecore6


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢,这看起来很适合我们。
    【解决方案2】:

    您可以编写一个类并将其放在 web.config 中的项目保存事件中。只需编写OnItemSaved 方法并让它检查名称中的连字符。我想你需要在重命名和复制时都这样做。

    <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>
    

    【讨论】:

      猜你喜欢
      • 2014-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多