如何通过报表或API获取Sitecore整站页面所用模板?
Sitecore全站点内容模板使用情况统计方案
零代码现成报表(优先使用,适配新手场景)
无需写代码,Sitecore自带工具即可直接完成统计,几百条内容量级可秒出结果:
- 模板引用报告:登录Sitecore后台进入桌面模式,打开模板管理器,选中需要排查的任意模板,右键选择「报告」→「引用项」,系统会自动列出所有基于该模板创建的内容项,支持按站点路径筛选,可直接查看总数、项路径、更新时间等信息。
- 内容编辑器批量视图:打开内容编辑器,定位到存放文章的根节点,在顶部「视图」菜单勾选「显示所有子项」,在列配置里添加「模板名称」「模板ID」为展示列,系统会递归加载该节点下所有层级的内容,直接点击模板列头即可分组排序,快速看到不同模板的使用数量,支持一键导出为CSV文件。
- SPE内置报表:如果环境部署了Sitecore PowerShell扩展(标准项目基本都会预装),直接打开PowerShell工具箱,找到「内容报告」分类下的「按模板统计项」报表,选择要统计的站点根路径,执行后就能直接生成全路径下的模板使用占比、对应内容列表,支持自定义多维度筛选。
自定义API/脚本统计(适配个性化需求)
如果自带报表的筛选逻辑不符合要求,可以直接调用Sitecore原生接口实现统计,逻辑非常简单:
统计前请确认当前账号对目标内容节点有读取权限,同时注意区分
master(编辑库)和web(线上发布库),按需选择统计的数据库避免数据偏差。
- 最快的方式是直接在Sitecore PowerShell控制台运行以下脚本,不需要编译部署:
# 替换为你要统计的站点根节点路径 $contentRoot = Get-Item -Path "master:/sitecore/content/你的站点根目录" # 递归遍历所有子项,按模板分组统计 $templateUsage = Get-ChildItem -Item $contentRoot -Recurse | Where-Object { $_.TemplateName -ne "Standard values" } | Group-Object TemplateName, TemplateId | Select-Object Count, Name, @{n="TemplatePath";e={$_.Group[0].TemplateItem.Paths.FullPath}} # 控制台输出结果,也可以加| Export-Csv 命令导出成本地文件 $templateUsage | Format-Table -AutoSize
- 如果需要集成到自有功能模块里,用C#服务端API的核心实现逻辑如下,几千条以内的内容量级直接递归查询没有性能压力:
/// <summary> /// 统计指定根节点下所有内容的模板使用情况 /// </summary> /// <param name="rootNode">统计起始根节点</param> /// <returns>key:模板名(模板ID),value:对应内容数量</returns> public Dictionary<string, int> GetTemplateUsageStats(Item rootNode) { var statResult = new Dictionary<string, int>(); // 内容量过万的话建议替换为ContentSearch查询,性能更好 foreach (var contentItem in rootNode.Axes.GetDescendants()) { var templateKey = $"{contentItem.TemplateName}({contentItem.TemplateID})"; if (!statResult.ContainsKey(templateKey)) { statResult[templateKey] = 0; } statResult[templateKey]++; } return statResult; }
- 数百篇文章的量级完全不需要人工逐篇查看,用上面任意一种方法,几分钟即可拿到完整的统计结果。
内容的提问来源于stack exchange,提问作者eyedontknow
相关产品推荐
相关产品推荐

