防未病平台@D1V1网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 93163|回复: 673

Discuz! X模板中的一些基本语法

[复制链接]
 成长值: 50445

1955

主题

1955

主题

1955

主题

总管

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
192931

社区QQ达人最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

发表于 2011-6-23 11:21:39 | 显示全部楼层 |阅读模式
很多朋友对Discuz! X的模板都很感兴趣,特别是Discuz! X独有的模板机制,相信大家都非常希望能够看懂它。下面我讲解一下我经常用到的模板语法,希望大家看完之后对Discuz! X的模板有一个详细的了解。
首先我们要向大家介绍的是Discuz! X的模板解析流程。
Discuz! X模板的模块化很强,具有相同功能的模块基本上都已经统一管理了。所有的模板文件都是放置在./template目录下,并且基本上都是在./source/module下的模块处理文件中被引入的。
一个模板文件在引入之前,通常会通过./source/module下的相应模块处理程序,模板所要显示的数据,之后才会引入他要显示的模板文件,在程序文件中是这样引入模板的:
include template(‘forum/forumdisplay’);
下面我就以discuz比较典型的论坛首页作为讲解,为大家剖析一下这个模板的显示流程:
论坛首页是通过./source/module/forum_index.php 中的includetemplate(‘diy:forum/discuz:’.$gid);引入的。
下面我们就来详细的看一看template是怎么神奇把dz的模板文件解析成我们前台看到的html文件的,我们找到函数的核心文件function_core.php,在那里我们能看到template函数,这段代码很长,我就不再这里黏贴了。
这个函数的主要作用就是对传入的模板文件进行条件判断,并检查是否更新缓存文件。至于具体的作用,你可以自己去看,我这里就不做详解了。
下面我们主要关注的是./source/ class /class_template.php这个类文件。我们的模板文件都是被他解析,然后写入缓存的。我们前台显示的也都是他解析过后的缓存文件。
这里我只介绍几中比较常用的模板语法,和大家共同学习一下。
1.
<!–{subtemplate common/header}–>
在discuz的如果文件模板中,我们通常都会看到形如这样的加载头部文件的方式。以前不太了解discuz模板机制的时候,也经常搞不清楚<!–{subtemplate }–>和<!–{templater}–>,后来看了看程序才明白。<!–{subtemplate }–>后面的模板文件通常都是被包含在其他模板文件中的子体。这样在解析模板的时候,程序就会判断<!–{subtemplate }–>所引入的模板会被再一次解析一遍然后再和入口模板拼合,组成一个完整的模板。也就是说,如果我们添加的模板是在别的模板中被调用的话我们需要以<!–{subtemplate 模板名称}–>的方式引入进来。
2.
<!–{ad/headerbanner/wpa_h}–>
论坛上也经常碰到有人问这个标签的含义,这里我就告诉一下大家,这个标签的意思是广告。我们后台添加的广告都是显示在这个标签被解析后的代码中。ad代表广告标签headerbanner为此广告的标识符。Wp a_h为插入html后此广告的样式。
3.
<!–{if $_G['uid']}–><!–{/if}–>
DiscuzX的判断标签,如果条件成立,那么包括在这个标签中的html代码将会被显示。示例中如果用户的uid存在的话。这里面的代码就会被显示,如果为游客没有uid,那么对应的里面的html代码将不会再页面中显示出来,即使解析出来,也不会被显示。
而且if 后面的判断条件也可以用表达式的计算结果作为值,进行判断。比如
<!–{if !empty($_G['cache']['heats']['message'])}–>,<!–{ifempty($gid) && $announcements}–>
这个标签的算是模板中最常用的标签了,他同样支持形如我们php中常用的if(){}else{},或者if(){}elseif(判断条件){}else{}.他们对应的标签discuz标签分别为:<!–{if 判断条件代码}–> 显示的html<!–{else}–>若果条件不成立显示的代码<!–{/if}–>和<!–{if 判断条件代码}–> 显示的html<!–{elseif 判断条件代码}–>若果条件不成立显示的代码<!–{else}–>显示的代码<!–{/if}–>
4.
<!–{loop $catlist $key$cat}–>
循环标签,这是一个使用频率很高的标签,他会实现php中foreach的函数效果,对一组数组数据进行循环输出。如果你在php中组装好了一个要用到的数组,那么loop将是您最佳的显示标签。
5.
<!–{eval $forum=$forumlist[$forumid];}–>
以eval开始的标签,将直接将后面的代码作为php执行语句原样输出。
一般我们常用的标签就这几种。其他的话一般都不太常用。如果你有兴趣可以自己去研究一下./source/ class /class_template.php中的解析函数:function
parse_template();这里面包含了所有的标签,并且是如何被解析的。有兴趣的同学可以研究一下。
老王童站长@防未病产业互联网平台 QQ303770168,微信wx303770168
发表于 2011-7-13 14:53:33 | 显示全部楼层
有空一起交流一下  
防未病了吗?赶紧查http://fangweibing.D1V1.com
回复

