DedeCMS 织梦建站系统 dede:arclist 标签首页分页使用教程和存在的 BUG 修复。
1、引入 js 部分,而且要确保这 2 个文件存在 /include/dedeajax2.js 和 /plus/arcmulti.php
<script type=text/javascript src={dede:global.cfg_cmspath/}/include/dedeajax2.js></script> <script type=text/javascript> function multi(pagenum,tagid) { var taget_obj = document.getElementById(tagid); var taget_obj_page = document.getElementById(page_+tagid); myajax = new DedeAjax(taget_obj,false,false,'','',''); myajax.SendGet2({dede:global.cfg_cmspath/}/plus/arcmulti.php?mtype=0&pnum=+pagenum+'&tagid='+tagid); myajax = new DedeAjax(taget_obj_page,false,false,'','',''); myajax.SendGet2({dede:global.cfg_cmspath/}/plus/arcmulti.php?mtype=1&pnum=+pagenum+'&tagid='+tagid); DedeXHTTP = null; } </script>
2、以上是引用 AJAX 功能,实现时时翻页功能,下面是数据列表标签 和 分页标签
<dl> <dd> <ul class=d1 ico3> {dede:arclist titlelen='250' pagesize='5' tagid='myindex'} <li> <span>[field:pubdate function=MyDate('m-d',@me)/]</span> <a href=[field:arcurl /]>[field:title /]</a> </li> {/dede:arclist} </ul> </dd> </dl> <div class=page> {dede:arcpagelist tagid='myindex'/} </div> {dede:arclist titlelen='250' pagesize='5' tagid='myindex'} {dede:arcpagelist tagid='myindex'/}
上面两组标签中 tagid=”index”要对应上 ,而且 tagid 要统一,刷新页面会出来数字 123 分页了。
dede:arclist 分页存在 BUG 修复
1、修正数据库字段类型长度问题,不然{dede:arclist}中间部分代码过长会被截断{/dede:arclist}
UTF-8 的织梦程序在后台-系统-SQL 命令行工具,执行
ALTER TABLE `#@__arcmulti` CHANGE `innertext` `innertext` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '';
GBK 的织梦程序在后台-系统-SQL 命令行工具,执行
ALTER TABLE `#@__arcmulti` CHANGE `innertext` `innertext` TEXT CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL DEFAULT '';
2、修复只能获取 10 条数据问题
打开 /include/taglib/arclist.lib.php 找到
$idsstr = join(',', $ids);
在它下面加入arclist分页BUG修复
$query = SELECT arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule, tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath $addfieldsSql FROM `$maintable` arc LEFT JOIN `#@__arctype` tp on arc.typeid=tp.id $addfieldsSqlJoin $orwhere $ordersql; $dsql->SetQuery($query); $dsql->Execute('tag'); while($row = $dsql->GetArray('tag')) { $tagids[] = $row['id']; } $idsstr = join(',', $tagids);
arclist分页BUG修复
最后还需要在后台-系统-SQL命令行工具,执行
TRUNCATE `#@__arcmulti`;
扩展做翻页样式
找到文件 dedeincludetaglibarcpagelist.lib.php,找到方法 function multipage,翻页样式在这里修改以下是做好的一断代码可以直接复制
function multipage($allItemTotal, $currPageNum, $pageSize, $tagid='') { if ($allItemTotal == 0) return ; //计算总页数 $pagesNum = ceil($allItemTotal/$pageSize); //第一页显示 $firstPage = ($currPageNum <= 1) ? <span>[首页]</span> : <a href='javascript:multi(1,{$tagid})' title='第1页'><span>[首页]</span></a>; //最后一页显示 $lastPage = ($currPageNum >= $pagesNum)? <span>[尾页]</span>. $currPageNum : <a href='javascript:multi(. $pagesNum . ,{$tagid})' title='第. $pagesNum .页'><span>[尾页]</span></a>; //上一页显示 $prePage = ($currPageNum <= 1) ? <span>[上一页]</span> : <a href='javascript:multi(. ($currPageNum-1) . ,{$tagid})' accesskey='p' title='上一页'><span>[上一页]</span></a>; //下一页显示 $nextPage = ($currPageNum >= $pagesNum) ? <span>[下一页]</span> : <a href='javascript:multi(. ($currPageNum+1) .,{$tagid})' title='下一页'><span>[下一页]</span></a>; //共X页 共X条记录 $pagesNum2 = 共 .$pagesNum. 页 共 .$allItemTotal. 条记录; //按页显示 $listNums = ; $listNums.= $firstPage; $listNums.= $prePage; for ($i=($currPageNum-4); $i<($currPageNum+9); $i++) { if ($i < 1 || $i > $pagesNum) continue; if ($i == $currPageNum) { $listNums.= <a href='javascript:void(0)' class='thislink'><span>.$i.</span></a>; }else { $listNums.= <a href='javascript:multi(. $i .,{$tagid})' title='. $i .'><span>. $i .</span></a> ; } } $listNums.= $nextPage; $listNums.= $lastPage; $listNums.= $pagesNum2; $returnUrl = $listNums; return $returnUrl; }
刷新后效果:[首页][上一页]12345[下一页][尾页]
CSS 分页样式
在模板头文件 head 中间加入如下代码:
<style> * { padding: 0; margin: 0; } /* * 外面盒子样式---自己定义 */ .page_div { font-size: 12px; font-family: microsoft yahei; color: #666666; margin-right: 10px; padding-left: 42px; box-sizing: border-box; } /* * 页数按钮样式 */ .page_div span { min-width: 30px; height: 28px; border: 1px solid #dce0e0!important; text-align: center; margin: 0 4px; cursor: pointer; line-height: 28px; color: #666666; font-size: 13px; display: inline-block; } </style>
调用 CSS 样式:
<div class=page_div align=center> {dede:arcpagelist tagid='index'/} </div>