织梦列表页点击自动加载下一页

本文介绍了如何在织梦CMS中实现列表页点击加载更多内容的功能。需编辑include/arc.listview.class.php文件,修改特定代码,并删除或注释掉相关返回语句。完成修改后,可以通过特定HTML和/plus/fanye.php来测试和应用此功能。对于自定义模型,需相应调整表名。

需要先修改一个系统文件,打开/include/arc.listview.class.php,查找以下代码(会查找到两个,两个都要改):

if(preg_match('/index/i', $listitem)) $plist .= $indexpage;         
if(preg_match('/pre/i', $listitem)) $plist .= $prepage;  
if(preg_match('/pageno/i', $listitem)) $plist .= $listdd;         
if(preg_match('/next/i', $listitem)) $plist .= $nextpage;         
if(preg_match('/end/i', $listitem)) $plist .= $endpage;         
if(preg_match('/option/i', $listitem)) $plist .= $optionlist;         
if(preg_match('/info/i', $listitem)) $plist .= $maininfo;

修改成:

$PageNo = $this->PageNo;         
$TotalResult = $this->TotalResult;         
$TotalPage = $totalpage;         
$PageSize = $this->PageSize;         
if(preg_match('/thisPage/i', $listitem)) $plist .= $PageNo;         
if(preg_match('/TotalResult/i', $listitem)) $plist .= $TotalResult;         
if(preg_match('/TotalPage/i', $listitem)) $plist .= $TotalPage;         
if(preg_match('/PageSize/i', $listitem)) $plist .= $PageSize;
//上面是新添加的代码
if(preg_match('/index/i', $listitem)) $plist .= $indexpage;         
if(preg_match('/pre/i', $listitem)) $plist .= $prepage;  
if(preg_match('/pageno/i', $listitem)) $plist .= $listdd;         
if(preg_match('/next/i', $listitem)) $plist .= $nextpage;         
if(preg_match('/end/i', $listitem)) $plist .= $endpage;         
if(preg_match('/option/i', $listitem)) $plist .= $optionlist;         
if(preg_match('/info/i', $listitem)) $plist .= $maininfo;

继续在这个文件中搜索“条记录”,查找出四个含有return的结果,将这四句话全部删除或注释。修改后就可以通过以下标签进行一些操作:

文档总数:{dede:pagelist listitem="TotalResult"/}
分页总数:{dede:pagelist listitem="TotalPage"/}
分页大小:{dede:pagelist listitem="PageSize"/}
当前页码:{dede:pagelist listitem="thisPage"/}

HTML测试页

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>测试</title>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">
</script>
</head>
<body>
<h2>下面是加载的内容</h2>
<div id="list_box">
{dede:list pagesize='5' orderby='id'}
<p>列表内容</p>
{/dede:list}
<p>在我下边出现</p>
</div>
<div id="jiazai" style="color:#fff;background:#ff0000;width:200px;padding:10px;text-align:center">加载下一页</div>
<script>
var typeid='{dede:field.id/}';
var page='{dede:pagelist listitem="thisPage"/}';
var total='{dede:pagelist listitem="TotalPage"/}';
if(total=='' || total=='1'){
	$("#jiazai").remove();
}

$(document).ready(function(){
	$("#jiazai").click(function(res){
		$.post("/plus/fanye.php",{typeid:typeid,page:page},function(res){
			var data=JSON.parse(res);
			var obj ="";
			var total="";
			$.each(data,function(title,content){
				obj+='序列:'+title+'&nbsp;文章ID:'+content.aid+'&nbsp;文章标题:'+content.title+'&nbsp;文章摘要:'+content.description+'<br/>';
			});
			$("#list_box").append(obj);
		});
		page++;
		if(page>=total){
			$("#jiazai").remove();
		}
	});
});
</script>
</body>
</html>

/plus/fanye.php中的内容

<?php
/**
 * 可以引用的信息:
 * typeurl			栏目地址
 * aid				文章ID
 * title			文章标题
 * shorttitle		文章短标题
 * arcurl			文章地址
 * view				文章动态地址
 * body				文章内容
 * date				文章发表日期
 * litpic			文章缩略图
 * info		文章摘要
 */
 
$pagesize=5;//每页显示记录数,必须和列表页pagesize保持一致
$titlelen=20;//标题长度,0为默认长度
$infolen=30;//摘要长度,0为默认长度

require_once(dirname(__FILE__)."/../include/common.inc.php");
if(empty($_POST['typeid'])){
	showMsg('非法操作!', 'javascript:;');
    exit();}
$typeid=$_POST['typeid'];
if(empty($_POST['page'])){
	$page='2';
}else{
	$page=$_POST['page']+1;//当前是第几页
}

$rown = $dsql->GetOne("select COUNT(*) as num From `#@__archives` where typeid='$typeid' and arcrank='0'");
$num=$rown['num'];//文章总数,过滤掉回收站和待审核的文章
$total=ceil($num/$pagesize);//总页数
$arcstart=($page-1)*$pagesize;//从第几条开始
$nowsize=$num%$pagesize;//当前页文章剩余数

//判断当前页加载多少篇文章
if($page<$total){
	$size=$pagesize;
}elseif($page==$total){
	$size=$nowsize;
}else{
	$size=0;
}

//获取需要的变量
for($i=1;$i<=$size;$i++){
	$i1=$i+$arcstart-1;
	$i2=$i+$arcstart;
	$row=$dsql->GetOne("Select a.*,b.* From `#@__addonarticle` a,`#@__archives` b where a.aid=b.id and b.arcrank='0' and a.typeid='$typeid' order by aid desc limit $i1,$i2");
	$row2=$dsql->GetOne("Select * From `#@__arctype` where id='$typeid'");
	$typeurl=str_replace('{cmspath}','',$row2['typedir']);//栏目地址
	$aid=$row['aid'];//文章ID
	$titlelen=='0'?$title=$row['title']:$title=mb_substr($row['title'],0,$titlelen,'utf-8');//文章标题
	$shorttitle=$row['shorttitle'];//文章短标题
	$arcurl=$typeurl.'/'.$aid.'.html';//文章地址,需要在新建栏目时将文章命名规则改为:{typedir}/{aid}.html
	$view='/plus/view.php?aid='.$aid;//文章页动态地址
	$date=date("Y-m-d",$row['senddate']);//发布时间,格式Y-m-d H:i,对应“年月日时分”
	if($row['litpic']==''){
		$indexurl=$dsql->GetOne("Select value From `#@__sysconfig` where aid='4'");
		$litpic=$indexurl['value']."/images/defaultpic.gif";
	}else{
		$litpic=$row['litpic'];//文章缩略图地址
	}
	$infolen=='0'?$info=$row['description']:$info=mb_substr($row['description'],0,$infolen,'utf-8');//文章摘要
	$body=strip_tags($row['body']);//文章内容,过滤html标签
	$box[]=array('typeurl'=>$typeurl,'aid'=>$aid,'title'=>$title,'shorttitle'=>$shorttitle,'arcurl'=>$arcurl,'view'=>$view,'body'=>$body,'date'=>$date,'litpic'=>$litpic,'info'=>$info);
}
echo(json_encode($box));
?>

注意如果是自定义模型,需要修改“#@__addonarticle”为自己定义的表名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值