Kentico 7 DB查找未使用的CMSWebparts

时间:2016-07-14 23:07:46

标签: kentico

我有一个网站,其中开发人员创建了30份ascx文件并将其注册为webparts。我希望能够查询Kentico数据库并找出网站上的哪些内容,并将Web部件与文件名相关联。换句话说,运行查询以将ascx文件与活动页面相关联。

我做的一个查询在嵌入表格的XML中向我展示:     

这个guid存储在数据库中的哪个位置?我在这里错过了一个协会,这让我疯狂。我无法从CMS Desk确定哪个web ascx文件对应于每个活动页面。

1 个答案:

答案 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列。