> 模板文件一定要小写下划线,如 `list_pubu.html`
你可以给你每一个模板文件增加一个`json`配置文件,用于描述这个模板文件;配置文件和模板文件名是同名的,只是后缀为 json,如`simpleboot3/portal/index.html`模板文件的配置文件就是`simpleboot3/portal/index.json`;
一个简单的配置文件内容如下:
```
{
"name": "门户应用首页", /*模板文件名*/
"action": "portal/Index/index",/*模板文件对应的操作*/
"description": "门户应用首页模板文件",/*模板文件描述*/
"order": 5.0,/*模板文件在后台模板文件列表的排序,小在前*/
"more": {} /*模板文件扩展配置, 一般有vars,widgets两个属性*/
}
```
> 更改模板配置文件后,一定记得在后台更新模板
> 模板安装时检查模板文件和模板配置文件是否一一对应,如果不对应是不会安装此模板文件的
一个包含模板变量和控件的配置文件内容如下:
```
{
"name": "首页",
"action": "portal/Index/index",
"description": "首页模板文件",
"order": 6.0,
"more": {
"vars": {
"varName1": {
"title": "测试 text",
"value": "1",
"type": "text",
"tip": "这是一个text",
"rule": {
"require": true
}
}
},
"widgets": {
"widgetName1": {
"title": "所有组件演示",
"name": "all_widget",
"display": "1",
"vars": {
"text": {
"title": "测试 text",
"value": "1",
"type": "text",
"tip": "这是一个text",
"rule": {
"require": true
}
}
}
}
}
}
}
```
添加好模板配置文件,在后台模板管理里,找到你的模板,就可以开发设计模板页面了。设计的目的主要是更改你在配置中设置的变量和控件的值。
a.找到你的当前模板 simpleboot3
![](https://box.kancloud.cn/bf12407171953c79ea0ad978a6b846ca_3356x1060.png)
b.找到你的模板文件,比如首页模板文件,点设计
![](https://box.kancloud.cn/4b4194e0101299d967ad6ed285ce43a3_3208x1418.png)
c.模板文件设计界面,可视化编辑数据
![](https://box.kancloud.cn/816fca2b66601a7ac175574dbd2b075b_3194x1586.png)
d.保存后到前台刷新相应的模板界面,看界面变化
至于如何在模板中获取模板设计时更改的模板变量呢?请继续往下研究~
## 模板变量
一个模板配置文件可以添加 n多个模板变量,模板变量在模板扩展属性 `more.vars` 里
`varName1`键值就是模板变量名,支持多种类型(text,textarea...)的模板变量,具体请看[模板变量类型](模板变量类型.md);不同的变量类型在后台设置时表现形式不同;
一个常用的`text`类型的变量配置格式如下:
```
"vars": {
"varName1": {
"title": "测试 text", /*后台设置时 input 的 label*/
"value": "1", /*变量默认值*/
"type": "text", /*变量类型*/
"tip": "这是一个text", /*后台设置时 input 的 帮助提示*/
"rule": { /*后台设置时 input 的 验证规则*/
"require": true
}
}
}
```
## 在模板中输出模板变量
在前台模板中,我们把所有模板变量放在`$theme_vars`中,`$theme_vars`就是一个数组,要输出或使用模板变量只要把它当成`$theme_vars`中的值就可以了,如:
```
{$theme_vars.varName1|default=''}
```
```
<php>
echo $theme_vars['varName1']; //记得要判断一下这个变量是否存在!
</php>
```
## 模板控件
模板控件就是模板里一个显示块,我们通过模板控件可以把一个模板分成 n多个模块,通过设置控件属性可以设置是否显示等,一个模板配置文件可以添加 n多个模板控件,模板控件在模板扩展属性 `more.widgets` 里
`widgetName1`键值就是模板控件名.
一个基本的控件配置格式如下:
```
"widgets": {
"widgetName1": {
"title": "所有组件演示", /*模板控件标题,用于后台设置*/
"display": "1", /*控件是否显示,1:显示;0:不显示*/
"vars": {/*模板控件变量,和模板变量一样*/
"text": {
"title": "测试 text",
"value": "1",
"type": "text",
"tip": "这是一个text",
"rule": {
"require": true
}
}
}
}
}
```
## 在模板中使用模板控件
在前台模板中,我们把所有模板控件放在`$theme_widgets`中,`$theme_widgets`就是一个数组,要使用模板控件只要把它当成`$theme_widgets`中的值就可以了,如:
```
<php>
print_r($theme_widgets['widgetName1']);//记得要判断一下这个控件是否存在!
</php>
```
同时我们也增加一个 `widget`标签
```
<widget name="widgetName1">
<!--输出控件标题-->
{$widget.title}
<!--调用控件的变量-->
{$widget.vars.varName1|default=''}
或:
<php>
echo $widget['vars']['varName1'];//记得要判断一下这个变量是否存在!
</php>
</widget>
```
如果是公共模板文件,应该加上`is_public`属性,并且设置值为` 1 `,这时这个配置文件里的变量和控件变成公共变量和控件,在每个页面都加载,如`simpleboot3/public/config.html`的配置文件`simpleboot3/public/config.json`
```
{
"name": "模板全局配置",
"action": "public/Config",
"description": "模板全局配置文件",
"is_public": "1",/*默认值为0,开启后会在每个页面加载这个配置*/
"order": 0.0,
"more": {
"vars": {
"enable_mobile": {
"title": "手机注册",
"value": "ThinkCMF",
"type": "select",
"value": 1,
"options": {
"1": "开启",
"0": "关闭"
},
"tip": ""
}
}
}
}
```
- 序言
- 基础
- 安装ThinkCMF
- 为了更爽
- 目录结构
- 入口文件
- 第三方库
- 开发规范
- 数据库规范
- 调试模式
- URL访问
- 应用
- 配置
- 路由
- 控制器
- 控制器定义
- 控制器模板赋值
- 控制器模板渲染
- 前台控制器
- 前台用户控制器
- 后台控制器
- 跳转,AJAX返回和重定向
- URL生成
- 请求
- 请求信息
- 输入变量
- 请求类型
- 获取请求头信息
- 伪静态
- 更多
- 系统函数
- cmf_auth_check 用户权限检查
- cmf_captcha_check图片验证码验证
- cmf_check_mobile 检查手机号
- cmf_check_user_action 用户访问控制
- cmf_check_verification_code 数字验证码检查
- cmf_clear_cache清空系统缓存
- cmf_clear_verification_code 清除数字验证码
- cmf_compare_password 用户密码比较
- cmf_current_lang 判断当前语言包
- cmf_generate_user_token生成用户token
- cmf_get_admin_style 获取后台风格
- cmf_get_content_images 获取HTML图片
- cmf_get_current_admin_id 登录管理员ID
- cmf_get_current_admin_theme获取当前后台模板
- cmf_get_current_theme获取前台当前模板
- cmf_get_current_user 获取登录用户信息
- cmf_get_current_user_id 登录用户ID
- cmf_get_domain返回带协议的域名
- cmf_get_file_download_url 获取文件下载链接
- cmf_get_file_extension 获取文件扩展名
- cmf_get_image_url 获取图片 URL
- cmf_get_option 获取系统配置
- cmf_get_plugin_class 获取插件类名
- cmf_get_plugin_config获取插件配置
- cmf_get_root 网站根目录
- cmf_get_site_info 获取网站信息
- cmf_get_theme_path获取前台模板根目录
- cmf_get_upload_setting获取上传配置
- cmf_get_user_avatar_url 获取用户头像URL
- cmf_get_verification_code 生成数字验证码
- cmf_is_android 判断是否为安卓手机
- cmf_is_ios 判断是否为ios访问
- cmf_is_ipad 判断是否为ipad访问
- cmf_is_iphone 判断是否为iphone访问
- cmf_is_mobile 判断是否为手机
- cmf_is_user_login 判断用户是否登录
- cmf_is_wechat 判断是否为微信
- cmf_password 密码加密
- cmf_plugin_url 插件URL生成
- cmf_random_string随机字符串生成
- cmf_replace_content_file_url 替换编辑器文件地址
- cmf_scan_dir 替代scan_dir的方法
- cmf_send_email 发送邮件
- cmf_set_dynamic_config 设置动态配置
- cmf_set_option 设置系统配置
- cmf_split_sql 切分SQL文件
- cmf_update_current_user 更新当前用户信息
- cmf_url_encode 生成base64的url
- cmf_verification_code_log 验证码发送日志
- cmf_version获取版本号
- get_client_ip 获取客户端IP地址
- hook 添加钩子
- 数据库
- 数据库配置
- 添加数据
- 更新数据
- 查询数据
- 删除数据
- 事务操作
- 更多数据库操作
- 模型
- 模型定义
- 添加数据
- 更新数据
- 查询数据
- 删除数据
- 应用
- 应用的概念
- 应用开发流程
- 导航共享
- 几个重要基类
- 后台菜单注解
- 用户操作配置
- URL 规则配置
- 应用第三方库
- API
- 规范
- 状态码说明
- 版本号
- 资源控制器模板
- 成功返回
- 错误返回
- API路由
- API基类控制器
- API应用开发流程
- API第三方库
- 模板
- 模板常量
- 模板标签
- 变量输出
- 系统变量
- 请求参数
- 使用函数
- 使用默认值
- 使用运算符
- 三元运算
- 原样输出
- 模板注释
- 模板目录
- 包含文件
- 模板布局
- 模板继承
- 网站信息
- 内置标签
- 循环输出标签
- 比较标签
- 条件判断
- 标签嵌套
- 原生PHP
- 定义标签
- CMF标签
- 导航标签
- 子导航标签
- 验证码标签
- 幻灯片标签
- 钩子标签
- 友情链接标签
- 分页标签
- 傻瓜式模板
- 什么是傻瓜式模板
- 模板描述文件
- 模板文件配置
- 模板变量类型
- 模板变量数据源
- 导航模板数据源
- 导航菜单模板数据源
- 幻灯片模板数据源
- 模板切换
- 插件
- 插件钩子
- 核心钩子
- 前台模板钩子
- 后台钩子
- send_mobile_verification_code
- comment
- guestbook
- admin_dashboard
- switch_theme
- admin_login
- admin_init
- home_init
- 插件类主文件
- 插件开发流程
- 插件配置
- 插件控制器
- 插件后台管理控制器
- 插件后台菜单
- 插件视图
- 插件数据库模型
- 插件多语言
- 插件API控制器
- 插件第三方库
- 插件URL生成
- 前端
- Wind.js
- 前端组件
- js-ajax-form
- js-ajax-delete
- js-ajax-dialog-btn
- js-count-btn
- js-date
- js-datetime
- js-bootstrap-date
- js-bootstrap-datetime
- 专题
- 缓存
- Session
- Cookie
- 分页
- 验证码
- 文件上传
- 第三方扩展
- Swoole
- 附录
- 升级日志
- 升级指导