# 为 Fumadocs 接入 CMS

将 Fumadocs MDX 接入 Prosefly，编辑支持的页面字段和组件，并将 meta.json 导航变更与正文一起审阅发布。

为已有的 Fumadocs 文档接入 Prosefly，就能在同一处编辑 MDX、支持的页面属性和原生页面列表，网站仍由原来的应用呈现。

Owner 或 Admin 负责仓库、Collection 和发布方式的配置。作者直接在编辑器中写作、保存草稿，不需要使用 Git 命令，也不需要为此更换网站框架或托管服务。

## 1. 确认文档来源

先找到文档定义及 MDX 文件所在目录。标准配置示例如下：

```ts title="source.config.ts"
import { defineDocs } from 'fumadocs-mdx/config';

export const docs = defineDocs({ dir: 'content/docs' });
```

这个示例对应 `content/docs/index.mdx` 和 `content/docs/getting-started.mdx` 两个页面。网站的原生 loader 应通过 `docs.toFumadocsSource()` 使用同一个文档来源。

Prosefly 也支持读取 `lib/source` 或 `src/lib/source` 中使用 `fumadocs-mdx/macro` 的内联 `defineDocs()` 定义。目录、schema 和 loader 需要能够静态读取；仅有文件名并不能确定 Collection。已有配置能正常工作时，请保留它，不必照搬其他项目的配置。

## 2. 连接仓库并确认内容集合

打开**组织设置 → 仓库**，连接 GitHub，并扫描仓库的目标分支。账号连接和 GitHub App 授权见[连接 GitHub](/docs/zh-cn/connect-github/)。

检查应用根目录、内容目录、文档 Collection 和识别到的编辑器配置。确认字段及对应的原生导航绑定，再确认内容空间。等待索引完成后，打开一篇文档。

未被自定义 schema 改写时，`defineDocs()` 提供 Title、Description、Icon、Full 等原生页面属性，其中部分字段位于 More properties 中。自定义文档集合使用自身受支持的 schema。导航元数据和翻译 JSON 文件不会被当作 MDX 文档导入。

## 3. 编辑 MDX 与支持的组件

从 **Content** 打开文档，可视化编写 Markdown、修改页面属性，并编辑受支持的 Fumadocs 提示块、标签页、步骤和折叠面板。没有可视化控件的自定义组件和表达式，可以在 Source 中编辑。

<figure>
  <video
    src="https://media.prosefly.com/_video/visual-editor-1.mp4"
    width="1920"
    height="1080"
    controls
    muted
    playsinline
    preload="metadata"
  ></video>
  <figcaption>
    通用可视化编辑器演示，画面使用 Prosefly MDX 组件。Fumadocs
    专用控件可在嵌入的编辑器示例中体验。
  </figcaption>
</figure>

Fumadocs 专用控件可以在 [Fumadocs 编辑器示例](/zh-cn/frameworks/fumadocs/#try-editor)中尝试。在线体验无需注册，刷新后会重置内容；连接了仓库的内容空间则会保存草稿，直到你明确发布。

## 4. 用 meta.json 维护页面顺序

Navigation 面板通过已确认的原生绑定，关联文档集合、loader 与支持的 `meta.json` 页面列表。上面两个示例页面可以使用这样的明确列表：

```json title="content/docs/meta.json"
{
  "title": "Documentation",
  "pages": ["index", "getting-started"]
}
```

打开 **Navigation**，调整支持的页面条目，或将未列入导航的文档放入已有的可写列表。等待导航保存完成后，将正文与受影响的当前目录、上级目录 `meta.json` 文件一起审阅。

单一文档来源、静态 loader 选项和可读取的页面数组可以支持这套流程。合并多个来源、生成 API 页面、自定义运行时插件或使用本地化 meta 文件时，可能需要仅发布内容。仅发布内容不会把页面加入导航列表。

## 5. 配置发布方式并审阅文件

Owner 或 Admin 选择内容空间的发布模式。下面是各框架共用的发布设置，Fumadocs 也使用相同的方式。

<figure>
  <img
    src="/images/screenshots/publishing/settings.png"
    alt="内容空间的 Publishing 设置，包含 Commit 和 Pull request 两种发布方式。"
    width="2880"
    height="1620"
    loading="lazy"
    decoding="async"
  />
  <figcaption>
    通用发布设置，画面展示的是 Astro 内容空间；Fumadocs 使用相同的发布模式选择。
  </figcaption>
</figure>

打开发布审阅，检查 MDX 文件路径、页面属性以及受影响的 `meta.json` 差异。Commit 会写入目标分支；Pull request 会创建包含已审阅修改的分支和 PR。使用 PR 时，先合并，再检查目标分支或网站更新。

发布后的文件由已有的 Fumadocs 应用构建和部署，Prosefly 不运行该应用。构建完成后，到网站上检查页面内容和导航。

## 导航不可编辑时检查什么

检查绑定使用的文档来源是否与网站一致，loader 选项能否静态读取，`meta.json` 列表是否可读取。在集合设置中检查识别到的配置。若在 Prosefly 之外修改了配置，重新扫描并确认更新后的绑定。网站运行时生成的导航无法通过原生绑定编辑时，可以使用[仅发布内容](/docs/zh-cn/publishing/)。

继续查看 [Fumadocs CMS 功能介绍](/zh-cn/frameworks/fumadocs/)、[产品文档使用场景](/zh-cn/use-cases/documentation/)、[可视化编辑器指南](/docs/zh-cn/editor/visual-editor/)，或参考 [Fumadocs Collections 官方文档](https://www.fumadocs.dev/docs/mdx/collections)。
