看了一会儿DISCUZ X1.5的代码,记录一下收获。
不考虑后台,dzx的请求入口大约共有七个。为根目录下的forum.php(广场,其实就是论坛),group.php(群组),home.php(家园),index.php(首页),member.php(会员管理,登录注册什么的),misc.php(排行榜),search.php(搜索),userapp.php(不清楚,用户应用?)。
请求首页index.php的时候,默认会转向到广场forum.php。下面简单分析一下请求forum.php时DZX的整体执行流程。
打开forum.php
首先,引用了两个文件
require './source/class/class_core.php';
require './source/function/function_forum.php';
class_core初始化DZX的环境。通过下面两句代码实现
$discuz = & discuz_core::instance();
$discuz->cachelist = $cachelist;
$discuz->init();
其中的$discuz->cachelist = $cachelist;没搞明白是做什么用的。
接下来根据不同的mod调用不同的php文件,代码如下:
$mod = !in_array($discuz->var['mod'], $modarray) ? 'index' : $discuz->var['mod'];
url中如果没有通过?mod=xxx来指定mod的话,默认为index。
然后引用模块文件
require DISCUZ_ROOT.'./source/module/forum/forum_'.$mod.'.php';
我们只要看一下source\module下面的目录及文件,就能知道每个入口文件都有哪些mod参数可以指定。
这里默认会找到source\module\forum\forum_index.php。
forum_index.php首页取到显示页面需要的数据,前面写了一大堆的东西,没细看。对流程最重要的一句是:
include template('diy:forum/discuz:'.$gid);
直观印象,template返回一个路径。认真再想,其实流程大体上应该是这样的:
template的参数肯定是指定了模板文件的路径,但是模板文件要通过解析才能用。所以template函数肯定要对模板里的标签进行解析,那为什么是返加一个URL呢?DZX为了提高效率将解析后的模板做了一个缓存,就是说把一个html的模板解析成一个php的“编译”后的文件,然后保存在一个地方,下次用的时候,直接去读“编译”后的文件,省了编译这步,提高效率。
template函数位于source\function\function_core.php文件里。大体看一下,跟上面说的差不多。
读的模板文件为template\default\forum\discuz.htm
返回的缓存文件保存在/data/template目录里。
接下来分别打开模板文件emplate\default\forum\discuz.htm和缓存文件ata\template\1_diy_forum_discuz.tpl.php。
对比可以发现,$announcements编译成了<?=$announcements?>,那$announcements变量哪来呢的?source\module\forum\forum_index.php的get_index_announcements函数就是来取这个值的。
{lang xxx}直接被本地化成相应的字符了
<!--{hook/index_side_bottom}-->
变成了:
<?php if(!empty($_G['setting']['pluginhooks']['index_side_bottom'])) echo $_G['setting']['pluginhooks']['index_side_bottom']; ?>
$_G在DZX里常见到,感觉是一个很庞大的全局变量。还没细细研究了。
总体来说,DZX的流程,也是目前大多CMS的设计方式。根据URL准备数据,再调用对应的模板,模板编译后保存为缓存,缓存文件中调用函数或已准备好的数据,最后显示。像我看过的wordpress,textpattern差不多都这样。
分享到:
相关推荐
这款源码是康盛创想在X1.5版本时发布的产品,集成了许多先进特性和优化,旨在提供更好的用户体验和管理效率。 1. **框架与技术栈** Discuz! X1.5 使用PHP作为后端编程语言,这使得它在性能和跨平台性上具有优势。...
X1.5 经典版:中国SNS源码的里程碑》 Discuz! X1.5经典版,作为中国社交网络服务(SNS)领域的一款标志性产品,自发布以来就受到了广大站长和开发者的热烈追捧。这款开源的论坛软件,以其强大的功能、稳定的表现...
X1.5**:首先,需要了解Discuz! X1.5的基本架构和API接口,以便更好地理解插件如何与论坛系统交互。 2. **阅读源码**:逐行阅读源码,理解各个函数的作用,以及它们是如何协同工作的。特别关注与账号管理和登录...
X1.5 简体UTF-8 build 20101025.zip 是一个压缩包文件,包含的是 Discuz! 论坛系统的一个特定版本的源代码。Discuz! 是一款非常知名的开源社区论坛软件,特别在中国互联网社区中广泛使用。这个版本是针对简体中文...
X1.5 v1.0 GBK 源码是一个专门为Discuz! X1.5论坛系统设计的插件,用于实现与腾讯QQ的深度整合。这个插件允许用户使用QQ账号进行登录、注册和互动,极大地简化了用户在论坛上的操作流程,同时增加了社区的活跃度和...
" 是一个非常知名的论坛管理系统,其X1.5版本是在2010年发布的一个重要更新。这个版本包含了对前一版本的改进和新功能的添加,旨在提高用户体验和管理员的管理效率。UTF8编码确保了系统能支持多语言环境,特别是繁体...
x1.5~2-源码.zip" 指的是一款专为Discuz! x1.5到x2版本设计的新闻插件,它允许用户在基于Discuz!搭建的论坛平台上集成百度新闻的功能。Discuz! 是一款流行的开源社区论坛系统,由康盛创想(Comsenz)开发,广泛应用...
PHP实例开发源码—Xweibo for Discuz!X1.5连接工具.zip PHP实例开发源码—Xweibo for Discuz!X1.5连接工具.zip PHP实例开发源码—Xweibo for Discuz!X1.5连接工具.zip
X1.5连接工具源码.zip" 提供的是一款用于连接Discuz! X1.5论坛系统的PHP接口工具,其核心目的是实现与微博平台(可能是新浪或者其它微博服务)的集成。这个工具允许Discuz! 论坛用户通过他们的微博账号进行登录、...
X1.5 v1.0 UTF-8 源码是一个用于Discuz! X1.5论坛系统的扩展插件,它实现了与腾讯QQ的深度整合,允许用户通过QQ账号进行快速登录、注册以及社交互动。这个插件的源码发布,对于开发者来说,是一个很好的学习和研究...
X1.5 繁体BIG5 build 20101025.zip 是一个包含商业源码的压缩文件,主要用于构建和管理论坛网站。Discuz! 是一款非常知名的开源社区论坛软件,由Comsenz公司开发,广泛应用于中文互联网环境中。这个版本是针对繁体...
通过分析和研究这个源码,开发者能够了解如何在 Discuz! 平台上创建用户互动性的功能,比如新手引导任务,从而提升论坛的用户体验。同时,这也是一种了解和实践 PHP、MySQL 以及 Web 开发技术的好途径,因为 Discuz!...
X1.5 v1" 是一款专为Discuz!X1.5论坛系统设计的插件,旨在增强社区的功能性,提供一站式的网络资源导航服务。这款模块允许论坛用户方便地访问各类热门网站,提升用户在论坛的停留时间和互动体验。 【描述】"网址...
X1.5 手机版 build 20110321:构建移动社区的力量》 Discuz! X1.5 手机版 build 20110321 是一款专为移动设备设计的社区论坛软件,它在2011年3月21日发布,旨在让网站管理员能够为他们的用户提供无缝的移动访问...
X1.5 手机版是一个以PHP为基础的社区论坛系统,其源码开放,允许用户自定义和扩展功能,适应不同站点的需求。通过提供的文件,用户可以安装、配置和个性化论坛,为移动用户提供无缝的社区交流体验。同时,其在发布...
discuz源码分析.pdf Discuz开发教程.txt Discuz!模板制作教程.pdf 论坛社区discuz模版制作教程.doc discuz!x1.5数据表.docx discuz_x1.5文件结构.txt Discuz!X1.5详细教程.doc discuz_x1.5目录文件列表结构及模板...
x1.5~2" 是一款专为Discuz! X1.5和X2版本设计的插件,它的主要功能是将网站与百度新闻服务进行对接,实现在您的论坛上即时展示最新的新闻资讯。这款插件的独特之处在于,它不需要进行频繁的更新或者数据采集,即可...
Discuz X1.5是康盛创想Comsenz推出的一个以社区为基础的专业建站平台,让论坛BBS、个人空间SNS、门户Portal、群组Group、应用开放平台Open Platform充分融合于一体,帮助网站实现一站式服务。 Discuz! X1.5 Release...
Discuz X1.5是康盛创想Comsenz推出的一个以社区为基础的专业建站平台,让论坛BBS、个人空间SNS、门户Portal、群组Group、应用开放平台Open Platform充分融合于一体,帮助网站实现一站式服务。Discuz! X1.5 Release ...
对于Discuz X1.5用户而言,这个插件的安装和配置过程相对简单。根据"灯鹭安装包_discuz x1.5"文件,我们可以推断出,这个压缩包内包含了安装所需的全部文件。其中,“说明.htm”很可能是详细的操作指南,指导管理员...