Blume中文文档

内容来源

Payload

通过 Payload REST API 读取集合,Lexical 正文降级为 Markdown。

内建的 payload() 适配器通过 Payload REST API(/api/<collection>)读取一个集合,并把每个文档的 Lexical 正文降级为 Markdown:段落、标题、项目符号列表、编号列表、勾选列表、引用、链接、上传文件和水平分隔线。放在文本字段里的正文会按 Markdown 原样透传,只有一点例外:不是网页、邮件、电话或相对地址的链接只保留它的文字。无需安装任何东西。

import { defineConfig } from "blume";
import { filesystem, payload } from "blume/sources";

export default defineConfig({
  content: {
    sources: [
      filesystem({ root: "docs" }),
      payload({
        prefix: "handbook",
        url: "https://cms.example.com",
        collection: "docs",
        // 字段路径默认为 title / description / slug / content / updatedAt
        fields: { body: "richText" },
        // 额外的查询参数:where[...], sort
        params: { sort: "title" },
      }),
    ],
  },
});

API key 来自 PAYLOAD_API_KEY 环境变量,并以 users API-Key <key> 的形式发送;当这个 key 属于另一个启用了认证的集合时,设置 authCollection。只有已发布的文档会被导入 —— --preview 会请求草稿并以 draft: true 暂存它们。文档以 depth: 1 抓取,因此上传文件会带上自己的 URL,而相对的上传路径(/media/x.png)会相对于 url 解析。block 或 inlineBlock 节点通过引擎的 serializers 选项(以 blockType 为键)映射为 Blume 组件,前提是你直接构造 payloadSource 并把它传给 custom()。设置 serializers 会以 MDX 写出该来源的页面,让返回的组件得以渲染;放在 Markdown 文本字段里的正文则仍是 Markdown。