您的位置:时间博客>前端>解决织梦arclist分页失败页面变形及美化样式

解决织梦arclist分页失败页面变形及美化样式

我们在使用织梦建站时,很多时候想在首页调用到一个文章列表,以博客的形式显示最新文章列表,这就需要有一个分页功能。网上有很多人都转载了一个方法,但是很多人不知道这个方法还有一个问题需要处理,我先把网上的方法代码展示一下:


在首页的</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>";
    }


实际效果:

blob.png


转载请注明本文标题和链接:《 解决织梦arclist分页失败页面变形及美化样式

相关推荐

网友评论 0

未登陆 表情
Ctrl+Enter快速提交