Dede织梦dede:arclist首页分页教程和BUG修复

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 = &nbsp;&nbsp;共&nbsp;.$pagesNum.&nbsp;页&nbsp;&nbsp;共&nbsp;.$allItemTotal.&nbsp;条记录;
 
//按页显示
$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>

相关文章

文章浏览阅读483次。dedecms织梦频道模板中调用栏目分类并排...
文章浏览阅读284次。我们在用织梦建站的过程中,难免会遇到各...
文章浏览阅读152次。seo专题是seo优化必不可少的一环,对于网...
文章浏览阅读142次。在Dedecms中,在列表页调用文章摘要的方...
文章浏览阅读234次。织梦DedeCMS文章内容发布时可以选择“头...
文章浏览阅读701次。虽然织梦DedeCMS因为安全问题被人所诟病...