内置函数

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类型。有效值 jscss
  • 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:可选,通过扩展名推测。返回内容的解析格式。有效值为:jsonyamltomlcsv
  • 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 地址,同时在发布时,资源文件会自动打包到发布目录。