dede問答平臺(tái)開發(fā)筆記
發(fā)表日期:2018-03 文章編輯:小燈 瀏覽次數(shù):3129
dedecms有個(gè)問答平臺(tái)的模塊,安裝該模塊之后會(huì)在根目錄下面生成一個(gè)ask的目錄,相關(guān)的代碼和模板都在里面了,當(dāng)然安裝過程中還在數(shù)據(jù)庫中添加了和問答相關(guān)的數(shù)據(jù)。
其實(shí)模塊是和系統(tǒng)其它部分比較獨(dú)立的程序集合,我發(fā)現(xiàn)這個(gè)問答模塊的代碼結(jié)構(gòu)和dede其它地方的代碼結(jié)構(gòu)差別比較大,可能是程序員不同吧,問答模塊基本上是基于mvc設(shè)計(jì)模式的,至少代碼看上去和很多mvc框架相似,而且在問答模塊里面,采用的模板也不再是dede文章模板的標(biāo)簽調(diào)用形式,問答模塊里面可以很隨意的嵌套php語句。盡管有些地方也能看到dede標(biāo)簽,但是我初步感覺,這個(gè)模板已經(jīng)不再是dede的模板了,從后臺(tái)和前臺(tái)分離的角度來說,這不是好事,但是就個(gè)人來說我喜歡能使用php代碼的模板。
好了今天我想給問答平臺(tái)添加一個(gè)在首頁顯示所有問題的功能(默認(rèn)是沒有的),很容易找到了ask/control/index.php文件,下面我將關(guān)鍵代碼貼出來:
//待解決的問題
$notoks = $this->question->get_all('status=0','ORDER BY disorder DESC, dateline DESC',$row);
//新解決的問題
$solutions = $this->question->get_all('status=1','ORDER BY solvetime DESC',$row);
//高分懸賞問題
$rewards = $this->question->get_all('status=0','ORDER BY reward DESC',$row);
看到了吧,這里就是查詢不同條件下問題的列表,get_all()函數(shù)里面的參數(shù)是設(shè)置查找問題的條件status=1表示已解決問題,status=0表示未解決問題,如果我不要任何條件將這里設(shè)置成空 是不是就可以得到所有問題了呢,于是我將代碼改成:
//待解決的問題
$notoks = $this->question->get_all('status=0','ORDER BY disorder DESC, dateline DESC',$row);
//所有問題
$allqus = $this->question->get_all('','ORDER BY disorder DESC, dateline DESC',$row);
//新解決的問題
$solutions = $this->question->get_all('status=1','ORDER BY solvetime DESC',$row);
//高分懸賞問題
$rewards = $this->question->get_all('status=0','ORDER BY reward DESC',$row);
實(shí)驗(yàn)證明我錯(cuò)了,問答模塊的代碼沒我想的那么智能化,找了很久終于發(fā)現(xiàn)原因所在。原來在模型mquestion里面,get_all()不管條件有沒有指,都給sql語句加了個(gè)where,
$query = "SELECT $field FROM `dede_ask` WHERE $wheresql $orderby limit 0,$row";
這里的$wheresql我設(shè)置成了空,結(jié)果導(dǎo)致sql語句不全了,所以出錯(cuò)。改成
if($wheresql=='')
$query = "SELECT $field FROM `dede_ask` $orderby limit 0,$row";
else
$query = "SELECT $field FROM`dede_ask` WHERE $wheresql $orderby limit 0,$row";
現(xiàn)在就可以了,后臺(tái)代碼已經(jīng)改完,現(xiàn)在改前臺(tái)。
增加
<?php
if($allqus!= ""){
foreach($allqus as $key => $v){
?>
這里是html代碼,參照待解決問題
<?php}}?>
就講到這里吧
本頁內(nèi)容由塔燈網(wǎng)絡(luò)科技有限公司通過網(wǎng)絡(luò)收集編輯所得,所有資料僅供用戶參考了本站不擁有所有權(quán),如您認(rèn)為本網(wǎng)頁中由涉嫌抄襲的內(nèi)容,請(qǐng)及時(shí)與我們聯(lián)系,并提供相關(guān)證據(jù),工作人員會(huì)在5工作日內(nèi)聯(lián)系您,一經(jīng)查實(shí),本站立刻刪除侵權(quán)內(nèi)容。本文鏈接:http://www.junxiaosheng.cn/11260.html