展示卡片 (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 目录的相对路径。