展示卡片 (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 保存在 __dcard 目录中。

引用资源文件

通常情况下,dcard 上下文静态内容就可以满足,但在一些特殊场景下,例如,引用当前目录的音频文件时,需要特殊处理。否则被引用的资源不会在发布时打包,因此 everkm-publish 支持在 dcard 上下文中使用常规的模板标记,这样以上下文件就更强大了。

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

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

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

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

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

文件路径可以使用绝对路径或相对路径。

Manifest 配置

# 名称,必须
name: bilibili2

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

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