蓝莓博客

  • 今天是

织梦列表页内容混乱重复,分页显示混乱重复

摘要:如果你也遇到这个问题“织梦列表页内容混乱重复,分页显示混乱重复”那证明你也是有可能和蓝莓一样去采集内容导致的,也有可能是以为你写了排序规制但在配置文件里面又没有去添......
分享到:

如果你也遇到这个问题“织梦列表页内容混乱重复,分页显示混乱重复”那证明你也是有可能和蓝莓一样去采集内容导致的,也有可能是以为你写了排序规制但在配置文件里面又没有去添加导致的重复和错乱。

接下来就来看看蓝莓是如何解决这个问题的,这个问题困扰了蓝莓差不多一天的时间,去找各种教程。最后结合了各类的教程,终于解决了。

1、首先先看一下后台你的文章或者是软件是否有重复的内容,如果有就删掉相应的内容就好了,但一般都不可能是这样问题,无论是你用采集的,或者手动发的,都不太可能出现的,但还是要说一下。

2、检查出现问题的列表页文件,查看调用的标签是否调用正确。

    2.1、调用的标签必须是{dede:list}{/dede:list},而不是{dede:arclist}{/dede:arclist}。

3、检查后台栏目列表命名规则是否正确:


织梦列表页内容混乱重复,分页显示混乱重复_蓝莓博客

{typedir}/list_{tid}_{page}.html,不一定非要和这一样,但必须是这种格式的


如果上面检查都没有问题了,在生成后,还是发现分页的内容是重复的,这个时候有可能你也是遇到了蓝莓同样的问题,那就是上面说的默认排序出错了,这个时候我们就可以限制排序的来达到你要的效果。

我们先讲讲{dede:list}标签的排序方法


orderby='sortrank' 文档排序方式                        

orderby='hot' 或 orderby='click' 表示按点击数排列

orderby='sortrank' 或 orderby='pubdate' 按出版时间排列

orderby='near'

orderby=='lastpost' 按最后评论时间

orderby=='scores' 按得分排序

orderby='id' 按文章ID排序

orderby='rand' 随机获得指定条件的文档列表

orderby='scores' 按评论来排序 官方没有写的

倒序 orderway='asc'

orderway是设置排序的方式,值为desc和asc

dedecms列表页实现文档按权重weight排序(从小到大的顺序)方法:

1,在list_artcile.htm模板中使用

