用途
umbraco-sitemap 用于为 Umbraco 17+ 站点添加 XML 站点地图,提供两种受支持的实现路径。
两种实现方式
方式 A:缓存型控制器(默认)
- 实现形式:自定义缓存 API 控制器。
- 站点地图 URL:固定为
/sitemap.xml。 - 缓存:使用内存缓存,自动失效。
- 后台操作:无需后台操作,仅基于文件。
- 适用:无头(Headless)/Delivery-API 站点、无法访问后台的场景。
方式 B:Razor 模板
- 实现形式:Razor 模板配合 Document Type。
- 站点地图 URL:由 XmlSiteMap 内容节点提供,例如
/xml-sitemap。 - 缓存:无缓存,按请求渲染。
- 后台操作:必需,包括 Document Types、组合(composition)和内容节点。
- 适用:传统 Razor 站点,支持编辑者逐页控制(优先级、变更频率、隐藏)。
如何选择
- 默认采用方式 A。
- 当团队希望使用官方文档的做法,或需要编辑者逐页控制(优先级 / 变更频率 / 隐藏)时,选择方式 B。
- 方式 B 的 Document Types、组合与模板随
assets/sitemap-package.xml和assets/xmlSitemap.cshtml提供,可作为包安装,或依据该规范手工搭建。 - 建议优先使用 Umbraco Developer MCP 完成后台步骤;如果 MCP 不可用,应手动引导用户完成这些步骤,而不是因为缺少 MCP 就改用方式 A。
- 只有在完全无法访问后台时,才回退到方式 A。
- 如果情况不明确,简要提供两种方案并推荐方式 A。
版本兼容性
- 两种方式均面向 Umbraco 17+。
- 方式 A 使用
IDocumentNavigationQueryService(Umbraco 15+)。
验证
- 两种方式的断言位于
evals/evals.json。 - 可通过
umbraco-skill-evaluator技能运行这些断言。
参考资料
approach-a-cached-controller.mdapproach-b-razor-template.md
来源说明
- 自定义代码由文档中的构建块组成。
- 模板与包清单已在
assets/中验证,遵循官方教程。