|
从 X5 开始,我们提供了细胞模板机制,在这个机制下,我们提供了有效且安全的模板修改方式,对于熟悉简单 HTM 知识的站长来说,可以简单修改模板的内容。
这些都是新增的模板语法,细胞模板语法分为 2 类 {cell} 和 {cells}。
{cell} 语法为 "{cell file}",file 为 /template/xxx/cell/ 目录下的文件,比如 {cell forum/threadlist/subject} 为 /template/xxx/cell/forum/threadlist/subject.htm 文件。
cell 的意义是把模板语法中包含 php 逻辑相关的内容进行封装,不让用户修改,进行封装处理的一种方式
比如你可以在 cell 文件这里只写半个 {loop}
- <!--{loop $_G['forum_threadlist'] $key $thread}-->
复制代码 然后把 cell 命名为 {cell xxxx/loop_start},这样在之前写loop循环的地方直接写 {cell xxxx/loop_start} 就可以了
再比如,有一段模板细节要重复写很多次,你可以把这一段封装成 {cell xxxx/lastposter}
- <!--{if $thread['lastposter']}--><a href="{if $thread[digest] != -2}home.php?mod=space&username=$thread[lastposterenc]{else}forum.php?mod=viewthread&tid=$thread[tid]&page={echo max(1, $thread[pages]);}{/if}" c="1">$thread[lastposter]</a><!--{else}-->$_G[setting][anonymoustext]<!--{/if}-->
复制代码
然后再说 {cells},{cells} 是 {cell} 的集合,你可以把写了一堆 {cell} 的一段代码再次封装成一个文件,放到 /template/xxx/cells/ 目录下,同样命名为 {cells file} 格式
比如:{cells forum/portal/navlist} 会调用 /template/xxxx/cells/default/forum/portal/navlist.htm
- <ul class="ttp cl">
- {cell forum/portal/navlist/loop_start}
- <li{cell forum/portal/navlist/current_class}><a href="{cell forum/portal/navlist/url}" ajaxtarget="threadlist">{cell forum/portal/navlist/name}</a></li>
- {cell forum/portal/navlist/loop_end}
- </ul>
复制代码
更进一步的,如果 cells 的文件是 php 文件,这样这段 cells 的模板就支持站长在后台直接修改了。
在这个 php 中你需要写一个 class,class 名称和路径一致,定义好 “$name” 名称、 “$usage” 用法、“$cellList”所有cell列表、“$requireList”必填cell列表,然后定义一个 getDefault() 方法返回默认模板。后台模板列表的细胞模板列表中就可以直接提供给用户编辑这段模板了
下面~你自己试试吧!
从此,重复写的一些内容,你不用管代码了,完全黑盒子一样调用cell就行
比如开发模板时模板头部的一堆重复内容不用再复制过来了,直接引用下面3个cells:
{cells common/header/meta}
{cells common/header/css}
{cells common/header/js}
就够了,这样官方如果有改动,第三方模板自然就变了
还有就是第三方登录的:
{cells account/icons account/icons}
所有做登录的地方引用下就可以了。不用在乎官方自己是怎么写的,只需要引用这段细胞模板代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|