2024年5月1日发(作者:)
discuz的模板制作与源代码分析
各位网友,大家好!我是德阳热线论坛管理员()欢迎大家到我站看看,许
多使用discuz的人都会自然的想到论坛的风格、样式和模板,如何修改它,如
何让它符合心中的要求,相信大家只要对discuz的模板源代码进行钻研的话,
那就肯定能够自己独立修改,并且达到自己想要的风格和样式。
但是discuz的源代码极为精简,而且无注释,采用的方法多变,对象、函
数等等都不易理解,无疑让大家对模板源代码头痛不已。
俗语说得好,授人以鱼不如授人以渔,我在这里不讲如局具体修改什么,
而是讲一讲discuz模板的工作原理和源代码的拆开。
说到模板风格,大家自然想到的就是templates文件夹下的default模板,
这里面的文件众多,它是discuz的默认模板。
在这个文件夹里的模板文件很多,最常使用到的,比如说和
两个文件,它们分别是论坛的头部和底部,在其它模板里都必须调
用这两个文件,是以大家可以看到,在论坛的所有页面里,头部和底部都是相
同的。
论坛最常见的三个页面,一个是主页,也就是通常的,还有是
主题列表页,以及帖子内容页,下面以来讲述discuz模板的原理以
及它牵扯到的文件。
首先我们打开,在这个文件的开头是discuz作者的声明。
然后就是
//定义页面
define('CURSCRIPT','index');
//包含common文件和forum函数库
require_once'./include/';
require_once DISCUZ_ROOT.'./include/';
大家可以看到这里很重要的两句,就是使用require_once函数来包含两个
文件,在里存放的是一些常用数据,而在里
存放的是有关版块的函数,把这些分离开来单独作为一个文件,是因为这些东
西会在多个文件里使用,是以为了循环利用以及代码的精简性,他们被放在一
个单独的文件里。
调用了文件以后,我们就可以直接在本页面使用其中的变
量了,下面的这几句:
//判断页面状况,包括:页面缓存、是否登录、是否开启了左右分栏等等
if($cacheindexlife&&!$discuz_uid&&$showoldetails!='yes'&&(!
$_DCACHE['settings']['frameon']||$_DCACHE['settings']['frameon']&&$_G
ET['frameon']!='yes')&&empty($gid)){…}
在这个if大括号里我们可以看到许多变量,这些变量的值从何而来,就是
从里来的,而这个大括号里分别判断页面的各种状况,并且对
其进行处理,特别要说的是$discuz_uid这个变量,它表示的是访问者的uid,
如果未登录就是0,所以大家可以使用if(!$dicuz){…}来判断用户是否登录。
后面的也是进行一些判断,我们直接到第42行,可以看到这里有了一些新
变量,他们都是时间的变量。
//第一个变量里的gmdate是返回一个格式化的时间,里面需要指定格式和
timestamp格式的时间,timestamp格式就是一连串的整形数字,代表着从格林
威治时间1970年1月1日凌晨0点到规定时间的秒数。
$currenttime=gmdate($timeformat,$timestamp+$timeoffset*3600);
//下面这个变量是把上次访问时间(timestmp格式)格式化成我们可以明白
的时间格式
发布评论