模板与引擎概览
阅读对象: Baklib 模板开发人员、IT 部门前端开发人员
阅读场景: 1)新开发一个站点模板;2)定制化修改已有站点模板。
模板是什么
Baklib 是一个混合 CMS 系统,系统中的每一个应用站点(包括 CMS、Wiki、Community)的前端界面都是由一个模板驱动的。一个模板构成了一个应用站点的基本构架,后端负责承接知识库内容,前端负责体验界面展示。以下是 Baklib 模板引擎流程图:
模板引擎流程你可以把模板理解为启动一个应用站点的初始化库,前端界面都在这个模板库中实现,而且前端模板完全开放,方便用户对前端界面进行任意形式的修改。
- 模板具有固定的文件目录结构(见下文)。
- 模板语言由开源的 Liquid 语法实现。
- 后台输出固定的模板变量 API,供 Liquid 调用。
- 你可以将模板托管在 Baklib 默认的 git 仓库中,也可以托管在 Github / Gitlab / Gitee 等第三方存储库。
模板分类
- 公共模板: 系统内置的标准模板,在【工作台】→【市场】中查看。
- 组织模板: 组织从公共模板复制的模板,或者从外部 git 仓库导入的模板。
🙋
公共模板不可编辑(但可以复制为组织模板),组织模板可以在线编辑并发布。
如何选择并安装模板,见 选择与安装模板。
模板目录结构
主题模板使用 Liquid、HTML、CSS、JavaScript 和 JSON 构建。主题文件分为三类:
- 标记和功能 — 控制布局与功能,使用 Liquid 生成页面 HTML。
- 配套资源 — 图片、样式表、脚本、本地化文件等。
- 配置文件 — JSON 存储配置,可在主题编辑器中自定义。
模板固定的目录结构:
.
├── assets/ # 编译后的 css、js、images
├── config/
│ └── settings_schema.json
├── layout/
│ └── theme.liquid
├── locales/ # 多语言翻译
├── src/ # 原始 css/js 源文件
├── snippets/ # 可复用页面片段
├── statics/ # 静态模板页(访问路径 /s/...)
└── templates/ # 动态模板页,须含 index.liquid
| 目录 | 说明 |
|---|---|
assets/ |
存放从 src 编译后的 css、javascripts、images |
config/settings_schema.json |
模板配置与动态表单 schema |
layout/theme.liquid |
全局布局框架,其他页面模板嵌套其中 |
locales/ |
多语言翻译文件 |
src/ |
原始 css/js,配合 package.json 本地构建 |
snippets/ |
可 include 的 Liquid 片段 |
statics/ |
静态 Liquid 页,前端通过 /s/文件名 访问 |
templates/ |
动态页面模板,必须包含 index.liquid |
在线编辑器左侧会展示上述目录树,便于定位文件。动手修改模板见 模板开发 Step by Step。