在中國(guó)互聯(lián)網(wǎng)中,也許從業(yè)者無(wú)人不知道Disucz的大名,因?yàn)樗_實(shí)一款非常優(yōu)秀的開源建 站軟件,也因此運(yùn)行在國(guó)內(nèi)各個(gè)網(wǎng)站服務(wù)器之上。說(shuō)到它大家可能最大的印象就是做社區(qū)論壇,其實(shí)從本質(zhì)上講這塊產(chǎn)品包括了很多模塊,而我們最常用的BBS只 是其中的一部分而已,同樣的道理,門戶也是其中的模塊之一。
也許在國(guó)內(nèi)也有過(guò)很多優(yōu)秀的開源CMS建站系統(tǒng),但就是因?yàn)镈Z聚合了很多個(gè)模塊,而且進(jìn)行各個(gè)模塊的相互整合技術(shù)成本會(huì)很低,因此有不少的站 長(zhǎng)想直接利用這個(gè)程序解決自己所有問(wèn)題,即全部用這套程序搭建問(wèn)題。但就在這個(gè)時(shí)候,大家可能都有所感受,其實(shí)DZ的精髓還是在于它的論壇部分,而其他的 模塊就是不痛不癢了,特別是門戶部分甚至在其官方?jīng)]有確切的入口。因此,大家也知道默認(rèn)的門戶模板是很久都沒(méi)有更新的,而且默認(rèn)的確實(shí)有點(diǎn)上不了臺(tái)面;比 如今天就跟大家說(shuō)說(shuō)門戶的列表頁(yè)吧,我就通過(guò)我之前做的一個(gè)實(shí)例來(lái)分享下改造過(guò)程吧,實(shí)現(xiàn)后就是下面的樣子,接下來(lái)我就講解下基本的思路吧。
第一,設(shè)計(jì)好樣式并不書寫好HTML和CSS,當(dāng)然這也是最簡(jiǎn)單的一部分。這一點(diǎn)我相信只要懂做網(wǎng)站的朋友都會(huì),甚至可以直接copy那些比較 優(yōu)秀網(wǎng)站的前端代碼,也就是大家所謂的仿站中的一部分。當(dāng)然我建議還是自己設(shè)計(jì)出版式來(lái),這樣更具個(gè)性,而且是你想做成什么樣就是什么樣的。
第二,調(diào)用動(dòng)態(tài)參數(shù)。上面第一步我們完成的僅僅是一個(gè)靜態(tài)的頁(yè)面,而我們現(xiàn)在做的肯定是需要讓其內(nèi)容動(dòng)起來(lái),而這些參數(shù)無(wú)非就是DZ內(nèi)部的一些 動(dòng)態(tài)變量參數(shù)。比如文章的發(fā)布日期的變量是$value[dateline],文章的地址是$article_url,當(dāng)然這些參數(shù)只要參考默認(rèn)模板中的 即可。這里又會(huì)有一個(gè)問(wèn)題,也許大家可能會(huì)在這個(gè)頁(yè)面需要加上默認(rèn)模板沒(méi)有的,而在默認(rèn)模板其他頁(yè)面有的。是不是自己復(fù)制另外頁(yè)面的相應(yīng)參數(shù)就可以了呢? 肯定是不行的,DZ是一套比較復(fù)雜的系統(tǒng),不同的頁(yè)面的很多參數(shù)是不能通用的,這樣就需要對(duì)部分進(jìn)行二次開發(fā)。比如就如上面展示的列表那樣需要加上原來(lái)沒(méi) 有的瀏覽數(shù)和評(píng)論數(shù),就需要在相關(guān)的函數(shù)中添加一些功能性語(yǔ)句了,比如這個(gè)列表的相關(guān)函數(shù)存儲(chǔ)在
/source/module/portal/portal_list.php中
在中間的自定義函數(shù)category_get_list中添加讓通用變量啟用的語(yǔ)句
$article_count = C::t('portal_article_count')->fetch($value['aid']); if($article_count) $value = array_merge($article_count, $value);
這樣進(jìn)行簡(jiǎn)單的二次開發(fā)后就可以在門戶的列表頁(yè)使用$value[commentnum]調(diào)用評(píng)論數(shù)以及用$value[viewnum]調(diào)用瀏覽數(shù)了;當(dāng)然其他的一些功能也是類似的,當(dāng)然需要你有一定的PHP基礎(chǔ)。
第三,優(yōu)化性能。就如這種圖文列表的形式,我們不可能在一個(gè)單頁(yè)列表中包含的數(shù)據(jù)記錄數(shù)只會(huì)三五個(gè),一般地我們得在單頁(yè)有近二十條數(shù)據(jù),但這樣 就會(huì)出現(xiàn)一個(gè)問(wèn)題,當(dāng)用戶首次打開這個(gè)列表的時(shí)候數(shù)據(jù)量會(huì)特別的大。比如就二十條數(shù)據(jù),圖片每個(gè)40KB,光列表中的圖片大小就有了800KB,這樣打開 起來(lái)肯定不可能太快。這里就需要我們進(jìn)行適當(dāng)?shù)男阅軆?yōu)化,比如可以進(jìn)行分屏加載,而使用jQuery和AJAX等技術(shù)都可以實(shí)現(xiàn)這些,比如jQuery的 插件Lazy Load就可以實(shí)現(xiàn)圖片的分屏加載,當(dāng)然至于怎么用網(wǎng)上有很多相關(guān)的教程。在這里我不得不提示大家,jQuery 默認(rèn)情況下會(huì)與DZ的JS沖突,因?yàn)镈Z變量用的 是 $ 開頭,而jQuery也是用$這個(gè)所以會(huì)有沖突。解決的辦法也很簡(jiǎn)單,jQuery庫(kù)不改變,只在引用的時(shí)候改變一下就可以了,可以先賦予一個(gè)變量如 var jq = jQuery.noConflict();然后用這個(gè)變量jq代替引用中的$就可以解決這個(gè)沖突了。
上面就是一個(gè)簡(jiǎn)單的實(shí)例分享,希望對(duì)大家有所幫助。其實(shí)上面的內(nèi)容也提示了大家一些問(wèn)題,那就是最好自己先掌握一些基礎(chǔ)知識(shí),同時(shí)不要胡亂添加一些代碼,比如很多站長(zhǎng)甚至不知道jQuery會(huì)和DZ沖突,而在網(wǎng)上隨意下載特效添加在網(wǎng)站中,這樣不出問(wèn)題才怪!
更多信息請(qǐng)查看IT技術(shù)專欄