模板与引擎概览

阅读对象: Baklib 模板开发人员、IT 部门前端开发人员
阅读场景: 1)新开发一个站点模板;2)定制化修改已有站点模板。

模板是什么

Baklib 是一个混合 CMS 系统,系统中的每一个应用站点(包括 CMS、Wiki、Community)的前端界面都是由一个模板驱动的。一个模板构成了一个应用站点的基本构架,后端负责承接知识库内容,前端负责体验界面展示。以下是 Baklib 模板引擎流程图:
Baklib-Theme-Engine.png 模板引擎流程
你可以把模板理解为启动一个应用站点的初始化库,前端界面都在这个模板库中实现,而且前端模板完全开放,方便用户对前端界面进行任意形式的修改。
  • 模板具有固定的文件目录结构(见下文)。
  • 模板语言由开源的 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