☎
建站热线:
400-915-4435
免费创建网站
›
管理网站
›
首页
报价
▾
·
网站建设
·
软件设计开发
·
云服务
·
企业商务短信
·
企业400电话
·
商标申请注册
服务
案例
模板
资讯
关于
联系
主页
>
新闻观点
>
今日头条
>
dedecms源码分析之文章列表arclist_lib.php
更新时间:2020-05-19 编辑:未知 关注人次:
0
云搜索
这个文件负责显示文章的列表。
包括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语句,然后使用
dede
sqli的 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函数就基本结束了,后面的都是跟缓存什么的有关的。
http://www.4435.cn/a/xinwenguandian/xinwenzixun/2020/0519/32375.html
本文地址:
http://www.4435.cn/a/xinwenguandian/xinwenzixun/2020/0519/32375.html
,转载请注明出处。
上一篇:
织梦DEDECMS文章排序方式及调用方法 织梦升序降序调用
返回列表
下一篇:
dedecms织梦设置为动态静态页面和文章的方法
最新动态
百度申请metaapp商标,多个互联网大厂入局元宇宙赛道
东北知名特色冷面品牌「奖故事」入驻VIPCMS建站平台
长春透水混凝土,长春彩色透水混凝土 - 长春圣唐生态技术有限公司
吉林省 我的中国梦 文化进万家 《文存阅刊》优秀文章欣赏——《相信学生,相信自己,用心教学》
吉林省家禾农业发展有限公司
赢牌润滑油、德国大众石油化工集团、赢牌润滑油厂家、赢牌润滑油官网 德国大众石油化工集团(香港)有限公司
相关资讯
长春之窗
dedecms更换默认编辑器为百度编辑器ueditor
如果建站之星无法打开,服务器升级后
织梦后台文章列表页分页错误问题 文章已经删除 分页显示 但是没有内容
吉林省 我的中国梦 文化进万家 《文存阅刊》优秀文章欣赏——《相信学生,相信自己,用心教学》
dedecms织梦设置为动态静态页面和文章的方法
服务支持
我们珍惜您每一次在线询盘,有问必答,用专业的态度,贴心的服务。
让您真正感受到我们的与众不同!
合作流程
常见问题
售后保障
5053050
81710510
13624467185
400-915-4435