【问题标题】:How to force a Live Url (AbsoluteUrl) to update on a Kentico page type如何强制 Live Url (AbsoluteUrl) 在 Kentico 页面类型上更新
【发布时间】:2020-10-15 12:31:44
【问题描述】:

我正在寻找有关 Live 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 来生成菜单和站点地图项,而这些仍然拒绝更新我们的大部分文章。

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

【问题讨论】:

    标签: kentico kentico-12 kentico-mvc


    【解决方案1】:

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

    最终调用DocumentURLProvider.GetUrlInternal(TreeNode node);

    您可以通过registering a custom provider 使用自定义DocumentURLProvider 覆盖它。

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

    在原始DocumentURLProvider 中检查的一个条件是NodeIsContentOnly,它位于CMS_Tree 表中。

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

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

    【讨论】:

      猜你喜欢
      • 2019-10-17
      • 2020-02-18
      • 1970-01-01
      • 1970-01-01
      • 2011-12-12
      • 1970-01-01
      • 1970-01-01
      • 2017-03-06
      • 1970-01-01
      相关资源
      最近更新 更多