模板开发 3
更新于 2026-10-13
模板开发 · 入门
一、主题目录规范
一个主题就是 theme/ 下的一个文件夹:
theme/mytheme/
├── theme.json 主题清单(必需)
├── preview.png 预览图(可选)
├── index/ 首页
│ └── index.html
├── list/ 列表页
│ ├── index.html 通用列表
│ └── product.html 分类专属列表
├── detail/ 详情页
│ └── index.html
├── single/ 单页
│ └── index.html
├── form/ 表单页
│ └── index.html
├── tag/ 标签页
│ └── index.html
├── search/ 搜索页
│ └── index.html
├── error/ 错误页
│ ├── 404.html
│ └── 500.html
└── common/ 公共片段
├── header.html
└── footer.html
静态资源放在 public/theme/mytheme/static/:
public/theme/mytheme/static/
├── css/style.css
├── js/main.js
└── images/
二、theme.json
{
"name": "mytheme",
"title": "我的主题",
"version": "1.0.0",
"author": "你的名字",
"description": "一句话描述",
"responsive": true,
"settings": [
{ "name": "primary_color", "title": "主色调", "type": "color", "default": "#4f46e5" },
{ "name": "show_banner", "title": "显示首屏大图", "type": "switch", "default": "1" }
]
}
s settings 会在后台「模板管理 → 主题设置」中自动渲染成表单。
三、模板分层与回退
程序按以下顺序查找模板,命中即用:
1. list/product.html 栏目专属模板(栏目里指定,或按模型名匹配)
2. list/index.html 通用列表模板
3. 出错 提示「模板文件不存在」
四、公共片段
common/header.html:
<!DOCTYPE html>
<html lang="{$siteLang}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{$seoTitle}</title>
<meta name="keywords" content="{$seoKeywords}">
<meta name="description" content="{$seoDescription}">
{$hreflangHtml|raw}
<link rel="stylesheet" href="{:theme_static('css/style.css')}">
</head>
<body>
common/footer.html:
<footer class="site-footer">
<p>{$siteCopyright}</p>
</footer>
<script src="{:theme_static('js/main.js')}"></script>
</body>
</html>
在具体模板中引入:
{include file="common/header" /}
<main> ... </main>
{include file="common/footer" /}
五、你的第一个主题
- 复制
theme/default为theme/mytheme
- 修改
theme.json里的name为mytheme
- 后台 → 模板管理 → 启用「我的主题」
- 改
public/theme/mytheme/static/css/style.css调整外观
后台改完 CSS/JS 不需要手动清缓存:
cms_asset()会按文件 mtime 自动附加版本号。
六、模板调试
- 模板中可直接写
{:dump($cat)}查看变量结构(生产环境请移除)
- 报错信息在
.env中开启APP_DEBUG = true后可见
- 「模板文件不存在」几乎都是模板名没以
/开头,或目录名拼错
七、打包发布到应用市场
主题开发完成后,theme.json 需位于包根且含 name / title / version 三个必填字段,
包内需有首页模板。完整检测项、打包命令与常见驳回原因见
安装包规范与打包,从认证到上架的流程见
开发者中心与上架流程。