内置函数
range
返回指定规格的列表
参数:
start
:可选。默认为0,开始数值end
:必选,结束数字,不包括该数字step_by
:可选,默认1,每次增长步长
now
返回当前时间,以日期字符串或者时间戳的格式。
参数:
timestamp
:可选,默认false
,是否返回时间戳utc
:可选,默认false
,是否返回utc时间
get_random
获取一个随机数,范围区间 [start, end)
参数
start
:可选,默认0。最小值end
:最大值,范围不包括该值。
get_env
返回指定名称的系统变量。
参数:
name
: 变量名称。default
: 如果不存在,使用此默认值。
assets
输出静态资源引用。依赖模板路径下的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
:可选。内容注释。
ds
数据源指定。支持json、yaml、toml格式,加载后自动(默认根据扩展名)转换为对象。数据源可以是本地模板目录中文件或者远程Url地址。
参数:
src
:数据源地址format
:可选,通过扩展名推测。返回内容的解析格式。有效值为:json
、yaml
、toml
、csv
bearer
:可选, 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后的详细内容 | 字符串 |
post_exist
内容是否存在
参数
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_local
将远程图片、音频、视频资源本地化。
参数
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 | 错误信息 | 字符串 |
local_cfg
获取上下文语言相关的配置项。
参数
键名 | 含义 | 类型 | 可选 | 说明 |
---|---|---|---|---|
key | 键名 | 字符串 | 多级嵌套请使用 / 分割,必须以 / 开始,遵循RFC6901标准。如:/site/name |
|
default | 默认值 | 同系统常量类型 | ✔️ |
返回
配置文件 everkm.yaml
中 __cfg
下指定 key
的值。
local_cfg_exist
检测配置项是否存在
参数
键名 | 含义 | 类型 | 可选 | 说明 |
---|---|---|---|---|
key | 键名 | 字符串 | 同 local_cfg |
返回
布尔值
src
资源文件引用。如音频、视频、PDF文档等。
参数
键名 | 含义 | 类型 | 可选 | 说明 |
---|---|---|---|---|
file | 文件路径 | 字符串 | 相对路径基于所属 markdown 文件目录 |
返回
URL 地址,同时在发布时,资源文件会自动打包到发布目录。