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 | 摘要 | 字符串 | ||
| created_at | 创建时间 | 整数(秒级时间戳) | 旧版 date 仍可作为别名使用 | |
| updated_at | 更新时间 | 整数(秒级时间戳) | ✔️ | 别名 updated |
| draft | 是否草稿 | 布尔值 | ||
| tags | 标签集 | 字符串数组 | ||
| weight | 权重 | 整数 | ✔️ | |
| meta | 元属性 | 对象 | ✔️ | Markdown文件的FrontMatter,除本表格列举的键名外,其余作为meta的子属性。 |
post_detail
内容详情
参数
path: 必选。 内容文件路径。lazy_img: 可选。图片延迟加载。exclude_tags: 可选。内容块排除标签。多个 Tag 用空格隔开;默认含private(对应 Markdown{#private}块)。注意:当匹配 Tag 为标题时,该标题及下级标题、内容都将忽略。
返回格式
在内容元数据基础上,增加以下
| 键名 | 含义 | 类型 | 可选 | 说明 |
|---|---|---|---|---|
| content_html | 转换HTML后的详细内容 | 字符串 |
has_post
内容是否存在
参数
path: 内容路径。
posts
返回指定条件的文章列表,格式见post_meta。
默认排序规则为:weight↓, updated_at↓, title↑, created_at↑。
参数
dir: 可选。按目录筛选。tags: 可选。按标签筛选。exclude_tags: 可选。按标签排除文章;默认含private。categories: 可选。按分类筛选。recursive: 可选,默认false。按目录筛选时是否递归所有子孙目录。order_by: 可选。排序字段。有效值:default、updated_at、date(按创建时间)、title。order_direction: 可选。排序方向。有效值:asc、desc。
环境变量
EVERKM_DRAFT: 当值为1时,返回包括草稿在内的所有内容,默认0。EVERKM_PRIVATE: 预览下当值为1时,关闭系统默认的private排除(含{#private}内容块与带private标签的文章);导出不受影响。
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: 导航树文件路径。可用普通路径字符串,或用[[...]]内链语法指向目标 Markdown(与正文内链规则一致,见 链接与内链)。
返回格式
{
"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 地址,同时在发布时,资源文件会自动打包到发布目录。
nav_tree
从指定的导航文件(通常是 Markdown 文件)解析出导航树结构,适用于书籍、文档等层级导航场景。
参数
from_file: 必选。导航文件路径。支持[[...]]内链语法(见 链接与内链)。__page_path: 内部参数,当前页面路径(由模板上下文自动注入)。
返回
{
"nodes": [ // 导航树节点
{
"title": "节点标题",
"link": "链接地址",
"children": [ /* 子节点,结构同上 */ ]
}
],
"paths": [ // 当前页在导航树中的路径(面包屑)
{ "title": "标题", "url": "链接" }
]
}
nav_path
获取当前页面在导航树中的路径(面包屑),支持合并页面级面包屑。
参数
from_file: 必选。导航文件路径。支持[[...]]内链语法(见 链接与内链)。merge: 可选。页面级面包屑数组,会与导航路径合并去重。__page_path: 内部参数,当前页面路径(由模板上下文自动注入)。
返回
LinkItem 数组。
[
{ "title": "标题", "url": "链接" },
]
post_neighbors
在与 posts() 相同的过滤/排序条件下,查询指定文章的前一篇与后一篇文章 ID。
参数
id: 必选。当前文章 ID。- 其他参数同
posts函数(dir、tags、recursive、order_by等)。
返回
{
"prev_id": "前一篇文章 ID(可为 null)",
"next_id": "后一篇文章 ID(可为 null)"
}
lang
返回当前生效的语言代码。
参数
无。
返回
字符串,如 zh_CN、en_US。
asset_base_url
输出静态资源的 CDN 前缀地址。用于导出时资源引用添加 CDN 前缀。
参数
url: 可选。如果提供且以~/开头,会将~替换为 CDN 前缀后返回。
返回
CDN 前缀字符串,或转换后的 URL。