敲重點(diǎn):變量語法等沒寫正確,或者語法未正確結(jié)束會(huì)出現(xiàn)頁面訪問空白的問題!!
DiscuzX中有兩種變量
一種我們稱為G變量:$_G[xxx] G變量是程序的全局變量,為了讓程序更加高效,減少不必要的數(shù)據(jù)獲取,所以程序特將經(jīng)常需要用到的變量統(tǒng)一到G變量下,如用戶登錄信息、后臺(tái)設(shè)置信息、服務(wù)器環(huán)境信息、客戶端CooKies、數(shù)據(jù)緩存等都存放在G變量里面,在制作模板的時(shí)候作者只需要將G變量打印出來即可獲得需要的信息是否在G變量里面。
另一種自定義變量:$xxx 自定義變量是以$開頭首位為字母或下劃線的自定義代碼,如:$data、$thread、$post、$forumlist、$threadlist等等! 自定義變量是作者可以自己在程序里面自定義的,或程序自身已經(jīng)定義了的。
變量數(shù)據(jù)在模板中的輸出方式: 程序從數(shù)據(jù)庫或緩存文件中將數(shù)據(jù)進(jìn)行讀取,轉(zhuǎn)換成數(shù)組數(shù)據(jù)并載入模板進(jìn)行輸出!所以我們在模板中調(diào)用并輸出列表數(shù)據(jù)時(shí)必須寫循環(huán)代碼,將數(shù)組數(shù)據(jù)逐條循環(huán)顯示出來!
自定義變量數(shù)據(jù)的循環(huán)代碼書寫格式: <!--{loop $data $key $value}--> <li>$key $value</li> <!--{/loop}-->
這段代碼就是一段典型的循環(huán)代碼,意思是將自定義變量$data進(jìn)行循環(huán),并將每次循環(huán)的數(shù)據(jù)傳遞給$value,$key是數(shù)組鍵值(序號(hào)), <!--{loop $data $key $value}--> ... <!--{/loop}--> 之間書寫html代碼。我們只需要記住這個(gè)簡單卻重要的意思!
打開template/default/forum/viewthread.htm
查找以下代碼: <!--{eval $postcount = 0;}--> <!--{loop $postlist $post}--> <!--{if $post['invisible'] != -5}--> <!--{if $rushreply &;&; $_G['gpcheckrush'] &;&; $post['rewardfloor'] != 1}--> <!--{eval continue;}--> <!--{/if}--> <div id="post$post[pid]"> <!--{subtemplate forum/viewthread_node}--> </div> <!--{eval $postcount++;}--> <!--{/if}--> <!--{/loop}-->
這段代碼就是帖子頁的循環(huán)代碼,通過上面的【 自定義變量數(shù)據(jù)的循環(huán)代碼書寫格式】我們應(yīng)該可以大致了解到這個(gè)循環(huán)代碼的意思!$postlist變量中存放了當(dāng)前訪問帖子的主題信息、回復(fù)樓層信息,通過循環(huán),將每個(gè)樓層的數(shù)據(jù)傳遞給$post變量。 循環(huán)的HTML代碼存放在template/default/forumviewthread_node.htm 打開這個(gè)文件后可以看見里面的很多變量名都是$post,例如:$post['authorid'] = 作者UID、$post['username']=作者用戶名等等,通過$post[xxx]不同的字段信息輸出相應(yīng)的數(shù)據(jù),這些字段信息都在數(shù)據(jù)庫-數(shù)據(jù)表pre_forum_post存放著。
經(jīng)常發(fā)現(xiàn)很多童鞋將$post[xxx]變量放到其他模板文件中去用,結(jié)果刷新出來的結(jié)果什么都沒有!
原因是: 每個(gè)模板文件都有一個(gè)對應(yīng)的程序文件,所以自定義變量不能在不同的頁面中使用,只限于定義了變量的模板文件中使用。 例如帖子列表頁的帖子數(shù)據(jù)是不能在論壇首頁或其他頁面輸出的!
更多建議: