# 模板结构

苹果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
1
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       网址分类页
1
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,...' /}
1

# 使用模版表达式

模版表达式的定义规则为:模块@控制器/操作 例如:

{include file="public/header" /} // 包含头部模版header
{include file="public/menu" /} // 包含菜单模版menu
{include file="blue/public/menu" /} // 包含blue主题下面的menu模版
1
2
3

可以一次包含多个模版,例如:

{include file="public/header,public/menu" /}
1

TIP

注意,包含模版文件并不会自动调用控制器的方法,也就是说包含的其他模版文件中的变量赋值需要在当前操作中完成。

# 使用模版文件

可以直接包含一个模版文件名(包含完整路径),例如:

{include file="../application/view/default/public/header.html" /}
1

路径以 项目目录/public/ 路径下为起点

# 传入参数

无论你使用什么方式包含外部模板,Include标签支持在包含文件的同时传入参数,例如,下面的例子我们在包含header模板的时候传入了titlekeywords参数:

{include file="Public/header" title="$title" keywords="开源WEB开发框架" /}
1

就可以在包含的header.html文件里面使用titlekeywords变量,如下:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>[title]</title>
<meta name="keywords" content="[keywords]" />
</head>
1
2
3
4
5

上面title参数传入的是个变量$title,模板内的[title]最终会替换成$title的值,当然$title这个变量必须要存在。 包含文件中可以再使用include标签包含别的文件,但注意不要形成A包含A,或者A包含B而B又包含A这样的死循环。

WARNING

注意:由于模板解析的特点,从入口模板开始解析,如果外部模板有所更改,模板引擎并不会重新编译模板,除非在调试模式下或者缓存已经过期。如果部署模式下修改了包含的外部模板文件后,需要把模块的缓存目录清空,否则无法生效。