本文档非官方出品,主要由 AI 辅助编写,不保证绝对准确。如有疑问,请以 kernel/api/bazaar.go 中的源码为准。

如果您觉得本文档有帮助,可以考虑赞助支持:爱发电

installBazaarTheme

从集市下载并安装指定的主题。

新手提示: 这个 API 就是你在思源集市里点击主题"安装"按钮时背后执行的操作。

⚠️ 风险警告!请仔细阅读! ⚠️

请确认来源可靠后再进行安装!

‼️ 重要行为注意 ‼️

成功安装集市主题后,此 API 会自动修改你的外观设置,将 "外观 -> 跟随操作系统" 选项关闭 (`appearance.modeOS` 设置为 `false`),并保存配置。这是为了确保新安装的主题能够被正确应用,而不是被系统模式覆盖。

注意: 此 API 需要认证、管理员权限且非只读模式。

地址

POST /api/bazaar/installBazaarTheme

请求体 (JSON)

{
  "repoURL": "主题的 Git 仓库地址",
  "repoHash": "仓库特定提交的哈希值",
  "packageName": "主题名称",
  "mode": 0, // 0: 亮色, 1: 暗色
  "update": false, // 可选, 是否为更新操作, 默认为 false
  "keyword": "" // 可选的关键词
}

响应体 (JSON)

安装请求成功后,返回标准响应体,`data` 字段包含刷新后的集市主题列表和更新后的外观设置。

{
  "code": 0, // 0 表示安装任务启动成功
  "msg": "", // 成功时为空,失败时包含错误信息
  "data": {
    "packages": [
      // 安装后刷新得到的 *所有* 集市可用主题列表 (针对指定 keyword)...
      // (结构同 getBazaarTheme 返回的 packages)
    ],
    "appearance": { 
      // 更新后的外观设置对象 (结构同 /api/system/getConf 返回的 appearance 部分)
      // 注意:modeOS 会被设为 false
    }
  }
}

注意:

示例

// 假设要安装名为 "cool-dark-theme" 的暗色主题
const repo = "https://github.com/user/siyuan-cool-dark-theme";
const hash = "fedcba98765"; // 要安装的版本哈希
const pkgName = "cool-dark-theme";

// **警告:执行此代码会实际安装主题并修改外观设置!**
fetch('/api/bazaar/installBazaarTheme', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Token YOUR_API_TOKEN' // 替换为你的管理员 API Token
  },
  body: JSON.stringify({
    repoURL: repo,
    repoHash: hash,
    packageName: pkgName,
    mode: 1, // 1 表示安装暗色模式
    update: false,
    keyword: ""
  })
})
.then(response => response.json())
.then(data => {
  if (data.code === 0) {
    console.log('主题安装请求成功,后台正在处理...');
    console.log('外观设置已更新:', data.data.appearance);
    // 可以根据需要处理返回的 packages 数据,例如刷新界面
  } else {
    console.error('主题安装失败:', data.msg);
    // 向用户显示错误信息 data.msg
  }
})
.catch(error => console.error('请求错误:', error));

在线测试

你需要先通过 getBazaarTheme 获取到一个具体主题的 repoURL, repoHashpackageName 才能测试此接口。

注意: 在此测试会实际下载并安装主题,并关闭"跟随操作系统"外观设置!请确保你信任要安装的主题来源!

实际应用案例 / Who Uses This API?

如果你的外部工具使用了这个 API 来管理主题安装,欢迎提交 Pull Request 将你的项目添加到下方列表!