用途
该技能是 Umbraco 内容建模约定的参考索引,目标是让任何开发者仅凭名称和位置就能判断某个建模产物是什么、位于何处、如何运作。它只回答“规则是什么”以及背后的原因,不创建任何内容;编写需求文档并将规则应用到具体站点,属于配套技能 umbraco-content-requirements-documentation 的工作。
核心概念
文档以六个概念为基础,每个概念由对应技能负责,本表是各技能用词的统一来源:
- 页面:访问者会落到的文档类型,带模板、使用 SEO 组合,并位于允许它的父节点下。示例包括联系页面、文章页面、搜索页面,由 umbraco-add-page 负责。
- 文档类型:某物的 schema,包含标签页、字段与组合;其节点可以有 URL,但不会被渲染为页面。示例包括作者、分类、站点设置,由 umbraco-add-document-type 负责。
- 元素类型:存在于其他内容内部的 schema,不会单独出现在内容树中。示例包括手风琴、手风琴项、设置模型,由 umbraco-add-element-type 负责。
- 区块:注册在区块区域中的内容元素,可选带控制外观的设置元素;中继器会添加其项元素和 Block List。示例为手风琴及其设置,由 umbraco-add-block 负责。
- 组合:完成单一职责的可复用字段集合,添加到需要的类型上。示例包括 SEO、Open Graph,由 umbraco-add-composition 负责。
- 区块区域:页面上供编辑者组合区块的位置。示例为主内容 Block Grid,由 umbraco-configure-block-editor 负责。
模板决定是否为页面;页面与普通文档类型都可以有 URL,是否为页面取决于意图(访问者是否会落到它),不明确时技能会询问。每个页面都使用 SEO 组合。内容与样式保持分离:区块的内容元素存放编辑者撰写的内容,设置元素在存在样式选项时存放外观。元素不是区块:设置模型、设置组合和中继器项都是区块的组成部分。
约定分类
名称
- 文档类型名称、别名与后缀:关注没有 Page 后缀的页面类型、别名中把 SEO 写成缩写的情况,见 naming.md。
- 属性别名:关注 seoTitle、showBanner、区块上的 heroTitle、无后缀的覆盖项,见 property-aliases.md。
- 描述:关注空描述、未以“Adds ...”描述的 Composition,见 descriptions.md。
- 图标与颜色:关注所有内容都用默认图标、颜色被随意使用,见 icons-and-colours.md。
结构
- Document Types 树:关注页面放在文件夹内、组合散落在根级,见 tree-organisation.md。
- 标签页、分组与排序:关注标签页按 0、1、2 排序,属性按 1、2、3 排序,元素类型上出现标签页,见 tabs-groups-sorts.md。
- 组合:关注一个组合又组合了另一个组合,或携带模板或子节点,见 compositions.md。
行为
- 允许的子节点与根级允许:关注多个页面类型允许在根级、列表允许一切,见 allowed-children-and-root.md。
- 模板:关注没有模板的页面类型、组合或元素上出现模板,见 templates.md。
使用方式
- 设计新内容:找到与所做决策对应的行,只打开该参考文件,在编写需求文档前应用规则。
- 检查已有模型中的单个决策:在 Look for 列中扫描特征,然后打开匹配的文件。对整体模型进行排序与报告的审查,由 umbraco-review-content-model 负责。
- 解释某条规则:每个参考文件给出理由,存在时也给出被否决的替代方案;应引用理由而非自行编造。
- 已有项目与规则不一致:该项目既有的约定优先,说明它偏离了哪条规则,遵循项目并保持一致性。
最佳实践
在创建任何内容之前先确定名称、文件夹、标签页与排序;之后重命名别名会破坏模板、模型与内容查询。优先与项目保持一致而非追求纯粹:一条处处应用的约定胜过两条混用的好约定。
这些规则是可检查的:umbraco-content-requirements-documentation 附带一个 linter,对书面需求文档强制执行机械性规则,因此应编写需求文档并运行 linter,而不是靠肉眼检查。
说明一条规则不等于验证站点已遵守它;只有在从站点读取模型之后,才能声称线上模型符合约定。
范围与限制
媒体类型与成员类型遵循 Umbraco 自身默认值,不在本插件覆盖范围内。审查读取模型的 C# 或 Razor 代码属于同级插件 umbraco-cms-implementation-skills 中的 umbraco-common-pitfalls,需单独安装。
版本兼容
这些约定描述的是 schema 形态,自 Umbraco 8.17 重构标签页与分组、以及区块编辑器出现以来一直稳定。它们源自生产环境的 Umbraco 17 schema 并以此校验;此处不依赖任何 API。应用这些规则的技能面向 Umbraco 17 及以上版本。
验证
客观断言位于 evals/evals.json,可用 umbraco-skill-evaluator 运行。覆盖等级为 Documented。该技能不附带代码和资源;评估针对指南进行,未运行任何东西。