我的情况是,我的客户希望为其文档提供SEO友好URL,并使这些URL流向客户端文档。以下是一个示例设置:
根
组
Group1(自定义网址= / groups / ma / salem / group1)
Group2(自定义网址= / groups / ma / boston / group2)
希望Page1,Page2,Page3,Page4继承它的父母的自定义网址并且是:
当我设置自定义URL路径时,它仅影响该文档,并且子文档保持不变:
这可以在Kentico中实现,而无需修改树结构以包含URL部分吗?
有没有办法覆盖ResolveURL()函数,所以我可以返回SEO友好的URL?
我正在使用Kentico 8.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;
}
}