织梦dedecms程序sql标签实现分页功能

{ dede :list pagesize='7'}{/dede:list}改用{dede:listsql}调用的方法 打开include/arc.listview.class.php 找到: if(!is_object($ctag)) { $ctag = $this-dtp-GetTag(list); } 这一段,在其后添加如下代码: if(!is_object($ctag)) { $ctag = $this-dtp-G

 {dede:list pagesize='7'}{/dede:list}改用{dede:listsql}调用的方法

打开include/arc.listview.class.php

找到:

if(!is_object($ctag)) { $ctag = $this->dtp->GetTag("list"); }
这一段,在其后添加如下代码:

if(!is_object($ctag)) { $ctag = $this->dtp->GetTag("listsql"); if (is_object($ctag)) { $cquery = $ctag->GetAtt("sql"); $cquery = preg_replace("/SELECT(.*?)FROM/is", " SELECT count(*) as dd FROM ", $cquery); $cquery = preg_replace("/ORDER(.*?)SC/is", "", $cquery); $row = $this->dsql->GetOne($cquery); if(is_array($row)) { $this->TotalResult = $row['dd']; } else { $this->TotalResult = 0; } } } //end

然后找到:

if($ctag->GetName()=="list") { $limitstart = ($this->PageNo-1) * $this->PageSize; $row = $this->PageSize; if(trim($ctag->GetInnerText())=="") { $InnerText = GetSysTemplets("list_fulllist.htm"); } else { $InnerText = trim($ctag->GetInnerText()); } $this->dtp->Assign($tagid, $this->GetArcList( $limitstart, $row, $ctag->GetAtt("col"), $ctag->GetAtt("titlelen"), $ctag->GetAtt("infolen"), $ctag->GetAtt("imgwidth"), $ctag->GetAtt("imgheight"), $ctag->GetAtt("listtype"), $ctag->GetAtt("orderby"), $InnerText, $ctag->GetAtt("tablewidth"), $ismake, $ctag->GetAtt("orderway") ) ); }
这一段,在其后添加如下代码:

else if($ctag->GetName()=="listsql") { $limitstart = ($this->PageNo-1) * $this->PageSize; $row = $this->PageSize; if(trim($ctag->GetInnerText())=="") { $InnerText = GetSysTemplets("list_fulllist.htm"); } else { $InnerText = trim($ctag->GetInnerText()); } $this->dtp->Assign($tagid, $this->GetSqlList( $limitstart, $row, $ctag->GetAtt("sql"), $InnerText ) ); } //end
最后找到function GetArcList这个方法,在其后添加一个可以通过传入sql参数获取指定数据源的方法,代码如下:

/** * 通过listsql标签中sql属性传入的参数来获得一个单列的文档列表 * */ function GetSqlList($limitstart = 0, $row = 10, $sql = '', $innertext){ global $cfg_list_son; $innertext = trim($innertext); if ($innertext == '') { $innertext = GetSysTemplets('list_fulllist.htm'); } //处理SQL语句 $limitStr = " LIMIT {$limitstart},{$row}"; $this->dsql->SetQuery($sql . $limitStr); $this->dsql->Execute('al'); $t2 = ExecTime(); //echo $t2-$t1; $sqllist = ''; $this->dtp2->LoadSource($innertext); $GLOBALS['autoindex'] = 0; //获取字段 while($row = $this->dsql->GetArray("al")) { $GLOBALS['autoindex']++; if(is_array($this->dtp2->CTags)) { foreach($this->dtp2->CTags as $k=>$ctag) { if($ctag->GetName()=='array') { //传递整个数组,在runphp模式中有特殊作用 $this->dtp2->Assign($k,$row); } else { if(isset($row[$ctag->GetName()])) { $this->dtp2->Assign($k,$row[$ctag->GetName()]); } else { $this->dtp2->Assign($k,''); } } } } $sqllist .= $this->dtp2->GetResult(); }//while $t3 = ExecTime(); //echo ($t3-$t2); $this->dsql->FreeResult('al'); return $sqllist; } //end

 



 

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

我们在做 织梦模板 开发时,有时需要在artlist 和list标签中调用出图集中的图片,同时可以自定调用几张图片。跟版网整理了个一个这样功能的自定义函数。调用后效果如下: dedecms织梦artlist和list标签调用图集图片实现方法 函数代码 请将代码加入到 /includ
近研究了一下织梦CMS系统,看到一篇关于sql标签调用数据列表如何翻页的文章,感觉不错,贴出来大家分享一下。相信很多使用dedecms的朋友在网上查找关于dede:sql标签进行分页的解决方案时都不尽如人意,尤其是在列表页使用dede:sql调用外部数据(所谓调用外部
在使用织梦dedecms做网站时,有时在同一样栏目下多个文章,当前文章下希望显示出自己样式。 {dede:arclist typeid=1 row=8 currentstyle=li class=ona href=~arcurl~~title~/a /li} lia href=[field:arcurl/][field:title/]/a/li {/dede:arclist} 怎么二次开
当我们需要在前端输出图片+对应的图片注释描述时,需要用到图集功能;当我们自定义模型或者商品模型、软件模型需要也要用到图片+注释描述时,也需要用到图集功能。 备份你后台目录以下4个文件 \dede\archives_add.php \dede\archives_edit.php \dede\templet
当我们需要在前端输出图片+对应的图片注释描述时,需要用到图集功能;当我们自定义模型或者商品模型、软件模型需要也要用到图片+注释描述时,也需要用到图集功能。 备份你后台目录以下4个文件 \dede\article_add.php \dede\article_edit.php \dede\templets\
当我们需要在前端输出图片+对应的图片注释描述时,需要用到图集功能;当我们自定义模型或者商品模型、软件模型需要也要用到图片+注释描述时,也需要用到图集功能。 备份你后台目录以下4个文件 \dede\soft_add.php \dede\soft_edit.php \dede\templets\soft_a