展示卡片 (dcard)

Markdown 支持格式有限,为了满足某些场景的特定需求,道盒 Markdown 支持 dcard 渲染。 使用方式为,在 markdown 文件中,使用 yaml/json 代码片段,提供 dcard 名称以及相关的属性, 最后在渲染时,everkm-publish 会使用提供的上下文渲染出最终的 HTML。

格式

Markdown 文件中输入如下:

```yaml dcard/bilibili
vid: video_id
```

上述内容片段声明使用 bilibili 的 dcard, 格式同代码块,但上下文参数格式仅支持 json, yaml, 其内容在渲染dcard模板时,作为模板参数传递。

dcard 模板文件名为 <dcard_name>.dcard.html,manifest文件名为 <dcard_name>.dcard.yaml。 同一 dcard 资源需要放在同一目录下。 主题自有的 dcard 保存在模板目录下的任意子目录中,项目 dcard 保存在 work_dir 或者 dev_dir 下的 dcard 目录中任意子目录。

引用资源文件

通常情况下,dcard 上下文静态内容就可以满足,但在一些特殊场景下,例如,引用当前目录的音频文件时, 它就无法像预期的那样工作,因为被引用的资源无法被识别,所以不会在发布时被打包,更不会在打包时自动转换为目标 URL,因此 everkm-publish 支持在 dcard 上下文中使用模板,如此使用场景就更灵活了。

例如,我们需要渲染出一段音频播放。假如模板中已经提供了 audio dcard, 使用时需要通过 src 参数指定音频文件地址。 我们还期望,引用的音频文件在导出发布时一起自动导出,并且转换好发布后的 URL。 这里我们可以使用 src 函数完成, 代码如下,注意引号的使用:

```yaml dcard/audio
src: "{{src(text='002 Home.mp3')}}"
```

因为在 dcard 中引用资源文件属于高频操作,所以 everkm-publish 提供了语法糖,如上面的代码等同于下面代码块:

```yaml dcard/audio
src: "$src:002 Home.mp3"
```

在文件路径前使用 $src: 前缀,处理时会自动解析为对应模板。

文件路径可以使用绝对路径或相对路径,绝对路径使用 content/post/[lang] 作为根目录,相对路径基于所属 markdown 文件的目录。

Manifest 配置

# 名称,必须
name: bilibili2

# 静态资源,可选
assets:
  # 需要注入到页面的资源
  inject: 
    - assets/b.css
    - assets/a.js
  # 需要发布的资源,
  files:
    - assets/**/*.{css,js}

注意:资源路径必须使用基于当前 manifest 目录的相对路径。