CFCF Static Export ProDEMO

风格系统:一个目录就是一套皮肤

一套风格长什么样

wp-content/themes/my-style/
├── tpl.json      # 6 类页面的 HTML 骨架
├── style.css     # 样式
└── ...           # 图片、字体、JS

tpl.json 的结构:

{
  "name": "我的风格",
  "tpl": {
    "pageHome": "<!DOCTYPE html>...",
    "pageCategory": "...",
    "pageTag": "...",
    "pageArchive": "...",
    "single": "...",
    "item": "..."
  },
  "sidebar": { "categories": "...", "archives": "...", "tags": "..." },
  "comments": { "list": "...", "entry": "...", "children": "...", "form": "..." }
}

item 是列表里单张卡片的骨架;sidebar 和 comments 是可选片段,缺省时用内置骨架。

占位符

模板里用 {{XXX}} 标记要填的值,用 {{#IF_XXX}}...{{/IF_XXX}} 做条件块。

常用的:

占位符 用在哪 含义
{{SITE_NAME}} / {{SITE_DESC}} / {{SITE_URL}} 全部 站点信息
{{MENU}} 全部 导航菜单
{{CONTENT}} 列表页 渲染好的文章卡片列表
{{TITLE}} 列表页 分类名 / 标签名 / 归档标题
{{POST_TITLE}} / {{POST_CONTENT}} / {{POST_DATE}} 单页 文章字段
{{POST_URL}} / {{POST_EXCERPT}} 条目 文章链接与摘要
{{PAGINATION_PREV}} / {{PAGINATION_NEXT}} 列表页 翻页
{{SIDEBAR_CATEGORIES}} 全部 分类列表片段

规则很简单:占位符必须和渲染器实现一致。写了未实现的占位符不会报错,但出口会被静默清空——所以改模板后最好在预览里检查一遍。

在线换肤

后台 → 模板 → 风格应用 → 选一个 → 应用。

背后只做了一件事:把 settings 表里 k='style' 的 active 改成风格 id。列表页下次请求就会用新模板渲染。

单页不会自动变。因为单页是 R2 里的静态快照,必须重建才会重新套模板。这也是为什么后台把「应用风格」和「重建全部单页」放在相邻的位置。

上传自己的风格

两种方式:

  1. 后台上传:模板 → 上传风格,选择一个目录(会递归读取文件),逐个写入 R2;
  2. 放进内置目录:把目录放到 worker/static/wp-content/themes/<id>/,npm run deploy。

内置风格会进 themes/index.json,所有部署都能看到;用户风格只存在 R2,换设备也在。

编辑模板

后台的可视化编辑器按 6 类页面分页签,支持:

  • 直接改 HTML;
  • 查看当前页面可用的占位符;
  • 保存后预览;
  • 切到 JSON 源码模式改整个文件。

保存前会把旧 tpl.json 备份为 tpl.json.bak,出问题可以回退。

发表评论

邮箱不会被公开。带 * 的为必填项。