大家都知道dede程序自带一个栏目下的文章分页功能。 这个分页非常简单。 只要正确使用 dede 标签即可。 但是,如果您想对列下的子列进行分页怎么办? 比如有一个应用场景,某个栏目下有很多子栏目,无法在一页上显示,必须分页显示。 遇到这样的情况怎么办? 这肯定需要修改dede源代码。 如何修改呢? 应该更改哪些文件? 你会想到在网上寻找相关的教程,但是网上几乎没有品类栏目的分页教程。 今天钱网科技为您提供dede栏目下子栏目分页显示的实现方法。
要完成这个功能,只需要修改include文件夹中的arc.listview.class.php文件即可。 该文件是用于列内容列表的文件。 用于生成列列表的静态文件,该文件中有两个文件。 关键函数,一个是MakeHtml函数,另一个是GetArcList函数。 MakeHtml是主要的控制函数。 生成多少个页面、每页有多少篇文章、当前是哪个页面等都是在这个函数中完成的,而一个页面的具体文章内容是通过GetArcList获取的。 GetArcList函数返回当前页面文章的html代码。 了解了这两个函数之后,我们就知道如何完成我们想要的功能了。 我们来整理一下吧。 类别栏分页实际上是将类别列表中的内容替换为类别栏,所以我们需要修改的是总页数和一页的具体内容html。 下面我们贴出具体的代码来分析一下过程。
在MakeHtml函数中执行自定义函数CheckChannel。 作用是控制当前栏目列表内容是默认文章内容还是子栏目内容。 如果我们要在ID为1的列列表下显示的内容是它的子列,那么我们的代码是这样写的:
function CheckChannel()
{
$sql="SELECT id FROM `dede_arctype` where reid=".$this->TypeID." and reid=1";
$this->dsql->SetQuery($sql);
$this->dsql->Execute();
while($arr =$this->dsql->GetArray()) {
$this->ChannelIds[]=$arr['id'];
}
if(count($this->ChannelIds)>0)
{
$this->TotalResult=count($this->ChannelIds);
}
}
该函数的作用是获取ID为1的子列的ID集合,并将其存储在变量ChannelIds中。 如果集合不为空,则修改总页数,即TotalResult的值。
然后执行GetArcList函数中的一段代码。 代码判断上述变量ChannelIds是否为空。 如果不为空织梦栏目页调用,则返回自定义函数GetArcString返回的值。 作用是,如果上面的变量ChannelIds不为空,那么GetArcList函数返回的内容就是变量ChannelIds中所有ID对应的类别的内容。 该函数的具体代码如下:
function GetArcString($limitstart,$row)
{
$html='';
preg_match("/{dede:list.+?}([sS]+?){/dede:list}/",$this->dtp->SourceString,$m);
$ids=join(',',$this->ChannelIds);
$query="SELECT * FROM `dede_arctype` where id in ($ids) order by id desc limit $limitstart,$row";
$this->dsql->SetQuery($query);
$this->dsql->Execute();
while($arr=$this->dsql->GetArray())
{
$str=$m[1];
$str=str_replace('[field:title/]',$arr['typename'],$str);
$str=str_replace('[field:arcurl/]',$arr['siteurl'],$str);
$str=str_replace('[field:keywords/]',$arr['keywords'],$str);
$html.=$str;
}
return $html;
}
该函数的作用是通过正则规则获取当前模板的列表部分的html代码,然后查询ChannelIds中对应的子栏目,并根据已有的模板代码组合所有子栏目的html代码,并归还它。
通过添加这两个自定义函数,就可以完成子栏目分页显示的功能。 如果您在使用过程中有任何疑问织梦栏目页调用,可以联系钱网科技客服QQ。 小问题我们可以免费指导,大问题我们可以提供有偿服务。 未来,钱网科技将会发布更多关于dede二次开发的教程。 希望大家多多关注钱网科技!
本文由钱网科技湘潭网站建设原创。 转载请保留此地址! 否则将视为侵权,谢谢合作!