Skip to content

首页模块 (Homepage Modules) 配置规范

源的 homepageModules 字段允许开发者声明该源在首页展示的内容模块。这些模块通过 JSON 数组进行定义,支持高度自定义的布局和数据来源。

1. 数据结构 (Data Structure)

homepageModules 是一个包含多个模块定义对象的 JSON 数组。

模块通用字段

字段类型必须说明
keyString模块唯一标识。建议使用 [a-z0-9_] 字符。用于保存用户的排序/显隐设置。
typeEnum模块类型。定义了渲染方式和交互逻辑。
titleString模块默认标题。用户可在本地自定义覆盖。
kindTitleString用于匹配源「发现」规则中的分类标题。匹配成功后自动继承其 URL 和规则。
urlString显式指定数据接口 URL。优先级高于 kindTitle。支持变量替换。
argsString附加参数。在 buttonGroup 类型中为 JSON 数组字符串。
layoutConfigObject布局配置对象,用于调整列数、行数、图标等。

2. 模块类型 (Module Types)

列表与轮播类

类型描述特点
banner横滑轮播图适合展示高权重的精品推荐,使用大图封面
ranking排行榜列表垂直列表展示,带排名序号
card推荐卡片横向滑动的卡片流,同时显示封面、标题及简介

网格类

类型描述特点
grid标准网格最常用的展示形式,支持自定义行列
gridRanking网格排行榜多行多列的排行展示,横向翻页
infiniteGrid无限网格垂直滚动的网格流,无限加载
waterfall错位瀑布流垂直错位排列的书架流,无限加载

功能类

类型描述特点
buttonGroup快捷按钮组渲染为一组圆形/图标按钮,支持自动填充宽度与自动分列。通常用于放置常用分类或功能入口

3. 布局配置 (LayoutConfig)

通过 layoutConfig 对象,可以精细化控制模块的表现。

属性类型适用类型默认值说明
columnsIntgrid, waterfall, infiniteGrid3每行显示的列数
iconStringbuttonGroup-按钮组的默认统一图标 URL
iconsObjectbuttonGroup-图标映射表。例:{"排行": "http://path/to/icon"}

4. 数据绑定逻辑 (Data Binding)

  1. 自动匹配:如果提供了 kindTitle,系统会遍历源 exploreKinds() 返回的列表。如果某个分类的 title 与之完全一致,该模块将自动使用该分类的 url
  2. 静态指定:如果提供了 url,系统将直接请求该 URL。
  3. 降级逻辑:若 kindTitle 未匹配且无 url,模块将回退至源的主 exploreUrl

5. 完整 JSON 示例

json
[
  {
    "key": "top_banner",
    "type": "banner",
    "title": "精品强推",
    "kindTitle": "首页推荐"
  },
  {
    "key": "quick_nav",
    "type": "buttonGroup",
    "title": "分类导航",
    "args": "[\"武侠\", \"仙侠\", \"都市\", \"历史\"]",
    "layoutConfig": {
      "icon": "https://example.com/icons/default.png",
      "icons": {
        "武侠": "https://example.com/icons/wuxia.png"
      }
    }
  },
  {
    "key": "hot_rank",
    "type": "ranking",
    "title": "热门榜单",
    "kindTitle": "排行榜",
    "layoutConfig": {
      "rows": 5
    }
  },
  {
    "key": "explore_waterfall",
    "type": "waterfall",
    "title": "发现更多",
    "kindTitle": "全部",
    "layoutConfig": {
      "columns": 2
    }
  }
]

基于 Apache-2.0 许可发布