PDA

View Full Version : dedecms v5.7sp1给channel增加limit属性


Haddon Heights
2014-05-03, 06:16 AM
做网站的时候通常会调用指定的栏目,而channel标签默认不支持limit属性,现在教大家如果给channel增加limit属性。调用方法,在原来的基础上增加了一个limit。
limit是起点,row是条数 ,模版调用例子:

{dede:channel type='son' limit='3' typeid='1' reid='1' row='5' "<a href='~typelink~' class='thisclass'>~typename~</a> |"}
<a href="[field:typelink/]"><span class="aaa">[field:typename/]</span></a>
{/dede:channel}


修改步骤:
找到标签文件include\taglib\channel.lib.php

1、

找到$attlist = "typeid|0,reid|0,row|100,col|1,type|son,currentstyle|,cacheid|";

改成$attlist = "typeid|0,reid|0,row|100,col|1,type|son,currentstyle|,cacheid|,limit|0";

2、



if($type=='top')

{

$sql = "SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath

From `#@__arctype` WHERE reid=0 And ishidden<>1 order by sortrank asc limit 0, $line ";

}

else if($type=='son')

{

if($typeid==0) return '';

$sql = "SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath

From `#@__arctype` WHERE reid='$typeid' And ishidden<>1 order by sortrank asc limit 0, $line ";

}

else if($type=='self')

{

if($reid==0) return '';

$sql = "SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath

FROM `#@__arctype` WHERE reid='$reid' And ishidden<>1 order by sortrank asc limit 0, $line ";

}

//And id<>'$typeid'

$needRel = false;

$dtp2 = new DedeTagParse();

$dtp2->SetNameSpace('field','[',']');

$dtp2->LoadSource($innertext);

//检查是否有子栏目,并返回rel提示(用于二级菜单)

if(preg_match('#:rel#', $innertext)) $needRel = true;



if(empty($sql)) return '';

$dsql->SetQuery($sql);

$dsql->Execute();



$totalRow = $dsql->GetTotalRow();

//如果用子栏目模式,当没有子栏目时显示同级栏目

if($type=='son' && $reid!=0 && $totalRow==0)

{

$sql = "SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath

FROM `#@__arctype` WHERE reid='$reid' And ishidden<>1 order by sortrank asc limit 0, $line ";

$dsql->SetQuery($sql);

$dsql->Execute();

}




把上面四个limit 0, $line 修改成 limit $limit, $line 。修改后如下:



if($type=='top')

{

$sql = "SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath

From `#@__arctype` WHERE reid=0 And ishidden<>1 order by sortrank asc limit $limit, $line ";

}

else if($type=='son')

{

if($typeid==0) return '';

$sql = "SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath

From `#@__arctype` WHERE reid='$typeid' And ishidden<>1 order by sortrank asc limit $limit, $line ";

}

else if($type=='self')

{

if($reid==0) return '';

$sql = "SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath

FROM `#@__arctype` WHERE reid='$reid' And ishidden<>1 order by sortrank asc limit $limit, $line ";

}

//And id<>'$typeid'

$needRel = false;

$dtp2 = new DedeTagParse();

$dtp2->SetNameSpace('field','[',']');

$dtp2->LoadSource($innertext);

//检查是否有子栏目,并返回rel提示(用于二级菜单)

if(preg_match('#:rel#', $innertext)) $needRel = true;



if(empty($sql)) return '';

$dsql->SetQuery($sql);

$dsql->Execute();



$totalRow = $dsql->GetTotalRow();

//如果用子栏目模式,当没有子栏目时显示同级栏目

if($type=='son' && $reid!=0 && $totalRow==0)

{

$sql = "SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath

FROM `#@__arctype` WHERE reid='$reid' And ishidden<>1 order by sortrank asc limit $limit, $line ";

$dsql->SetQuery($sql);

$dsql->Execute();

}