Kentico 10 - 通过数据库更改 Web 部件内容

Kentico 10 - Web Part content change via database

我试图在 Kentico 的数据库模型中了解如何使用数据库脚本更改 Web 部件内容。

所以,基本上我有一个基于 Kentico 的网站,其中有几篇文章,以及其内容中的内部超链接。但问题是那些超链接的格式实际上是无效的。我一直在寻找一种方法来构建脚本并进行批量更新,以替换一些字符并将这些超链接更新为有效格式。

知道如何构建查询以获取所有已发布页面中使用的所有 Web 部件的内容。

谢谢

通常 "content" 在 Web 部件中设置。 Web 部件被配置为从页面类型中检索内容。对于像 Editable Text、Static Text、Static HTML 等特定 Web 部件有一个例外。

Web 部件的配置存储在 cms_pagetemplate table 中的模板级别。该页面模板上所有 Web 部件的配置都存储在 PageTemplateWebParts 字段中。因此,您必须解析 XML 并获取正确的 Web 部件,然后对该字段执行更新。您也许可以执行正则表达式来查找该内容并替换它。

通过 SQL 执行此操作并不理想,仅仅因为版本历史,以后可能会导致很多问题。我建议找出您可以进行哪些 API 调用来执行这些更新并为其编写一个小程序。

这取决于您的 Web 部件以及内容的呈现方式。 Web 部件呈现其内容的方式有多种:

最后一个可能很难更改,具体取决于 Web 部件以及您是否有权访问后面的所有代码,但您可以在解决方案中的代码中或在管理区域本身中更改其他代码。

在 SQL 中执行此操作可能需要结合使用 T-SQL XML 支持和正则表达式才能找到您要查找的内容。您实际上需要查看 CMS_WebPartCMS_WebPartLayout table 才能找到您要查找的内容。

但是,在阅读您的查询时,我不是 100% 确定您在谈论 Web 部件(如果您是,我深表歉意),因为您在谈论链接文章内容本身。如果这些是使用 Editable text web 部件设置的,那么您需要查看 CMS_Document table 中的 DocumentContent字段以查找要替换的链接。但是您随后需要了解如何正确设置这些链接的格式,以便以后无需重复此过程。


注:

  1. 在 SQL 中执行此操作时需要非常小心,以确保不会创建无效的 XML。当你那样做时,事情就变糟了。
  2. 这不会刷新您的缓存,因此您之后需要手动清除缓存。
  3. 如果您使用的是开箱即​​用的 Web 部件,您应该真正制作它们的副本并在您要修改时使用副本,这样,您不太可能拥有未来升级的痛苦。