首页模块 (Homepage Modules) 配置规范
toc
源的 homepageModules 字段允许开发者声明该源在首页展示的内容模块。这些模块通过 JSON
数组进行定义,支持高度自定义的布局和数据来源。
1. 数据结构 (Data Structure)
homepageModules 是一个包含多个模块定义对象的 JSON 数组。
模块通用字段
| 字段 |
类型 |
必须 |
说明 |
| key |
String |
是 |
模块唯一标识。建议使用 [a-z0-9_] 字符。用于保存用户的排序/显隐设置。 |
| type |
Enum |
是 |
模块类型。定义了渲染方式和交互逻辑。 |
| title |
String |
是 |
模块默认标题。用户可在本地自定义覆盖。 |
| kindTitle |
String |
否 |
用于匹配源「发现」规则中的分类标题。匹配成功后自动继承其 URL 和规则。 |
| url |
String |
否 |
显式指定数据接口 URL。优先级高于 kindTitle。支持变量替换。 |
| args |
String |
否 |
附加参数。在 buttonGroup 类型中为 JSON 数组字符串。 |
| layoutConfig |
Object |
否 |
布局配置对象,用于调整列数、行数、图标等。 |
2. 模块类型 (Module Types)
列表与轮播类
| 类型 |
描述 |
特点 |
banner |
横滑轮播图 |
适合展示高权重的精品推荐,使用大图封面 |
ranking |
排行榜列表 |
垂直列表展示,带排名序号 |
card |
推荐卡片 |
横向滑动的卡片流,同时显示封面、标题及简介 |
网格类
| 类型 |
描述 |
特点 |
grid |
标准网格 |
最常用的展示形式,支持自定义行列 |
gridRanking |
网格排行榜 |
多行多列的排行展示,横向翻页 |
infiniteGrid |
无限网格 |
垂直滚动的网格流,无限加载 |
waterfall |
错位瀑布流 |
垂直错位排列的书架流,无限加载 |
功能类
| 类型 |
描述 |
特点 |
buttonGroup |
快捷按钮组 |
渲染为一组圆形/图标按钮,支持自动填充宽度与自动分列。通常用于放置常用分类或功能入口 |
3. 布局配置 (LayoutConfig)
通过 layoutConfig 对象,可以精细化控制模块的表现。
| 属性 |
类型 |
适用类型 |
默认值 |
说明 |
columns |
Int |
grid, waterfall, infiniteGrid |
3 |
每行显示的列数 |
icon |
String |
buttonGroup |
- |
按钮组的默认统一图标 URL |
icons |
Object |
buttonGroup |
- |
图标映射表。例:{"排行": "http://path/to/icon"} |
4. 数据绑定逻辑 (Data Binding)
- 自动匹配:如果提供了
kindTitle,系统会遍历源 exploreKinds() 返回的列表。如果某个分类的
title 与之完全一致,该模块将自动使用该分类的 url。
- 静态指定:如果提供了
url,系统将直接请求该 URL。
- 降级逻辑:若
kindTitle 未匹配且无 url,模块将回退至源的主 exploreUrl。
5. 完整 JSON 示例