内置函数
range
返回指定规格的列表
参数:
start:可选。默认为0,开始数值end:必选,结束数字,不包括该数字step_by:可选,默认1,每次增长步长
now
返回当前时间,以日期字符串或者时间戳的格式。
参数:
timestamp:可选,默认false,是否返回时间戳utc:可选,默认false,是否返回utc时间
random
获取一个随机数,范围区间 [start, end)
参数
start:可选,默认0。最小值end:最大值,范围不包括该值。
env
返回指定名称的系统变量。
参数:
name: 变量名称。default: 如果不存在,使用此默认值。
asset
输出静态资源引用。依赖模板路径下的assets-manifest.json,通常由webpack插件
webpack-assets-manifest
输出,插件配置如下:
new WebpackAssetsManifest({
publicPath: true,
entrypoints: true,
output: 'assets-manifest.json',
}),
参数:
type:assets类型。有效值js或css。section:入口(entrypoint)名称。cdn:可选。该资源优先使用的CDN前缀。注意仅当非绝对路径才会附加CDN前缀。
imgsrc
获取打包后的图片地址。数据来源于 img-manifest.json 文件,常用于 Webpack 打包资源后输出的 Manifest 文件。
{# 显式使用函数 #}
<img src="{{ imgsrc(file="a/b/logo.png") }}" />
{# 上面函数的语法糖,自动转换以"@"打头格式的地址。#}
<img src="@a/b/logo.png" />
参数:
file: 文件路径。
当存在以语言代码为文件名后缀文件时,将被优先采用。
例如, 当启动参数设置 --lang=en_US
img-manifest.json
{
"assets/img/arrow-down.png": "assets/img/arrow-down.9685e4b1.png",
"assets/img/arrow-down.en_US.png": "assets/img/arrow-down.9685e4b1.en_US.png"
}
模板
<img src="{{img_src(file='assets/img/arrow-down.png')}}" />
输出
<img src="assets/img/arrow-down.9685e4b1.en_US.png" />
t
多语言输出。
<div class="">{{ t(text="meta description", memo="hello world") }}</div>
<div class="">{{ t(text="memo/body2 ") }}</div>
<script>var msg = "hello {{ __T_my name__ }}";</script>
语法糖:T__label,多用于js字符串中,label为语言关键字。
text:语言内容。memo:可选。内容注释。
data
数据源指定。支持json、yaml、toml格式,加载后自动(默认根据扩展名)转换为对象。数据源可以是本地模板目录中文件或者远程Url地址。
参数:
src:数据源地址format:可选,通过扩展名推测。返回内容的解析格式。有效值为:json、yaml、toml、csvbearer:可选, OAuth Token。post:可选, 默认false,是否为POST请求。json_payload:可选, POST请求发送的JSON数据对象。csv_delimiter:可选, CSV分隔符,默认为,。cache_secs:可选, 缓存的时间,单位为秒。默认不缓存。
script
Javascript脚本扩展。脚本返回值可为普通数据类型或者json对象。示例如下:
{% set hi_js = `
function sayHello(name){
return `hello ${name}`
}
sayHello(args.name)
` %}
<p>{{script(content=hi_js, name=file.name)}}</p>
参数:
content:脚本内容。file:脚本文件名。脚本需放在模板目录_everkm/_js/中。- 其他参数键值对,转换为JS全局变量
args的属性。
content, file 参数二选一。
base_url
输出导出页面的URL前缀,多用于导出后部署至二级目录。
post_meta
返回指定内容的元数据。
参数
path: 内容文件路径。
返回格式
| 键名 | 含义 | 类型 | 可选 | 说明 |
|---|---|---|---|---|
| id | ID | 字符串 | 常用于参数传递。 | |
| title | 标题 | 字符串 | ||
| dir | 目录 | 字符串 | 两端有字符 / | |
| path | 文件路径 | 字符串 | ||
| url_path | 前端URL路径 | 字符串 | ||
| slug | 文件Slug | 字符串 | 默认为标题URL编码 | |
| summary | 摘要 | 字符串 | ||
| date | 创建时间 | 时间字符串 | ||
| update_at | 更新时间 | 时间字符串 | ✔️ | |
| draft | 是否草稿 | 布尔值 | ||
| tags | 标签集 | 字符串数组 | ||
| weight | 权重 | 整数 | ✔️ | |
| meta | 元属性 | 对象 | ✔️ | Markdown文件的FrontMatter,除本表格列举的键名外,其余作为meta的子属性。 |
post_detail
内容详情
参数
path: 必选。 内容文件路径。lazy_img: 可选。图片延迟加载。exclude_tags: 可选。内容块排除标签。多个Tag用空格隔开。注意:当匹配Tag为标题时,该标题及下级标题、内容都将忽略。
返回格式
在内容元数据基础上,增加以下
| 键名 | 含义 | 类型 | 可选 | 说明 |
|---|---|---|---|---|
| content_html | 转换HTML后的详细内容 | 字符串 |
has_post
内容是否存在
参数
path: 内容路径。
posts
返回指定条件的文章列表,格式见post_meta。
列表排序规则为:weight↓, update_at|date↓, title↑, date↓。
参数
dir: 可选。按目录筛选。tags: 可选。按标签筛选。recursive: 可选,默认false。按目录筛选时是否递归所有子孙目录。
环境变量
EVERKM_DRAFT: 当值为1时,返回包括草稿在内的所有内容,默认0。
posts_tag_list
返回标签和其对应文件数量的列表。
参数
| 参数名 | 含义 | 类型 | 可选 | 说明 |
|---|---|---|---|---|
| dir | 目录 | 字符串 | ✔️ | / 打头 |
返回
{
"<tag>": 1,
}
posts_caregory_list
返回分类和其对应文件数量的列表。
参数
| 参数名 | 含义 | 类型 | 可选 | 说明 |
|---|---|---|---|---|
| dir | 目录 | 字符串 | ✔️ | / 打头 |
返回
{
"<category>": 1,
}
posts_directory_list
获取指定条件的目录集合。
参数
| 参数名 | 含义 | 类型 | 可选 | 说明 |
|---|---|---|---|---|
| dir | 目录 | 字符串 | ✔️ | / 打头 |
| max_depth | 最大层级 | 正整数 | ✔️ | / 为1级 |
| prefix | 限定前缀 | 字符串 | ✔️ | 以 / 打头 |
返回
字符串数组。按字典顺序排列。
[
"/blog/2013/",
"/docs/",
]
media_remote
将远程图片、音频、视频资源本地化。
参数
url: 远程地址
返回
对象类型。
| 键名 | 含义 | 类型 | 可选 | 说明 |
|---|---|---|---|---|
| url | 本地地址 | 字符串 |
media_dimension
返回图片的尺寸。
参数
file: 文件绝对路径
返回格式
对象类型。
| 键名 | 含义 | 类型 | 可选 | 说明 |
|---|---|---|---|---|
| width | 宽度 | 数字 | ||
| height | 高度 | 数字 |
nav_indicator
返回当前页面在导航树内的前后项。
参数
from_file: 导航树文件绝对路径
返回格式
{
"prev": { // 可选
"title": "标题",
"link": "链接"
},
"next": { // 可选
"title": "标题",
"link": "链接"
},
}
page_query
修改当前页查询参数并输出。
参数
所有输入参数覆盖更新旧的同名参数。
返回
修改后的参数键值对,application/x-www-form-urlencoded 格式。
oops
终止模板解析,并展示错误信息。
参数
| 键名 | 含义 | 类型 | 可选 | 说明 |
|---|---|---|---|---|
| message | 错误信息 | 字符串 |
config
获取上下文语言相关的配置项。
参数
| 键名 | 含义 | 类型 | 可选 | 说明 |
|---|---|---|---|---|
| key | 键名 | 字符串 | 多级嵌套请使用 / 分割,必须以 / 开始,遵循RFC6901标准。如:/site/name | |
| default | 默认值 | 同系统常量类型 | ✔️ |
返回
配置文件 everkm.yaml 中 __config 下指定 key 的值。
has_config
检测配置项是否存在
参数
| 键名 | 含义 | 类型 | 可选 | 说明 |
|---|---|---|---|---|
| key | 键名 | 字符串 | 同 config |
返回
布尔值
media
资源文件引用。如音频、视频、PDF文档等。
参数
| 键名 | 含义 | 类型 | 可选 | 说明 |
|---|---|---|---|---|
| file | 文件路径 | 字符串 | 相对路径基于所属 markdown 文件目录 |
返回
URL 地址,同时在发布时,资源文件会自动打包到发布目录。