我们在使用织梦建站时,很多时候想在首页调用到一个文章列表,以博客的形式显示最新文章列表,这就需要有一个分页功能。网上有很多人都转载了一个方法,但是很多人不知道这个方法还有一个问题需要处理,我先把网上的方法代码展示一下:
在首页的</head>前面加上
<script language="javascript" type="text/javascript" src="{dede:global.cfg_cmsurl/}/include/dedeajax2.js"></script>
第二步:必须引入以下javascript代码:
<script>
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("/plus/arcmulti.php?mtype=0&pnum="+pagenum+'&tagid='+tagid);
myajax = new DedeAjax(taget_obj_page,false,false,'','','');
myajax.SendGet2("/plus/arcmulti.php?mtype=1&pnum="+pagenum+'&tagid='+tagid);
DedeXHTTP = null;
}
</script>
第三步:在arclist标签中必须含有tagid与pagesize参数。 第一个是缓存名,第二个是单页条数;例如:
{dede:arclist tagid='index' pagesize='5'}
<li><b><a href="[field:arcurl/]" style="color: #FF6633">[field:title/]</a></b></li>
<p class="my_tj_info">[field:info/]...</p>
{/dede:arclist}
第四步:必须存在arcpagelist标签,且必须声明缓存参数tagid且缓存参数与arclist中tagid保持一致。例如:
{dede:arcpagelist tagid='index'/}
好了,到此就是网上很多人转载的方法,一开始我也是完全按照网上的方法做的,但是一直没调用出来,百思不得其解。
后来对代码进行跟踪,发现这个分页的样式不是自已定义的,而是根据代码调用arcpagelist的标签名自动获取的。比如我定义的是{dede:arcpagelist tagid='index'/} ,那么,dede_arcmulti表中会自动生成一个index的分页数据,格式就是{dede:arclist tagid='index' row='20' titlelen='57' orderby='pubdate' typeid='7‘ pagesize='4'}标签中的内容,因为字义了tagid='index',所以它就生成一个以index为命名的分页数据。
其实到这里,我还是不明白,为什么这个表的数据是自动生成的,而我的分布样式怎么会不正确呢?就是打开页面的时候,样式正常,点第二页,变形,第三页,变形,点回第一页,同样变形。最后,我检查了一下这个数据表中的innertext字段内容,里面保存的是不完整的一段HTML代码,不完整?原因是因为此字段长度不够,是仅有255字符的char类型字段,马上改成text类型,重新生成首页,问题解决。
结尾再附上分页代码及样式代码
css样式:
/* 首页分页样式 */ #page_index a{ display: inline-block; } #page_index li{display: inline;} #page_index .active{ background-color: #45B6F7;color: #fff;} #page_index .total_page{color: #999999;background-color: transparent;cursor: default;} #page_index span{margin: 0 2px;float: left;padding: 5px 12px;background-color: #ddd;color: #666;border-radius: 2px;opacity: .88;} #page_index li a{margin: 0 2px;float: left;padding: 5px 12px;background-color: #ddd;color: #666;border-radius: 2px;opacity: .88;} /* 手机端不显示有多少页 */ @media (max-width: 480px) {#page_index .total_page{display: none;} .pagination .pageinfo{display: none;} } #page_index .thislink{color: #999999;}
分页代码:
include/taglib/arcpagelist.lib.php(大概73行)
把
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'>".$i."</a>"; else $listNums.= " <a href='javascript:multi(". $i .",\"{$tagid}\")' title='". $i ."'>". $i ."</a> "; }
修改为
if($currPageNum<=1){ $listNums.= "<li><a href='javascript:void(0)' class='thislink'>上一页</a></li> <span class=\"active\">$currPageNum</span> <li><a href='javascript:multi(".($currPageNum+1).",\"{$tagid}\")'>下一页</a></li> <span class=\"total_page\">共 $pagesNum 页</span>"; } elseif(($currPageNum >= $pagesNum)){ $listNums.= "<li><a href='javascript:multi(".($currPageNum-1).",\"{$tagid}\")'>上一页</a><li> <span class=\"active\">$currPageNum</span> <li><a href='javascript:void(0)' class='thislink'>下一页</a></li> <span class=\"total_page\">共 $pagesNum 页</span>"; }else{ $listNums.= "<li><a href='javascript:multi(".($currPageNum-1).",\"{$tagid}\")'>上一页</a></li> <span class=\"active\">$currPageNum</span> <li><a href='javascript:multi(".($currPageNum+1).",\"{$tagid}\")'>下一页</a></li> <span class=\"total_page\">共 $pagesNum 页</span>"; }
实际效果: