登录 注册
Developer WikiPluginThemeAPI v1.0.0

面向生态开发者的工程文档

当前 Extension API 版本 1.0.0,核心最低要求 1.0.0。从插件、主题到授权、打包与安全规范,帮助开发者以官方兼容方式扩展 ClayBBS。文档公开阅读;示例工程仅开发者账号可下载。

📖 论坛端完整 API 参考:app/Extension/ExtensionContract.php · 打包规范:docs/extension-manifest-spec.md · API 文档:docs/extension-api.md

主题开发模型

主题用于替换 ClayBBS 的展示层。主题启用后,系统会优先查找主题目录中同路径视图;找不到时回退到默认视图。

原则:主题主要负责展示,不建议在主题中写复杂业务逻辑,也不要改变表单字段语义。

主题命名规范

  • slug:使用稳定英文标识,例如 clay_light
  • 视图路径:必须和默认视图相同路径,才能完成覆盖。
  • 资源路径:建议统一放在主题 assets/ 下,不要污染主系统 assets/
  • 版本:主题升级应保持同一 slug,并递增版本号。

主题目录结构

clay_light/
├── market.json
├── theme.json
├── views/
│   ├── web/home/index.php
│   ├── web/thread/show.php
│   └── layouts/topbar.php
├── assets/
│   ├── css/theme.css
│   └── js/theme.js
└── README.md
  • theme.json:论坛端主题识别文件。
  • views/:按默认视图路径覆盖页面。
  • assets/:主题自己的 CSS、JS、图片资源。

theme.json / market.json

{
  "type": "theme",
  "slug": "clay_light",
  "name": "Clay Light",
  "version": "1.0.0",
  "api_version": "1.0.0",
  "min_core_version": "1.0.0",
  "description": "一个主题开发示例",
  "author": "你的名字"
}

主题 slug 同样要求稳定。用户安装后,升级包应沿用同一个 slug。

api_version 声明主题依赖的 Extension API 版本,论坛切换主题时会检查兼容性。

market.json 用于提交官方市场;theme.json 用于论坛本地识别。

视图覆盖规则

默认视图:

app/views/web/home/index.php

主题覆盖:

themes/clay_light/views/web/home/index.php

只覆盖你需要改动的页面即可,不需要复制全部默认视图。这样更容易跟随官方升级。

资源组织

assets/
├── css/theme.css
├── js/theme.js
└── images/logo.svg
  • CSS/JS 文件命名要清晰,不要覆盖全局变量太多。
  • 图片尽量压缩,避免主题包体积过大。
  • 如果引入第三方库,要说明来源和许可协议。

样式与交互规范

  • 移动端优先,避免大块固定宽度布局。
  • 兼容暗色模式,优先使用系统 CSS 变量。
  • 按钮、表单、列表保持简洁,不要过度装饰。
  • 不要移除必要的 CSRF 字段、隐藏字段和提交按钮 name/value。
  • 图片、头像、帖子卡片需要考虑长内容和空状态。

兼容与表单规则

  • 不要删除表单中的 csrf_field()
  • 不要修改后端依赖的 name 字段,例如标题、内容、板块 ID。
  • 保留登录态、未登录态、空状态、错误提示。
  • 列表页要测试长标题、无头像、无图片、多图、暗色模式。
  • 主题只覆盖展示层,不应直接写数据库。

授权与付费主题

付费主题同样使用市场授权注入。主题包声明 license.required=true 后,论坛在安装、启用和渲染时会校验授权;授权无效时自动回退默认主题。

{
  "type": "theme",
  "slug": "premium_dark",
  "name": "Premium Dark",
  "version": "1.0.0",
  "license": {
    "required": true,
    "protected_features": ["theme_activate", "theme_render"]
  }
}
  • 官方站只会向已购买并绑定域名的站点注入有效授权。
  • 论坛端启用付费主题前会校验授权。
  • 授权失效或域名不匹配时,不会继续渲染该主题。

主题打包发布

  1. 复制示例主题工程。
  2. 按需覆盖页面视图,不要一次性复制全部默认视图。
  3. 补充主题 CSS/JS。
  4. 测试登录/未登录、移动端、暗色模式、空状态和长内容。
  5. 确认没有运行数据、日志、上传文件和密钥。
  6. 压缩主题根目录并提交官方审核。
公益开发者只能发布免费主题;普通开发者可以发布免费或付费主题。

主题示例工程

Clay Light 示例主题

包含 market.json、theme.json、api_version 声明、assets/css/theme.css、views/example-snippet.php 和 README。

成为开发者后下载