【问题标题】:Setting unique URL names for nested documents为嵌套文档设置唯一的 URL 名称
【发布时间】:2017-10-16 09:38:59
【问题描述】:

我的内容树有点像这样

文章

  • 2016
    • 1
      • 第一条
    • 2
    • ...
  • 2017
    • 1
      • 第一条
    • 2
    • ...

有什么方法可以让 Umbraco 为“文章 1”选择唯一的 URL 名称?

至于不,它给了我“/articles/2016/1/article-1”和“/articles/2017/1/article-1”,这本身并没有错。 但我宁愿让它像“/articles/2016/1/article-1”和“/articles/2017/1/article-1-1”一样。

原因是我目前在 URL 中隐藏了年份和月份,但想在后台维护树结构。

【问题讨论】:

  • 你可以自己写contentfinder,也许你可以在url中使用节点的ID,比如 /articles/article-[idNode]/ 。从内容查找器的一些示例中看这里24days.in/umbraco-cms/2014/urlprovider-and-contentfinder
  • 感谢您的回复@Eyescream,我已经考虑过这种方法,但是它会暴露 URL 中不需要的 ID,因为我想要一个更“漂亮”的 URL结构体。我可以看到“-1-1”不是最佳的。然而文章,理论上不应该得到相同的名字。虽然如果发生这种情况,我希望它不会崩溃或发生故障。
  • 您可以尝试使用 umbracoUrlAlias 手动覆盖您的页面别名。只需使用 textstring 类型的 umbracoUrlAlias 创建一个属性,Umbraco 将在 url 中使用该别名而不是默认别名。
  • @MarioLopez 有什么方法可以在与现有内容冲突时自动创建一个新名称?我不能依靠内容编辑自己来跟踪这一点。
  • 您可以尝试向 ContentService.Saving 事件添加事件处理程序并执行一些逻辑来检查冲突并生成新别名?您甚至可以尝试这种方式来修改页面别名本身,而不是使用 umbracoUrlAlias:our.umbraco.org/documentation/reference/events/…

标签: umbraco umbraco7


【解决方案1】:

不,不是开箱即用。默认情况下,Umbraco UI 将确保同一级别的页面的唯一命名。

因此,如果您已经有一个名为“Page 1”的页面并尝试在同一级别添加一个相同名称,Umbraco 会自动将其重命名为“Page 1 (1)”。

但它不会检查网站的其余部分,只检查您要添加内容的级别。

要完成您所追求的目标,您需要查看内容服务上的某种事件处理程序或类似的东西,并在那里检查任何级别的具有相同名称的其他节点。

【讨论】:

    猜你喜欢
    • 2016-04-03
    • 1970-01-01
    • 2020-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 2014-02-21
    • 1970-01-01
    相关资源
    最近更新 更多