toxic

备忘录

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

一 . 解析流程分析

 论坛的入口为 form.php 在里面有定义整个入口规则

 在首页随便查看一个连接的地址规则 如:http://localhost/discuz/forum.php?mod=guide&view=new

 核心类里会自动分析并整合url 翻译以上地址去寻找 /source/module/forum/forum_guide.php 这个程序文件,你可以在这里写你的数据调用

二. 创建自己的程序和页面

 在创建自己的文件之前请先看入口forum.php中下面这段代码

 

$modarray = array('ajax','announcement','attachment','forumdisplay',
    'group','image','index','medal','misc','modcp','notice','post','redirect',
    'relatekw','relatethread','rss','topicadmin','trade','viewthread','tag','collection','guide','custom'
);

在这里定义了forum的模块,如果你想写自己的文件模块,那么假设模块功能文件名为custom,在上的数组中加入custom;

根据一中的规则 那么 我们的程序文件应该写在/source/module/forum/中 并命名为forum_custom.php;

forum_custom.php

<?php 
if(!defined('IN_DISCUZ')) {
    exit('Access Denied');
}


$query = DB::query("select * from 027_common_admincp_group");

$list = array();
while($result = DB::fetch($query)){
    $list[] = $result['cpgroupname'];
}

include template('forum/custom');
?>

载入模板文件template('forum/custom') 意思是载入/template/forum/custom.htm文件

<!--{subtemplate common/header}-->

<div class="container">
    <p>
        以下是管理员组:
    </p>
    <!--{loop  $list  $a}-->
         {$a}<br/>
    <!--{/loop}-->
</div>

<!--{subtemplate common/footer}-->

 

三. 数据调用

discuz在class_core中提供了t方法,对应取source/class/table/文件夹下的相对应不带表前缀的表名如我要取027_common_admincp_group这张表

C::t('common_admincp_group')

api:

C::t($tablename')->count()     获取表所有行数
C::t($tablename')->update(键值,$data)     更新键值数据
C::t($tablename')->delete(键值)     删除键值数据
C::t($tablename')->truncate()     清空表
C::t($tablename')->insert($data, $return_insert_id,$replace)     插入数据
C::t($tablename')->fetch_all($ids)     fetch 数据,可以是单一键值或者多个键值数组
C::t($tablename')->fetch_all_field()     fetch所有的字段名表
C::t($tablename')->range($start, $limit, $sort)     fetch值域范围
C::t($tablename')->optimize()     优化表 

由于C::t()方法取数据的定制性太差 所以还是建议用DB操作数据库

api:

DB::table($tablename)     获取正确带前缀的表名,转换数据库句柄,
DB::delete($tablename, 条件,条数限制)    删除表中的数据
DB::insert($tablename, 数据(数组),是否返回插入ID,是否是替换式,是否silent)    插入数据操作
DB::update($tablename, 数据(数组)条件)    更新操作
DB::fetch(查询后的资源)    从结果集中取关联数组,注意如果结果中的两个或以上的列具有相同字段名,最后一列将优先。
DB::fetch_first($sql)    取查询的第一条数据fetch
DB::fetch_all($sql)    查询并fetch
DB::result_first($sql)    查询结果集的第一个字段值
DB::query($sql)    普通查询
DB::num_rows(查询后的资源)    获得记录集总条数
DB::_execute(命令,参数)    执行mysql类的命令
DB::limit(n,n)    返回限制字串
DB::field(字段名, $pid)    返回条件
DB::order(别名, 方法)    排序 

 

posted on 2012-12-27 12:01  toxic  阅读(277)  评论(0编辑  收藏  举报