午夜乱伧午夜_午夜性大片男女天天_在线产啪_免费一级a片在线免费观看

dedecms源(yuan)碼分析之文章列表arclist_lib.php

更新時間:2020-05-19 編輯:未知 關注人次:0


這個文件負責顯示文章的列表(biao)。
包括(kuo)GetArclistCache(),lib_arclist(),lib_arclistDone(),lib_GetAutoChannelID(),list_sort_by()五(wu)個函數。
這五個函數的調用關系是(shi)
lib_arclist()->lib_GetAutoChannelID ;
lib_arclist()->lib_arclistDone();
lib_GetAutoChannelID ->GetArclistCache ();
lib_GetAutoChannelID ->list_sort_by();
整個文件中 lib_arclistDone()函(han)數體的代碼最(zui)多(duo)最(zui)復雜(za)(za),看起來很(hen)(hen)復雜(za)(za),因為(wei)里面(mian)有很(hen)(hen)多(duo)的if語句。
lib_arclist()函數最先被調用,代碼比較少,主要是做一些基本參數的判斷和取值,為下面被調用的lib_arclistDone函數的形參列表做準備。這個函數里面有一個地方應該比較重要,可以決定什么時候調用什么模板。下面是代碼。
if(trim($ctag->GetInnerText()) != '')
$innertext = $ctag->GetInnerText();
else if($tagname=='imglist')
$innertext = GetSysTemplets('part_imglist.htm');
else if($tagname=='imginfolist')
$innertext = GetSysTemplets('part_imginfolist.htm');
else
$innertext = GetSysTemplets("part_arclist.htm");
GetSysTemplets()函數是其他地方的函數,通過它(ta)(ta)可以獲得相應的模板。這里只需知道它(ta)(ta)的功能,不去研究(jiu)它(ta)(ta)怎(zen)么來的和具體怎(zen)么實現的。
 
需要的參數準備就緒以后,就開始調用lib_arclistDone函數了,lib_arclistDone函數做了絕大部分工作,最重要的是根據傳進來的參數構成sql語句,然后使用dedesqli的  ;  SetQuery,Execute方法從數據庫里面取數據,然后根據調用的模板返回文章列表的字符串。這個文件也只有這個函數需要解釋的。
 
回到lib_arclist()調用(yong)lib_arclistDone()的地(di)方(fang)。
 
lib_arclistDone
           (
             $refObj, $ctag, $typeid, $ctag->GetAtt('row'), $ctag->GetAtt('col'), $titlelen, $infolen,
             $ctag->GetAtt('imgwidth'), $ctag->GetAtt('imgheight'), $listtype, $orderby,
             $ctag->GetAtt('keyword'), $innertext, $envs['aid'], $ctag->GetAtt('idlist'), $channelid,
             $ctag->GetAtt('limit'), $flag,$ctag->GetAtt('orderway'), $ctag->GetAtt('subday'), $ctag->GetAtt('noflag'),
 ;            $tagid,$pagesize,$isweight
           );
看到了(le)吧,如(ru)此之(zhi)多的(de)參數(shu),每個參數(shu)的(de)具體含(han)義(yi)我就不說了(le),源碼注釋里面(mian)有。
lib_arclistDone函數對這些參數進行了處理,比如(ru)$titlelen = AttDef($titlelen,30)是將標題限制在30 以內(nei);$innertext = trim($innertext)是將顯示文章列(lie)表的字符串去掉首尾空(kong)白。
接下來是設定sql語句的查詢(xun)條(tiao)件和(he)排序方式。
此處省略若(ruo)干字,實在沒(mei)什(shen)么(me)(me)好講的(de)。我們(men)直接看(kan)查詢數據庫的(de)sql語句是什(shen)么(me)(me)樣子(zi)
    $query = "SELECT arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,
        tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath
        $addfieldsSql
        FROM `$maintable` arc LEFT JOIN `jcode_arctype` tp on arc.typeid=tp.id
        $addfieldsSqlJoin
        $orwhere $ordersql $limitsql";
其中maintable在這里(li)一般是archives這個表(biao)
然后(hou)執行這個sql語句(ju):
   $dsql->SetQuery($query);
    $dsql->Execute('al');
到(dao)了lib_arclistDone的(de)最后一(yi)個步驟了,就是講(jiang)文(wen)章列表結果保(bao)存在$artlist里面,我們只是研究(jiu)代碼的(de)大概執行過(guo)程,所以這里只抓住一(yi)條主線(xian),那就是一(yi)般文(wen)章列表的(de)顯示過(guo)程,artlist變量(liang)的(de)賦(fu)值分為很多種情況(kuang),包括是否頁數大于0的(de)情況(kuang),分兩欄顯示的(de)情況(kuang)等,一(yi)般情況(kuang)下,直接跳到(dao)for($i=0; $i<$line; $i++)這個大循環里面。
找(zhao)到
$liststr = $dtp2->GetResult();&nbsp;           
$artlist .= $liststr."\r\n";
GetResult()返回一篇文章的信息,具體內容跟(gen)你采用的模板有關。
 
到這一步,lib_arclistDone函數就(jiu)基(ji)本結(jie)束了(le),后(hou)面(mian)的(de)都是跟緩存什么(me)的(de)有(you)關的(de)。
本文地址: //taolibao.cn/a/xinwenguandian/xinwenzixun/2020/0519/32375.html ,轉載請注明出處。

服務支持

我(wo)們珍惜您每一次在線(xian)詢(xun)盤,有(you)問必答,用專業的(de)態度,貼心的(de)服務。

讓您真正(zheng)感受到我們的(de)與(yu)眾(zhong)不同(tong)!