模板变量 Markdown 导出配置 .md 格式

巴克励步

发布于:2026-04-08

Baklib 模板目前都支持 .md 格式的变体,也就说当你浏览任何页面,都可以在 URL 后面添加 .md 从而打开 MD 格式的文本。
👋
例如当前页面的链接为: https://dev.baklib.cn/faqs/267588
则 MD 格式链接为: https://dev.baklib.cn/faqs/267588.md

配置方式

1. 模板 Schema 配置

在模板 JSON Schema 中,通过添加 to_markdown: true 标记需要导出的变量:
{
 "id": "content",
 "type": "richtext",
 "label": "正文内容",
 "to_markdown": true
}

2. 批量配置示例

{
 "settings": [
 {
 "id": "title",
 "type": "text",
 "label": "标题",
 "to_markdown": true
 },
 {
 "id": "summary",
 "type": "textarea",
 "label": "摘要",
 "to_markdown": true
 },
 {
 "id": "body",
 "type": "richtext",
 "label": "正文",
 "to_markdown": true
 },
 {
 "id": "cover_image",
 "type": "image_picker",
 "label": "封面图",
 "to_markdown": true
 }
 ]
}

支持的字段类型映射

类型分类
具体类型
Markdown 输出行为
富文本类型 (RICH_TYPES)
richtext, html
通过 FragmentValue.to_markdown 转换
纯文本类型 (PLAIN_TEXT_TYPES)
text, textarea, paragraph
直接输出字符串
代码类型 (CODE_TYPES)
code
包裹为代码块,支持 language 指定语法
选项类型 (CHOICE_TYPES)
select, radio, checkbox, link
直接输出值
简单值类型 (SIMPLE_VALUE_TYPES)
number, range, date, color, font_picker, color_background
直接输出字符串
资源选择器 (PICKER_TYPES)
image_picker, file_picker, video_picker, dam_picker
生成 20 分钟有效期的前端访问地址
标签选择器 (TAG_PICKER_TYPE)
tag_picker
输出标签名称列表

输出格式

标准段落格式

每个启用了 to_markdown: true 的变量输出为:
## {label}

{转换后的内容}
其中 label 优先取 setting["label"],否则使用 id.humanize

各类型详细输出示例

富文本类型

输入 HTML 内容:
<p>这是一段<strong>加粗</strong>的文本。</p>
输出:
## 正文

这是一段**加粗**的文本。

代码类型

Schema 配置:
{
 "id": "script",
 "type": "code",
 "label": "脚本代码",
 "language": "javascript",
 "to_markdown": true
}
输出:
## 脚本代码

```javascript
const x = 1;

#### 图片选择器

输出 Markdown 图片语法:
```markdown
## 封面图

![图片名称](https://portal.example.com/signed-url?expires=...)

文件/视频选择器

仅输出 URL 字符串(无 Markdown 包裹):
## 附件

https://portal.example.com/signed-url?expires=...

标签选择器

根据标签 IID 输出名称列表:
## 标签

技术, 文档, 教程

资源链接有效期配置

资源选择器生成的 URL 有效期默认为 20 分钟,可通过修改常量调整:
# app/models/page/to_markdown.rb
PORTAL_URL_EXPIRES_IN = 20.minutes
提交反馈