织梦用{dede:sql}标签实现分页的方法

 时间:2026-02-15 09:34:02

1、打开网站根目录下include文件夹内的arc.listview.class.php文件

织梦用{dede:sql}标签实现分页的方法

2、找到代码:

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

织梦用{dede:sql}标签实现分页的方法

3、  然后找到代码:

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")

)

);

}

织梦用{dede:sql}标签实现分页的方法

4、  这第三步找到的代码其后添加如下代码:

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

织梦用{dede:sql}标签实现分页的方法

5、然后找到function GetArcList这个函数

织梦用{dede:sql}标签实现分页的方法

6、在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

织梦用{dede:sql}标签实现分页的方法

7、总共就添加三段代码,每一段代码基本都参考它紧接着的上面那段原始代码,而无需改变它原来任何一个地方的代码,调用范例:{dede:listsql sql='select ID,post_title from wp_posts' pagesize='10'} <li><a href="[field:ID/].html">[field:post_title/]</a></li> {/dede:listsql} <!--分页--> {dede:pagelist listsize='2' listitem='index pre pageno next end '/}

织梦用{dede:sql}标签实现分页的方法

  • 织梦CMS首页登录后返回首页的方法
  • z-blog php搭建网站使用教程
  • 如何调用织梦dedecms默认分页样式
  • 如何给网站加入百度主动推送?
  • 易语言怎么换皮肤
  • 热门搜索
    儿童节手抄报 保护眼睛手抄报 科技节手抄报 科技手抄报内容 端午节手抄报图片 家风家训手抄报 节约用电手抄报 我爱阅读手抄报 元宵节手抄报内容 创建文明城市手抄报