子文档是否可以在Kentico中继承其父级的自定义URL路径

时间:2014-10-08 18:43:32

标签: kentico

我的情况是,我的客户希望为其文档提供SEO友好URL,并使这些URL流向客户端文档。以下是一个示例设置:

    • Group1(自定义网址= / groups / ma / salem / group1)

      • 第1页
      • 第2页
    • Group2(自定义网址= / groups / ma / boston / group2)

      • 第2页
      • 第4页

希望Page1,Page2,Page3,Page4继承它的父母的自定义网址并且是:

  • /组/ MA /塞伦/组1/1页
  • /组/ MA /塞伦/组1 /第2页
  • /组/ MA /波士顿/组2 /第2页
  • /组/ MA /波士顿/组2 /第3页

当我设置自定义URL路径时,它仅影响该文档,并且子文档保持不变:

  • /组/组1/1页
  • /组/组1 /第2页
  • /组/组2 /第2页
  • /组/组2 /第3页

这可以在Kentico中实现,而无需修改树结构以包含URL部分吗?

有没有办法覆盖ResolveURL()函数,所以我可以返回SEO友好的URL?

我正在使用Kentico 8.1

1 个答案:

答案 0 :(得分:1)

在树中创建这些文档肯定是最简单和最安全的解决方案,但是你想要避免这种情况我会看到另外两个选项。

1)创建URL重写规则以模拟此树层次结构

2)在事件发生前捕获文档,并根据需要设置自定义URL路径。

代码看起来像这样:

DocumentEvents.Insert.Before += DocumentInsert_Before;

private static void DocumentInsert_Before(object sender, DocumentEventArgs e)
{
    TreeNode node = e.Node;

    if (node.NodeAliasPath.StartsWith("/groups/group1")) {
        string safeNodeName = TreePathUtils.GetSafeDocumentName(node.DocumentName, CMSContext.CurrentSiteName);
        string customPath = "/groups/ma/salem/group1/" + safeNodeName;

        // Handle multiple dashes
        customPath = TreePathUtils.GetSafeUrlPath(path, CMSContext.CurrentSiteName, true);

        node.DocumentUrlPath = customPath;
    }
}