使用道具 举报

3

主题

3

主题

3

主题

抬杠会员

Rank: 6Rank: 6

积分
651932
发表于 2011-7-13 15:00:04 | 显示全部楼层
太棒了!  
fwb产业互联网平台,就是好啊, 就是号!
回复

使用道具 举报

3

主题

3

主题

3

主题

抬杠会员

Rank: 6Rank: 6

积分
651932
发表于 2011-7-13 19:00:45 | 显示全部楼层
顶也~  
fwb产业互联网平台,就是好啊, 就是号!
回复

使用道具 举报

发表于 2011-7-13 20:00:07 | 显示全部楼层
太棒了!  
防未病了吗?赶紧查http://fangweibing.D1V1.com
回复

使用道具 举报

3

主题

3

主题

3

主题

抬杠会员

Rank: 6Rank: 6

积分
651932
发表于 2011-7-14 00:01:17 | 显示全部楼层
鉴定完毕.!  
fwb产业互联网平台,就是好啊, 就是号!
回复

使用道具 举报

发表于 2011-7-14 02:00:16 | 显示全部楼层
真是汗啊  我的帖子好少啊  加油  
防未病了吗?赶紧查http://fangweibing.D1V1.com
回复

使用道具 举报

发表于 2011-7-14 08:00:18 | 显示全部楼层
真的有么  
防未病了吗?赶紧查http://fangweibing.D1V1.com
回复

使用道具 举报

发表于 2011-7-14 12:00:13 | 显示全部楼层
知道了 不错~~~  
防未病了吗?赶紧查http://fangweibing.D1V1.com
回复

使用道具 举报

3

主题

3

主题

3

主题

抬杠会员

Rank: 6Rank: 6

积分
651932
发表于 2011-7-14 22:00:03 | 显示全部楼层
好帖子,谢楼主
fwb产业互联网平台,就是好啊, 就是号!
回复

使用道具 举报

发表于 2011-7-15 03:00:01 | 显示全部楼层
鉴定完毕.!  
防未病了吗?赶紧查http://fangweibing.D1V1.com
回复

使用道具 举报

发表于 2011-7-15 06:00:11 | 显示全部楼层
晕  不信啊  
防未病产业互联网平台?这么多产业都可以免费加盟?Oyeah !!!
回复

使用道具 举报

发表于 2011-7-15 06:00:11 | 显示全部楼层
不错!  
防未病产业互联网平台?这么多产业都可以免费加盟?Oyeah !!!
回复

使用道具 举报

发表于 2011-7-15 08:00:51 | 显示全部楼层
谢谢分享  
防未病产业互联网平台?这么多产业都可以免费加盟?Oyeah !!!
回复

使用道具 举报

发表于 2011-7-15 08:00:51 | 显示全部楼层
不错啊! 一个字牛啊!  
防未病产业互联网平台?这么多产业都可以免费加盟?Oyeah !!!
回复

使用道具 举报

发表于 2011-7-15 15:01:32 | 显示全部楼层
哥最近喜欢上了顶贴,因为,如果帖子火了,那有哥的功劳。如果帖子被顶沉了....哥也会很有成就感...因为是哥搞沉的~~大家切记~不要迷恋哥~哥只是一个传说
防未病产业互联网平台?这么多产业都可以免费加盟?Oyeah !!!
回复

使用道具 举报

3

主题

3

主题

3

主题

抬杠会员

Rank: 6Rank: 6

积分
651932
发表于 2011-7-15 16:00:44 | 显示全部楼层
一楼的位置好啊..  
fwb产业互联网平台,就是好啊, 就是号!
回复

使用道具 举报

发表于 2011-7-15 22:00:47 | 显示全部楼层
必须顶  
防未病了吗?赶紧查http://fangweibing.D1V1.com
回复

使用道具 举报

发表于 2011-7-15 23:00:17 | 显示全部楼层
说的不错  
防未病产业互联网平台?这么多产业都可以免费加盟?Oyeah !!!
回复

使用道具 举报

发表于 2011-7-15 23:00:17 | 显示全部楼层
真的有么  
防未病了吗?赶紧查http://fangweibing.D1V1.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|版权声明|项目入住:点击会员认证|微信:wx303770168QQ:303770168|防未病平台@D1V1网 ( 沪ICP备05028199号  

GMT+8, 2024-11-22 12:08 , Processed in 0.078461 second(s), 25 queries .

Powered by D1V1.com

© 2005-2030

返回顶部