网站的基本数据
在DX的这个框架中,我们会经常用到一些使用的数据,这些数据包括:系统常量、全局变量、系统调用 ,首先我们从系统常量说起
系统常量
DX里面对一些常量做了自己的定义,接下来的表格列举了,更多的变量可以使用附录里的代码获得。
常量名 | 说明 | DISCUZ_ROOT | 网站的根目录 | TIMESTAMP | 程序执行的时间戳 | CHARSET | 程序的语言编码类型 | IS_ROBOT | 是否是机器访问 | FORMHASH | HASH值 | 全局变量
DX的全局变量事实上全部压缩到了一个变量:$_G里面,接下来的表格列举了常用的$_G数据内部的变量,更多的变量可以使用附录里的代码获得。
变量名 | 说明 | uid | 用户UID | username | 用户名 | groupid | 用户组ID | clientip | 用户IP地址 | charset | 语言编码 | siteurl | 网站地址 | config | 网站基本配置,这是一个数组 | setting | 网站基本设置,这是一个数组 |
系统调用 系统调用里面,恐怕最重要的调用要数DB这个静态对象了。这是一个数据库的静态对象,对其的使用也是经常用到的,其方法包括:
变量名 | 说明 | DB::table() | 增加了pre的数据库表名 | DB::delete() | 删除表中数据 | DB::insert() | 向表中插入数据 | DB::update() | 更新表中数据 | DB::fetch() | 配合DB::query来实现数据资源数据的获取 | DB::query() | 执行一条数据库语句 | DB::fetch_first() | 获取结果集的第一条记录 | 另外,系统的一些其它的系统调用,包括:获取用户信息、插入帖子等内容,都可以在:souce/function/ 文件夹下找到对应的文件来查看。
1. 查看全部常量:
- <?php
- require_once './source/class/class_core.php';
- require_once './source/function/function_home.php';
- $discuz = & discuz_core::instance();
- $discuz->init();
- print_r(get_defined_constants());
- ?>
复制代码
2. 查看$_G变量中内容
- <?php
- require_once './source/class/class_core.php';
- require_once './source/function/function_home.php';
- $discuz = & discuz_core::instance();
- $discuz->init();
- print_r($_G);
- ?>
复制代码
接下来.我们就已 "扩展中心"插件为例 制作一个简易,却很实用的论坛扩展插件.
首先.打开论坛后台: 插件 -> 插件 -> 设计新插件
注:唯一标识符提交后.将不能再次修改.提交后,会切换到插件的设置页面.如果不涉及到其他编码.可以不选用"插件语言包"
接下来.我们就可以开始添加插件的模块文件了.
打开程序目录:/source/plugin/ 建立新文件包 dst_Expand (这里的文件包名要与唯一标识符一致)
第一步.我们先做一个admincp.inc.php
在/source/plugin/唯一标识符/下 新建一个文件 admincp.inc.php
因为扩展中心不需要后台设置 所以该文件不需要编写内容 只需复制一下内容即可
- <?php
- if(!defined('IN_DISCUZ')) {
- exit('Access Denied');
- }
- ?>
复制代码
文件写好后.返回后台的模块设置.按下图样式填写:
写好只有点击提交.返回到插件列表页.点击开启.后台部分便完成了.
之后开始编写其他模块文件
返回 设计 -> 模块 按下图添加新模块
添加完毕后 界面 -> 导航栏 -> 选择"扩展" 可用
在/source/plugin/唯一标识符/下 新建一个文件 Expand.inc.php
在里面编写
- <?php
- /**
- * [New.DST] (C)2010-2011 New PHP Support Forum
- * This is NOT a freeware, use is subject to license terms
- *
- * $Id: Expand.inc.php 2010-07-31Z [DST]上官雨伦 $
- */
- if(!defined('IN_DISCUZ')) {
- exit('Access Denied');
- }
- include template("dst_Expand:Expand");
- ?>
复制代码
其中
- include template("dst_Expand:Expand");
复制代码 template:表示dst_Expand插件文件包目录下的模板文件
dst_Expand:表示该插件的唯一标识符
Expand:表示template下的模板文件名
接下来 在dst_Expand插件文件包目录下新建新文件包 template
在 template 文件包下新建文件 Expand.htm
在 Expand.htm 文件里 编写
- {template common/header}
- <div id="wp" class="wp">
- <div id="pt" class="wp"><a href="index.php" class="nvhm">$_G[setting][bbname]</a> › 扩展中心</div>
- 这里是内页所显示的内容
- {template common/footer}
复制代码 其中:
表示调用页头文件
- <div id="pt" class="wp"><a href="index.php" class="nvhm">$_G[setting][bbname]</a> › 扩展中心</div>
复制代码
表示:
表示调用页底文件.
这样, 一个内页就算完成了.
接下来,我们就根据上面的教程制作一个扩展中心的内页
template 文件包下的 Expand.htm
可以做任何的形式,只要你熟悉CSS和DIV
下面,贴出扩展中心的代码
把上面教程中 "这里是内页所显示的内容" 替换成
- <link rel="stylesheet" type="text/css" href="source/plugin/dst_Expand/template/Expand.css">
- <div id="ct" class="wp cl">
- <div class="mn mw">
- <div class="bm bml">
- <div class="bm_c cl">
- <div id="forum_rules">
- <div class="pbm xg2">
- <ul class="tb cl">
- <li id="Id_About_Us"> <a href="plugin.php?id=dst_Expand:Expand&to=Id_About_Us">关于我们</a></li>
- <li id="Id_Team_News"> <a href="plugin.php?id=dst_Expand:Expand&to=Id_Team_News">团队动态</a></li>
- <li id="Id_License_Agreement"> <a href="plugin.php?id=dst_Expand:Expand&to=Id_License_Agreement">授权协议</a></li>
- <li id="Id_Team_Rules"> <a href="plugin.php?id=dst_Expand:Expand&to=Id_Team_Rules">团队规章</a></li>
- <li id="Id_Business_Support"> <a href="plugin.php?id=dst_Expand:Expand&to=Id_Business_Support">商业支持</a></li>
- <li id="Id_Partners"> <a href="plugin.php?id=dst_Expand:Expand&to=Id_Partners">合作伙伴</a></li>
- <li id="Id_Team_Concept"> <a href="plugin.php?id=dst_Expand:Expand&to=Id_Team_Concept">团队理念</a></li>
- <li id="Id_Contact_us"> <a href="plugin.php?id=dst_Expand:Expand&to=Id_Contact_us">联系我们</a></li>
- <li id="Id_Site_Map"> <a href="plugin.php?id=dst_Expand:Expand&to=Id_Site_Map">网站地图</a></li>
- <li id="Id_Advertising"> <a href="plugin.php?id=dst_Expand:Expand&to=Id_Advertising">广告服务</a></li>
- <li id="Id_Site_Help"> <a href="plugin.php?id=dst_Expand:Expand&to=Id_Site_Help">网站帮助</a></li>
- </ul> <br />
- <!--{if $_G['gp_to'] == 'Id_Team_News'}-->{template dst_Expand:Id_Team_News}
- <!--{elseif $_G['gp_to'] == 'Id_License_Agreement'}-->{template dst_Expand:Id_License_Agreement}
- <!--{elseif $_G['gp_to'] == 'Id_Team_Rules'}-->{template dst_Expand:Id_Team_Rules}
- <!--{elseif $_G['gp_to'] == 'Id_Business_Support'}-->{template dst_Expand:Id_Business_Support}
- <!--{elseif $_G['gp_to'] == 'Id_Partners'}-->{template dst_Expand:Id_Partners}
- <!--{elseif $_G['gp_to'] == 'Id_Team_Concept'}-->{template dst_Expand:Id_Team_Concept}
- <!--{elseif $_G['gp_to'] == 'Id_Contact_us'}-->{template dst_Expand:Id_Contact_us}
- <!--{elseif $_G['gp_to'] == 'Id_Site_Map'}-->{template dst_Expand:Id_Site_Map}
- <!--{elseif $_G['gp_to'] == 'Id_Advertising'}-->{template dst_Expand:Id_Advertising}
- <!--{elseif $_G['gp_to'] == 'Id_Site_Help'}-->{template dst_Expand:Id_Site_Help}
- <!--{else}-->{template dst_Expand:Id_About_Us}
- <!--{/if}-->
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- <script type="text/javascript">
- <!--
- var ishave=true;
- var isset=false;
- querystring=document.location.search;
- lo=querystring.indexOf('to=');
- if (lo>0) {
- var result=querystring.substr(lo+3);
- if (result=="") ishave=false;
- }
- else { ishave=false; }
- divob=document.getElementById('forum_rules');
- lis=divob.getElementsByTagName('li');
- if (ishave) {
- for (var i=0; i<lis.length; i++) {
- if (lis.id==result) {
- lis.className="a";
- isset=true;
- break;
- }
- }
- }
- else {
- lis[0].className="a";
- }
- if (!isset) lis[0].className="a";
- //-->
- </script>
复制代码 然后再写个CSS文件 Expand.css
- #ct {
- background:none !important;
- }
复制代码
这回去看看发生了什么吧
下面 我来详细的解剖一下上面的导航栏的写法
在上面的导航栏效果中:
- <li id="Id_About_Us"> <a href="plugin.php?id=dst_Expand:Expand&to=Id_About_Us">关于我们</a></li>
复制代码 href="" 中的路径 表示的是各个分类的路径
关于我们 则表示的导航栏的文字
而下面
- <!--{if $_G['gp_to'] == 'Id_Team_News'}-->{template dst_Expand:Id_Team_News}
复制代码
等等中的
- {template dst_Expand:Id_Team_News}
复制代码
表示的是 dst_Expand这个插件文件包下的template文件包下的Id_Team_News.htm 文件
因为该插件下面要输写的内容过多.为了方便整理和修改.我们在这里采用了外调的方法.
也就是说 每一个导航栏 单独写成一个.htm的文件 然后再由Expand.htm 这个文件总的来调用.这样每一个分类下的内容就简洁多了
但是这里一定要注意几点:
一.文件的目录{template dst_Expand:Id_Team_News} 里的Id_Team_News.htm 文件要和Expand.htm为同一个目录.
二.<li>中的ID 以及变量$_G['gp_to'] == '里的ID 一定要保持和文件名 也就是&to= 后面的一致 否则就会产生模板文件找不到的错误
最后.我们就可以在分类下,填写自己想要的内容了.
按照上面已经写好的Expand.htm 我们新建一个文件 Id_About_Us.htm 这个是"关于我们"的文件
新建好以后 我们在文件中任意输入任何文字内容
以上,我们就可以根据上述的教程,制作出一个简单的"扩展中心"插件了
当然,如果你可以熟练的运用CSS+Div 的话.还可以做出更精美的效果. 您可以参考
http://www.17dst.com/plugin.php?id=dst_Expand:Expand 根据自己的需要 运用CSS+Div
|
上一篇: Discuz 插件编码转换教程下一篇: 超多个性等级图标、勋章、在线列表、等精美图标,绝对有你想要的
|