• <ul id="cgeq2"></ul>
  • 歡迎您光臨深圳塔燈網絡科技有限公司!
    電話圖標 余先生:13699882642

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

    發表日期:2018-03 文章編輯:小燈 瀏覽次數:3186

    這個文件負責顯示文章的列表。
    包括GetArclistCache(),lib_arclist(),lib_arclistDone(),lib_GetAutoChannelID(),list_sort_by()五個函數。
    這五個函數的調用關系是
    lib_arclist()->lib_GetAutoChannelID ;
    lib_arclist()->lib_arclistDone();
    lib_GetAutoChannelID ->GetArclistCache ();
    lib_GetAutoChannelID ->list_sort_by();
    整個文件中 lib_arclistDone()函數體的代碼最多最復雜,看起來很復雜,因為里面有很多的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()函數是其他地方的函數,通過它可以獲得相應的模板。這里只需知道它的功能,不去研究它怎么來的和具體怎么實現的。

    需要的參數準備就緒以后,就開始調用lib_arclistDone函數了,lib_arclistDone函數做了絕大部分工作,最重要的是根據傳進來的參數構成sql語句,然后使用dedesqli的 SetQuery,Execute方法從數據庫里面取數據,然后根據調用的模板返回文章列表的字符串。這個文件也只有這個函數需要解釋的。

    回到lib_arclist()調用lib_arclistDone()的地方。

    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
    );
    看到了吧,如此之多的參數,每個參數的具體含義我就不說了,源碼注釋里面有。
    lib_arclistDone函數對這些參數進行了處理,比如$titlelen = AttDef($titlelen,30)是將標題限制在30 以內;$innertext = trim($innertext)是將顯示文章列表的字符串去掉首尾空白。
    接下來是設定sql語句的查詢條件和排序方式。
    此處省略若干字,實在沒什么好講的。我們直接看查詢數據庫的sql語句是什么樣子
    $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在這里一般是archives這個表
    然后執行這個sql語句:
    $dsql->SetQuery($query);
    $dsql->Execute('al');
    到了lib_arclistDone的最后一個步驟了,就是講文章列表結果保存在$artlist里面,我們只是研究代碼的大概執行過程,所以這里只抓住一條主線,那就是一般文章列表的顯示過程,artlist變量的賦值分為很多種情況,包括是否頁數大于0的情況,分兩欄顯示的情況等,一般情況下,直接跳到for($i=0; $i<$line; $i++)這個大循環里面。
    找到
    $liststr = $dtp2->GetResult();
    $artlist .= $liststr."\r\n";
    GetResult()返回一篇文章的信息,具體內容跟你采用的模板有關。

    到這一步,lib_arclistDone函數就基本結束了,后面的都是跟緩存什么的有關的。
    本頁內容由塔燈網絡科技有限公司通過網絡收集編輯所得,所有資料僅供用戶參考了本站不擁有所有權,如您認為本網頁中由涉嫌抄襲的內容,請及時與我們聯系,并提供相關證據,工作人員會在5工作日內聯系您,一經查實,本站立刻刪除侵權內容。本文鏈接:http://www.juherenli.com/11259.html
    相關cms文章
     八年  行業經驗

    多一份參考,總有益處

    聯系深圳網站公司塔燈網絡,免費獲得網站建設方案及報價

    咨詢相關問題或預約面談,可以通過以下方式與我們聯系

    業務熱線:余經理:13699882642

    Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.    

    久久99久久99精品免视看动漫| 久久99精品视香蕉蕉| 青青草国产精品久久| 中文字幕亚洲精品| 日本久久中文字幕精品| 国产精品主播一区二区| 久久亚洲私人国产精品vA | av国内精品久久久久影院| 国产精品先锋资源站先锋影院| 久久精品国产只有精品2020| 四虎精品亚洲一区二区三区| 99re5精品视频在线观看| 亚洲精品成人无限看| 好男人视频社区精品免费 | 99精品免费观看| 亚洲精品无码专区久久久| 亚洲精品无码久久久久YW| 成人午夜精品无码区久久| 午夜一级日韩精品制服诱惑我们这边| 精品熟女少妇AV免费观看 | 野花国产精品入口| 无码精品久久久天天影视| 国产成人综合日韩精品婷婷九月 | 久久精品国产亚洲AV天海翼| 麻豆精品久久久一区二区| 三上悠亚国产精品一区| 精品国产中文字幕| 精品无码专区亚洲| …久久精品99久久香蕉国产| 久久精品国产久精国产一老狼| 精品91自产拍在线观看二区| 亚洲AV综合永久无码精品天堂 | 97在线精品视频| 在线观看一区二区精品视频| 亚洲色在线无码国产精品不卡| 久久一区二区精品| 久久99视频精品| 久久国产精品无码HDAV| 精品亚洲A∨无码一区二区三区| 人人妻久久人人澡人人爽人人精品| 99久久综合国产精品免费|
    请您留言

    深圳塔灯网络科技有限公司0755-29185426

    提交