我试图在Kentico的数据库模型中理解如何使用数据库脚本更改Web部件内容。
所以,基本上我有一个基于Kentico的网站,有几篇文章,内容中有内部超链接。但问题是这些超链接的格式实际上是无效的。我正在寻找一种方法来构建脚本并进行批量更新,以便替换某些字符并将这些超链接更新为有效格式。
任何想法如何构建查询以获取所有已发布页面中使用的所有Web部件的内容。
谢谢
答案 0 :(得分:2)
这取决于您的网页部分以及内容的呈现方式。 Web部件呈现其内容的方式有多种:
最后一个可能很难改变,具体取决于Web部件以及您是否可以访问所有后面的代码,但您可以在解决方案的代码中或管理区域内更改其他代码。
在SQL中执行此操作可能需要结合使用T-SQL XML支持和正则表达式来查找您要查找的内容。您实际上需要查看CallAfter()
和CMS_WebPart
表来查找您要查找的内容。
然而,阅读您的查询,我不是100%肯定您在谈论网页部分,(我很抱歉,如果您这样),当您谈论文章内容本身的链接时。如果使用可编辑文本 Web部件设置这些内容,则需要查看CMS_WebPartLayout
字段中的CMS_Document
表以查找要替换的链接。但是,您需要了解如何正确格式化这些链接,以便以后不需要重复此过程。
注意:强>
答案 1 :(得分:1)
通常"内容"在webpart中设置不。 Web部件配置为从页面类型中检索内容。对于特定的Web部件,如可编辑文本,静态文本,静态HTML等,有一个例外。
webpart的配置存储在cms_pagetemplate
表的模板级别。该页面模板上所有Web部件的配置存储在PageTemplateWebParts
字段中。因此,您必须解析XML并获取正确的webpart,然后对该字段执行更新。您可以使用正则表达式来查找内容并替换它。
仅仅因为版本历史而通过SQL执行此操作并不理想,以后可能会导致很多问题。我建议您找出可以执行这些更新的API调用,并为其编写一个小程序。