discuz X3.2 在用戶信息表加一個頭像字段(已解決)

想做discuz開發要了解它的目錄結構


一)

Discuz!的文件系統目錄

a) Admin:後臺管理功能模塊

b) Api:DZ系統與其它系統之間接口程序

c) Archiver:DZ中,用以搜索引擎優化的無圖版

d) Attachments:DZ中 ,用戶上傳附件的存放目錄

e) Customavatars:DZ中,用戶自定義頭像的目錄

f) Forumdata:DZ緩存數據的存放目錄g) Images:DZ模板中的圖片存放目錄

h) Include:DZ常用函數庫,基本功能模塊目錄i) Ipdata:DZ統計IP來路用的數據

j) Plugins:DZ插件信息的存放目錄k) Templates:DZ模板文件的存放目錄

l) Wap:DZ無線,Wap程序處理目錄

二)

必須知道discuz用戶註冊是多存了那些數據,添加進那些數據表,走了哪些php,哪些js

三)

 DZ如何處理用戶信息(存取、計算、更新過程)新手要做二次開發,都必須掌握這數組中,每個數組元素的意義。

1) DZ的基本信息,如用戶信息,Session信息存在如下變量中:

2). $_DCACHEb). $_COOKIEc). $_DCOOKIEd). $_DSESSION

3). $_DPLUGINb) 可以通過print_r($GLOBALS),打印全部變量

) 

前臺流程控制:前臺的流程控制比較簡單:

例如:

首頁:index.php 
會員註冊:register.php; 
會員登錄:logging.php 
發貼程序:post.php 
會員信息:member.php 
論壇內容:forumdisplay.php 
查看貼子:viewthread.php

..............................[很多]


這裏 要總結的是 在用戶表中添加一個頭像的字段 我給定義爲 (string)img

首先 我追蹤discuz源碼 知道了

註冊時調用的模板位置在根目錄下 template / member /register.htm

處理文件 是 根目錄下的member.php 文件

在member.php 裏通過 表單域傳遞過來的mod變量進行調用其他頁面進行處理

require DISCUZ_ROOT.'./source/module/member/member_'.$mod.'.php';

上面這一句代碼是調用了根目錄下/source/module/member/member_register.php文件

$ctl_obj = new register_ctl();   //實例化一個類文件
$ctl_obj->setting = $_G['setting'];
$ctl_obj->template = 'member/register';
$ctl_obj->on_register(); //調用 類裏面的方法
這個類文件在根目錄下/source/class/class_member.php

找到這個類之後就好說了,在裏面查找on_register()方法

從以上一段代碼可以 看出 註冊頁面 的顯示 和處理 都是在這裏進行處理

往下看我們就會發現 在 這個文件的 781行調用了一個類的方法

C::t('common_member')->insert($uid, $username, $password, $email, $_G['clientip'], $groupinfo['groupid'], $init_arr);
這個類文件在根目錄下/source/class/table/table_common_member.php

在272行調用了insert 方法

public function insert($uid, $username, $password, $email, $ip, $groupid, $extdata, $adminid = 0) {
		if(($uid = dintval($uid))) {
			$credits = isset($extdata['credits']) ? $extdata['credits'] : array();
			$profile = isset($extdata['profile']) ? $extdata['profile'] : array();
			$profile['uid'] = $uid;
			$base = array(
				'uid' => $uid,
				'username' => (string)$username,
				'password' => (string)$password,
				'email' => (string)$email,
				'adminid' => intval($adminid),
				'groupid' => intval($groupid),
				'regdate' => TIMESTAMP,
				'emailstatus' => intval($extdata['emailstatus']),
				'credits' => dintval($credits[0]),
				'timeoffset' => 9999
			);
			$status = array(
				'uid' => $uid,
				'regip' => (string)$ip,
				'lastip' => (string)$ip,
				'lastvisit' => TIMESTAMP,
				'lastactivity' => TIMESTAMP,
				'lastpost' => 0,
				'lastsendmail' => 0
			);
			$count = array(
				'uid' => $uid,
				'extcredits1' => dintval($credits[1]),
				'extcredits2' => dintval($credits[2]),
				'extcredits3' => dintval($credits[3]),
				'extcredits4' => dintval($credits[4]),
				'extcredits5' => dintval($credits[5]),
				'extcredits6' => dintval($credits[6]),
				'extcredits7' => dintval($credits[7]),
				'extcredits8' => dintval($credits[8])
			);
			$ext = array('uid' => $uid);
			parent::insert($base, false, true);
			C::t('common_member_status')->insert($status, false, true);
			C::t('common_member_count')->insert($count, false, true);
			C::t('common_member_profile')->insert($profile, false, true);
			C::t('common_member_field_forum')->insert($ext, false, true);
			C::t('common_member_field_home')->insert($ext, false, true);
			manyoulog('user', $uid, 'add');
		}
}

好了 代碼 找到了 現在 我要做的 就是  在這兩個方法裏  加上 我們 自己的 字段 $img 

在discuz的模板register.htm 裏 加上 標籤  在 on_register()  做圖片處理,在

然後 在 根目錄下/source/class/table/table_common_member.php 文件

好了  這裏 就總結到這裏啦  !  下 次繼續


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章