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

时间:2018-01-24 14:31:01

标签: kentico

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

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

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

谢谢

2 个答案:

答案 0 :(得分:2)

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

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

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

然而,阅读您的查询,我不是100%肯定您在谈论网页部分,(我很抱歉,如果您这样),当您谈论文章内容本身的链接时。如果使用可编辑文本 Web部件设置这些内容,则需要查看CMS_WebPartLayout字段中的CMS_Document表以查找要替换的链接。但是,您需要了解如何正确格式化这些链接,以便以后不需要重复此过程。

注意:

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

答案 1 :(得分:1)

通常"内容"在webpart中设置。 Web部件配置为从页面类型中检索内容。对于特定的Web部件,如可编辑文本,静态文本,静态HTML等,有一个例外。

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

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