我有一个网站,其中开发人员创建了30份ascx文件并将其注册为webparts。我希望能够查询Kentico数据库并找出网站上的哪些内容,并将Web部件与文件名相关联。换句话说,运行查询以将ascx文件与活动页面相关联。
我做的一个查询在嵌入表格的XML中向我展示:
这个guid存储在数据库中的哪个位置?我在这里错过了一个协会,这让我疯狂。我无法从CMS Desk确定哪个web ascx文件对应于每个活动页面。
答案 0 :(得分:2)
您可以使用以下查询。 它将列出WebPart ASCX文件的物理位置的路径,它所使用的页面的NodeAliasPath,以及WebPart所在页面模板的代码名称。您可以根据自己的喜好调整所选列。
SELECT DISTINCT
WP.WebPartFileName, -- Physical location of the webpart file
NodeAliasPath, -- Alias path of the page that uses the webpart
PageTemplateCodeName -- Code name of the template that contains the webpart
FROM CMS_WebPart WP
INNER JOIN
(
-- Convert the PageTemplateWebParts column to XML
-- Get the 'type' attribute from all 'webpart' elements, as the 'WebPartName' column
SELECT
PageTemplateID,
PageTemplateCodeName,
T.N.value('@type', 'varchar(50)') as WebPartName
FROM CMS_PageTemplate
CROSS APPLY (SELECT CAST(PageTemplateWebParts AS XML)) as X(X)
CROSS APPLY X.X.nodes('/page/*/webpart') T(N)
) TemplateWebParts ON WP.WebPartName = TemplateWebParts.WebPartName
-- Join the Tree view, to get NodeAliasPaths of pages that use the template
INNER JOIN View_CMS_Tree_Joined T ON T.NodeTemplateID = TemplateWebParts.PageTemplateID
ORDER BY NodeAliasPath
在Kentico中,WebParts位于页面模板上,然后与页面相关联。
它们可以在PageTemplateWebParts
列中以XML格式显示,并与其设置一起显示。
type
元素的webpart
属性相当于WebPartName
表中的CMS_WebPart
列。