# 模板结构
苹果cms所有模板主题包都规定放在 template
目录下,并且模板静态文件不建议放在 cms
根目录,防止安装多个模板时导致 cms
目录结构污染或静态资源覆盖,如需开发独立模板后台控制建议使用插件扩展
方式,虽然模板支持php,但是为了安全请不要将后台放程序仿在模板内,这是个高风险的做法。
TIP
必须严格遵守标准的目录结构进行创建模板,否则会前端访问导致异常,自定义代码块除外
========模板结构=======
│─template/1/ 模板1
│ ├─info.ini 模板信息文件
│ ├─ads 广告文件目录
│ ├─js js文件
│ ├─css css文件
│ ├─images 图片文件
│ └─html 模板文件目录
│ └─art 文章模块模板目录
│ └─comment 评论模块模板目录
│ └─gbook 留言本模块模板目录
│ └─index 首页模块模板目录
│ └─label 自定义页面模块模板目录
│ └─map 地图页模块模板目录
│ └─public 公共页面模板目录
│ └─rss RSS和sitemap模板目录
│ └─topic 专题模块模板目录
│ └─user 用户中心模块模板目录
│ └─vod 视频模块模板目录
│ └─plot 分集剧情模块模板目录
│ └─website 网址导航模块模板目录
│─tempalte/2/ 模板2
│─...
│─template/n/ 模板N
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# info.ini介绍
里边包含了对模板文件的简单介绍,及adsdir广告文件存放目录的设置,默认广告目录为ads
# 模板html目录
html
└─public
│ │─include.html 全站公共引入文件 引入js、css样式,还有系统JS变量
│ │─head.html 全站头部
│ │─foot.html 全站尾部
│ │─jump.html 跳转提示页模板
│ │─msg.html 错误提示页模板
│ │─paging.html 分页样式模板
│ │─digg.html 顶踩样式模板
│ │─score.html 普通评分样式模板
│ │─star.html 星星评分样式模板
│ │─verify.html 搜索验证模板
└─comment
│ │─index.html 评论页
│ │─ajax.html 评论页
└─book
│ │─index.html 留言本
│ │─report.html 报错页面
└─index/index.html 首页
└─map
│ │─rss.html rss
│ │─baidu.html 百度sitemap
│ │─google.html 谷歌sitemap
└─topic
│ │─index.html 专题首页
│ │─detail.html 专题详情页
└─art
│ │─index.html 专题首页
│ │─confirm.html 确认支付积分页面
│ │─detail.html 文章内容页
│ │─detail_pwd.html 验证密码页
│ │─rss.html 文章内容rss
│ │─search.html 文章搜索页
│ │─type.html 文章分类页
│ │─show.html 文章分类筛选页
└─vod
│ │─confirm.html 确认支付积分页面
│ │─copyright.html 版权提示和跳转
│ │─detail.html 视频内容页
│ │─detail_pwd.html 验证密码页
│ │─rss.html 视频内容rss
│ │─play.html 视频播放页
│ │─player.html 试看页面播放页
│ │─player_pwd.html 验证密码页
│ │─down.html 视频下载页
│ │─downer_pwd.html 验证密码页
│ │─search.html 视频搜索页面
│ │─type.html 视频分类页面
│ │─show.html 视频分类筛选页
│ │─plot.html 视频分集剧情列表
└─user
│ │─ajax_info.html 用户弹出层登录详情
│ │─ajax_login.html 用户弹出层登录界面
│ │─buy.html 用户中心-在线充值
│ │─cards.html 用户中心-充值卡记录
│ │─cash.html 用户中心-提现记录
│ │─downs.html 用户中心-下载记录
│ │─favs.html 用户中心-收藏记录
│ │─findpass.html 用户中心-找回密码
│ │─findpass_msg.html 用户中心-找回密码提示信息
│ │─foot.html 用户中心-公共底部
│ │─head.html 用户中心-公共头部
│ │─include.html 用户中心-公共引入文件
│ │─index.html 用户中心-首页
│ │─info.html 用户中心-个人详情
│ │─login.html 用户中心-登录页
│ │─orders.html 用户中心-在线充值记录
│ │─pay.html 用户中心-支付页
│ │─payment_weixin.html 用户中心-支付微信二维码
│ │─plays.html 用户中心-点播记录
│ │─popedom.html 用户中心-权限列表
│ │─reg.html 用户中心-注册
│ │─reward.html 用户中心-分销记录
│ │─upgrade.html 用户中心-会员升级
└─plot
│ │─uindex.html 分集剧情首页
│ │─udetail.html 分集剧情详情页
└─actor
│ │─index.html 演员首页
│ │─detail.html 演员详情页
│ │─search.html 演员网址搜索页
│ │─show.html 演员筛选页
│ │─type.html 演员分类页
└─role
│ │─index.html 角色首页
│ │─detail.html 角色详情页
│ │─show.html 角色筛选页
└─website
│ │─index.html 网址导航首页
│ │─detail.html 网址详情页
│ │─search.html 网址搜索页
│ │─show.html 网址筛选页
│ │─type.html 网址分类页
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# 包含文件
模块化开发小技巧,可以将公用
头部
、页脚
、代码块
等作为单独的 html文件,然后在其他html页面引入即可, 在当前模版文件中包含其他的模版文件使用include标签,标签用法:
WARNING
包含的模板文件中不能再使用模板布局或者模板继承。
{include file='模版文件1,模版文件2,...' /}
# 使用模版表达式
模版表达式的定义规则为:模块@控制器/操作 例如:
{include file="public/header" /} // 包含头部模版header
{include file="public/menu" /} // 包含菜单模版menu
{include file="blue/public/menu" /} // 包含blue主题下面的menu模版
2
3
可以一次包含多个模版,例如:
{include file="public/header,public/menu" /}
TIP
注意,包含模版文件并不会自动调用控制器的方法,也就是说包含的其他模版文件中的变量赋值需要在当前操作中完成。
# 使用模版文件
可以直接包含一个模版文件名(包含完整路径),例如:
{include file="../application/view/default/public/header.html" /}
路径以 项目目录/public/ 路径下为起点
# 传入参数
无论你使用什么方式包含外部模板,Include标签支持在包含文件的同时传入参数,例如,下面的例子我们在包含header模板的时候传入了title
和keywords
参数:
{include file="Public/header" title="$title" keywords="开源WEB开发框架" /}
就可以在包含的header.html
文件里面使用title
和keywords
变量,如下:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>[title]</title>
<meta name="keywords" content="[keywords]" />
</head>
2
3
4
5
上面title参数传入的是个变量$title,模板内的[title]
最终会替换成$title的值,当然$title这个变量必须要存在。
包含文件中可以再使用include标签包含别的文件,但注意不要形成A包含A,或者A包含B而B又包含A这样的死循环。
WARNING
注意:由于模板解析的特点,从入口模板开始解析,如果外部模板有所更改,模板引擎并不会重新编译模板,除非在调试模式下或者缓存已经过期。如果部署模式下修改了包含的外部模板文件后,需要把模块的缓存目录清空,否则无法生效。