欢迎您,零度科技专业海外服务器租用
公司电话: 24小时电话: 

当前位置:首页>网站建设教程>PHP教程>DedeCms教程

目录导航

DEDECMS栏目列表分页标识,内容页标题序号

香港高防(10G)机房 发布于 2011-03-17  
DedeCms教程

DedeCms栏目列表页大家都知道标题默认无法实现每页都使用不同的标题,这样对我们做SEO优化是非常不利的,这里我们给大家介绍下如何实现列表页每页都使用不同的标题,如有不会的朋友可以联系QQ(674068714) 接DedeCms二次开发,功能订制。

本文将介绍怎么给织梦栏目列表页添加分页标识(数字)。即要出现这样的效果:

列表第1页标题:SEO优化

列表第2页标题:SEO优化_第2页

列表第3页标题:SEO优化_第3页

当然,“_第2页”这样的效果是可以控制的。这样做就避免了同一栏目所有列表页的标题和摘要都完全一样的问题,使SEO效果更佳。

网络上也有不少朋友对这个问题提出了解决方案,但是据我所了解的情况,能找到的代码都是不完善的。比如最常见的一种不够完善的解决方法是:

改模板文件list_article.htm或者你使用的列表模板文件

<title>{dede:field.title/}_第{dede:pagelist listsize=’0′ listitem=’pageno’ function=’html2text(@me)’/}页</title>

用{dede:pagelist listsize=’0′ listitem=’pageno’ function=’html2text(@me)’/}可以调用第几页那个数字……但这样修改第一页也会出现分页标题,这样对优化来讲并不是很好!加以改进之后:

<title>{dede:field.title/}{dede:pagelist listsize=’0′ listitem=’pageno’ function=’html2text(@me)’/}</title>

在include中的arc.listview.class.php文件中找到

if(eregi(‘pageno’,$listitem)) $plist .= $listdd;

改成

if($listitem==’pageno’ && $list_len==0){

if(html2text($listdd)==1){

if(eregi(‘pageno’,$listitem)) $plist .= ”;

}

else{

if(eregi(‘pageno’,$listitem)) $plist = $plist .”(第”.$listdd.”页)”;

}

}

else{

if(eregi(‘pageno’,$listitem)) $plist .= $listdd;

}

这种做法还是有一个缺陷,当列表页只有1个页面的时候,标题会出现“SEO优化 共 1 页 5 条记录”这样的问题,直到列表页超过1个页面时问题才自动消失。

但是我们并不能保证每个栏目的列表页都会超过2页,所以我对代码进行了优化改进,目的就是解决以上问题。

方法1如下:

改模板文件list_article.htm或者你使用的列表模板文件

<title>{dede:field.title/}</title>

改成

<title>{dede:field.title/}{dede:pagelist listitem=”pageno” listsize=”0″ function=”html2text(@me)” runphp=”yes”}if (strlen(@me)>10 || @me==1) @me=”";else @me=”第”.@me.”页”;{/dede:pagelist}</title>

这样就完成了,不需要修改php文件,而且标题后面的文字可以控制。但是这里也有一个小小的问题,就是“第*页”的左右两侧都会出现一个空格,这也是这段代码不能解决的。虽然对于大多数朋友来说这样就已经够用了,但是如果你也像我一样追求完美,可以看看下面这种方法,不是很麻烦,而且很完美。

方法2如下:

改模板文件list_article.htm或者你使用的列表模板文件

<title>{dede:field.title/}</title>

改成

<title>{dede:field.title/}{dede:pagelist listitem=”paget” listsize=”0″ runphp=”yes”}if (strlen(@me)>10 || @me==1) @me=”";else @me;{/dede:pagelist}</title>

然后在\include\arc.listview.class.php文件中

1.找到

$listdd.= “<li class=\”thisclass\”>$j</li>\r\n”;

改成

$listdd.= “<li class=\”thisclass\”>$j</li>\r\n”;

$pagedd = “_第”.$j.”页”;

2.找到

if(eregi(‘pageno’,$listitem)) $plist .= $listdd;

改成

if(eregi(‘pageno’,$listitem)) $plist .= $listdd;

if(eregi(‘paget’,$listitem)) $plist .= $pagedd;

好了,大功告成了。其中$pagedd = “_第”.$j.”页”这个地方是你可以控制的,比如你不想要“SEO优化_第2页”这种样式而喜欢“SEO优化2”这种样式,就可以把$pagedd = “_第”.$j.”页”改成$pagedd = $j这样就可以了,修改之后就不会再出现相同栏目标题全都相同的情况。当然,你也可以可以把{dede:pagelist listitem=”paget” listsize=”0″ runphp=”yes”}if (strlen(@me)>10 || @me==1) @me=”";else @me;{/dede:pagelist}这段代码加入到摘要中,然后摘要就会出现分页标识(数字),这样做就使得SEO更细节化了。

注:由于编辑器原因,如果复制代码过程中出现中文符号如“,请统统改成英文符号”,不然修改不成功。如果程序是UTF8,请保存的时候也选择utf8格式。

 

内容页标题序号

实现方法:(适用于DedeV5.31 GBK/UTF-8 最后更新时间为:20090604)

修改文件:/include/arc.archives.class.php

修改行数:356行

修改代码如下:

展开arc.archives.class.php 代码复制内容到剪贴板

//循环生成HTML文件

else

{

for($i=1;$i<=$this->TotalPage;$i++)

{

$tempTitle=$this->Fields['title'];//临时存储一个标题副本

if($i>1)

{

   $truefilename = $this->GetTruePath().$fileFirst."_".$i.".".$this->ShortName;

   //为分页标题加上序号。2009.2.13

   $this->Fields['title'] = $this->Fields['title'].'('.$i.')';//在标题后面多加个序号

}

else   

{

   $truefilename = $this->GetTruePath().$filename;

}

$this->ParseDMFields($i,1);

$this->dtp->SaveTo($truefilename);

$this->Fields['title']=$tempTitle;//生成html,还原标题

}

}

本文出自零度科技转载请注明出处:http://www.ldisp.com/a/dedecms/2011/842.shtml

上一篇:DedeCms 文章内容关键词内链
下一篇:dede教程:总点击排行,月点击排行,周点击排行,日排行

 
了解零度?

零度科技主营全球服务器租用,如果您有服务器租用需求请联系

海外服务器租用

推荐香港、美国、韩国。提供站群服务器、高防服务器租用

海外特价服务器

关注零度特价服务器频道,了解全球特价服务器。

378

业务咨询

    技术服务

      特价活动
        全站搜索
        热门搜索:
        会员
        0通知
        客服
        0特价
        搜索
        TOP
        香港高防服务器,远程桌面,韩国服务器,nginx,反向代理