--- name: "ulthon-card-template" description: "自定义卡片/模板形态创作指南:面向想让列表页变好看、为自己的列表页定制专属卡片形态的下游开发者。涵盖适用判断(内置 card 兜底 vs 定制时机、锁定纯表格)、五级模板协议选型建议(官方范例为何都选 tplVueId)、渲染上下文契约(_cells/_operatHtml/_checked/_disabled 与上下文冻结、模板节点容器外硬约束、行选中委托与豁免名单)、以商品卡为蓝本的 step-by-step 配方、设计模式库(头部三件套/图面悬浮开关/价格层级/状态徽标/底部分隔/图片降级/响应式/统一设计语言)、取值通道三规则、坑与红线、验收 checklist。需要定制卡片/自定义卡片模板/卡片模板/商品卡/名片/自定义形态/layoutList 自定义条目/tplVueId,或想让列表变好看、排查自定义模板不渲染/点勾位图标不切换勾选/模板内开关失效时调用。多形态机制(受控数据流、五级协议引擎、双端注入、layoutDefault 三层链)见 ulthon-admin-table 技能第十一章,本技能定位是动手创作,不复述机制。" --- # 自定义卡片模板创作指南(ulthon-card-template) 本技能教下游开发者为自己的列表页定制卡片/模板形态。全部配方来自两个实战模板:用户管理名片(`extend/base/admin/view/system/admin/index.html` 的 usercardTpl)与商品列表商品卡(`extend/base/admin/view/mall/goods/index.html` 的 goodscardTpl),两者都是框架分发、可直接对照的官方范例。 **机制前提**:多形态机制(受控数据流为什么零请求、layoutList 五级协议与回退、双端自动注入、layoutDefault 三层解析链、模板渲染容器的构建与命名)统一由 [ulthon-admin-table](../ulthon-admin-table/SKILL.md) 技能第十一章定义,本技能不复述。本技能回答的是"怎么动手写"。 ## 一、适用判断:先想清楚要不要定制 **不定制就够用的情况(多数页面属于这类)**:`ua.table.render` 不配 `layoutList` 时,框架自动注入"表格 + 内置 card"双形态,工具栏自动出现"视图"按钮,字段按 label:value 紧凑网格渲染,零配置零模板。内置 card 的信息密度对管理后台的字段列表场景通常已经足够,**够用就别写模板**。 **值得定制的情况**: - 需要语义化排版:头部大图 + 价格层级 + 状态徽标这类商品/内容展示形态,内置 card 的 label:value 网格表达不了 - 需要品牌感:自定义配色、圆角、卡片结构(头部三件套、悬浮开关等) - 需要字段编排控制:哪些字段大字强调、哪些弱化、哪些组合进徽标,与表格列语义不同 **锁定纯表格的出口**:页面明确不需要任何卡片形态时(例如纯运维日志类页面),配单条目清单即可: ```js layoutList: ['table'], ``` 单条目锁定的语义与判断逻辑见 ulthon-admin-table 第十一章 11.2。 **一个例外提醒**:若页面显式传 `controlled: false` 走逃生口(依赖引擎 url 模式行为的深度定制页,如自定义 parseData),不要配 `layoutList`。是否属于这类页面的判断见 ulthon-admin-table 第十一章 11.1。 ## 二、模板选型建议 `layoutList` 自定义条目提供五种模板钩子,协议定义、优先级与条目写法(对象条目的 name/title/钩子字段语义)见 ulthon-admin-table 第十一章 11.2,此处只给选型结论。 **选型结论:跟随官方两个范例(用户名片、商品卡),选 `tplVueId`。** 理由: - 模板以 HTML 节点形式写在 index.html 里,与页面级 `