1

我正在寻找有关 Live Url(后端的绝对 URL)如何重新生成以及触发它更新的信息。

使用 Kentico 12SP MVC 我有一个非常普通的 NewsArticle 页面类型,它使用“/news/{% UrlSlug %}”的自定义 url 模式来路由到文章。它以前使用 AliasPath,但因为内容编辑器希望能够创建超过 50 个字符限制的 slug,我们为其创建了一个自定义字段。

在我从头开始创建的任何页面以及我编辑过的许多新页面上,这都很好,并且将 UrlSlug 更改为所需的(非常长的)slug 会更新 url。尽管在大量旧文章中,更改 UrlSlug 似乎对 Live Url 没有影响。在许多 url 上已更改为“/news/”,而在其他情况下,它仍显示为旧 url(基于 NodeAlias)。我仍然可以通过手动输入基于 UrlSlug 的 url 路由到该页面,但我一直在使用基于 Live Url (afaik) 的 TreeNode.AbsoluteUrl 来生成菜单和站点地图项,而这些仍然拒绝更新我们文章的很大一部分。

希望有人知道如何迫使他们全部再生,或者至少知道为什么有些人会工作而其他人不会。

4

1 回答 1

0

页面“常规”选项卡上显示的“实时 URL”来自CMS.DocumentEngine.DocumentURLProvider.GetAbsoluteLiveSiteURL(TreeNode node);

最终,这呼吁DocumentURLProvider.GetUrlInternal(TreeNode node);

DocumentURLProvider您可以通过注册自定义提供程序来使用自定义覆盖它。

这将让您调用base.GetUrlInternal(node)并查看返回的内容。

在原始文件中检查的一个条件DocumentURLProviderNodeIsContentOnly,它在CMS_Tree表中。

所以我会检查并确保所有有问题的页面都将此设置为 true(1在 db 列中),否则传统的 Portal Engine Live URL 生成会生效。

任何时候都不会“重新生成”实时 URL。显示的内容来自页面类型配置(URL 模式)的值、数据库中的节点以及填充 URL 模式中的宏表达式的值。

于 2020-10-15T04:31:44.043 回答