{dede:list pagesize='12′ orderby='weight' orderway='desc'}

2,然后修改include目录下的arc.listview.class.php

查找else if($orderby=="lastpost")

织梦列表页内容混乱重复,分页显示混乱重复_蓝莓博客

你就可以看到默认的五个排序类型,如果没有请添加添加,如果你闲麻烦的话,你也可以按照里面排序五种去添加到你的列表页里面,图片对于的是

orderby="senddate",orderby="id",orderby="hot",orderby="click",orderby="lastpost"

织梦列表页内容混乱重复,分页显示混乱重复_蓝莓博客

如果你觉得上面的五个不符合你的要求也可以自行添加


else if($orderby=="lastpost"){
         $ordersql = "  ORDER BY arc.lastpost $orderWay";
 }

可以在下面补充

else if($orderby=="weight") { $ordersql = " order by arc.weight $orderWay"; }

3,同样是这个文件,查找“if(ereg(‘hot|click|lastpost',$orderby))”改为:

if(ereg(‘hot|click|weight|lastpost',$orderby))

这样就可以实现列表页内容按权重排序,越小越靠前。蓝莓有的织梦版本是dedecms v5.7测试成功!这样在去生成整站,在看就会发现列表页正常了,分页显示也不会重复了。

接下来在说说蓝莓遇到了分页条数显示不是自己在列表页写的显示数一样的条数

比如蓝莓在分页这里写的是显示五页,但实际显示的也是为11页。

织梦列表页内容混乱重复,分页显示混乱重复_蓝莓博客

织梦列表页内容混乱重复,分页显示混乱重复_蓝莓博客

其实很简单,可能是织梦的作者在他写的时候要另外哪个效果,好了会到这个问题来,

首先,找到根目录—>include—>arc.listview.class.php

如果你的分页是静态的就找静态分页里面的

$total_list = $list_len * 2 + 1

修改成:

$total_list = $list_len

这样的话,你在列表页分页哪里写了多少就会显示多少页了

当然如果想理解他是什么意思请看下面

    {dede:pagelist listsize='1'/},显示:

    首页 1 2 3 下一页 末页

    {dede:pagelist listsize='2'/},显示:

    首页 1 2 3 4 5 下一页 末页

    {dede:pagelist listsize='3'/},显示:

    首页 1 2 3 4 5 6 7 下一页 末页

    即:显示的可点击分页数目为 listsize*2+1。

里面页的listsize就是上面的$list_len

下面在说说蓝莓在查找怎么解决这个问题的时候看到了列表页重复的第一页去除的方法分享给大家供大家参考。具体分析如下

织梦程序的文章列表页首页和列表页第一页是一样的,程序是直接把列表页第一页复制成首页的,这样就会出现两个相同的页面,我们这里介绍如何去除列表页第一页.

这里特别提醒大家,修改之前,请做好备份.

第一步:删除重复的类似list_1.html这个文件,打开 /include/arc.listview.class.php,搜索以下代码:

代码如下:

copy($list_1,$indexname);

在这行代码下面加上:

unlink($list_1);

这样就在生成html的时候自动将列表第一页删除.

第二步:将所有的分页第一页和首页链接指向首页,找到以下代码:

代码如下:

$tnamerule = ereg_replace('^(.*)/','',$tnamerule);

在下面加上:

代码如下:

if($this->Fields['ispart']==0&$this->Fields['defaultname']=="index.htm") 
{ 
$tnamerule1 =$this->GetMakeFileRule($this->Fields['id'],"index",$this->Fields['typedir'],$this->Fields['defaultname'],$this->Fields['namerule2']); 
$tnamerule1 = str_replace('index.htm','',$tnamerule1); 
$tnamerule2 = ereg_replace('^(.*)/','index.htm',$tnamerule1); 
}elseif($this->Fields['ispart']==0&$this->Fields['defaultname']=="index.html") 
{ 
$tnamerule1 =$this->GetMakeFileRule($this->Fields['id'],"index",$this->Fields['typedir'],$this->Fields['defaultname'],$this->Fields['namerule2']); 
$tnamerule1 = str_replace('index.html','',$tnamerule1); 
$tnamerule2 = ereg_replace('^(.*)/','index.html',$tnamerule1); 
}
else 
{ 
$tnamerule1 =$this->GetMakeFileRule($this->Fields['id'],"index",$this->Fields['typedir'],$this->Fields['defaultname'],$this->Fields['namerule2']); 
$tnamerule2 = ereg_replace('^(.*)/','',$tnamerule1); 
}

找到【  //获得上一页和主页的链接  】和【  //下一页,未页的链接  】,将中间的代码,看清楚是中间的代码替换以下代码:

代码如下:

if($this->PageNo != 1) 
{ 
if($prepagenum==1) 
{ 
$prepage.="<li><a href='".$tnamerule1."'>上一页</a></li>
"; 
} 
else 
{ 
$prepage.="<li><a href='".str_replace("{page}",$prepagenum,$tnamerule)."'>上一页</a></li>
"; 
} 
$indexpage="<li><a href='".str_replace("{page}",1,$tnamerule1)."'>首页</a></li>
"; 
}

找到【  //option链接】和【  //获得数字链接】,将中间的代码替换为以下代码:

代码如下:

$optionlist = ''; 
$optionlen = strlen($totalpage); 
$optionlen = $optionlen*12 + 18; 
if($optionlen < 36) $optionlen = 36; 
if($optionlen > 100) $optionlen = 100; 
$optionlist = "<li><select name='sldd' style='width:{$optionlen}px' οnchange='location.href=this.options[this.selectedIndex].value;'>
"; 
for($j=1;$j<=$totalpage;$j++) 
{ 
if($j==$this->PageNo) 
{ 
$optionlist .= "<option value='".str_replace("{page}",$mjj,$tnamerule)."' selected>$mjj</option>
"; 
}elseif($j==1) 
{ 
$optionlist .= "<option value='".$tnamerule2."'>$j</option>
"; 
} 
else 
{ 
$optionlist .= "<option value='".str_replace("{page}",$mjj,$tnamerule)."'>$mjj</option>
"; 
} 
} 
$optionlist .= "</select></li>
";

上面的$j是你可以查找一下for($j;$j<=$total_list;$j++),如果查找得到就不用改,如果查找不到应该就是$i

找到以下代码:

if($j==$this->PageNo) 
{ 
$listdd.= "<li class="thisclass"><a>$j</a></li>
"; 
}

在下面加上以下代码:

代码如下:

elseif($j==1){ 
$listdd.="<li><a href='".str_replace("{page}",$j,$tnamerule1)."'>".$j."</a></li>
"; 
}

以上就是蓝莓在这次织梦列表页内容混乱重复,分页显示混乱重复中学习到的一些心得,希望本文所述对大家的dedecms建站有所帮助。

文章是蓝莓原创,装载请说明出处

来源于蓝莓原文地址: http://www.xiyi88.cn/xq/dede_680.html