• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    dedecms 列表页标题修改图文方法(利于优化)

    发布者: 土豆服务器 | 发布时间: 2025-7-24 15:29| 查看数: 38| 评论数: 0|帖子模式

    最近看到sina.com.cn qq.com 163.com 这些大站的页面标题title ,发现他们的标题如下 
    频道页: 频道名_网站名 
    列表页:列表名_频道名_网站名 
    内容页:文章名_栏目二(列表名)_栏目一(频道名)_网站名 
    也想把自己的小站改成这样的,去查了查dedecms的帮助文档,发现没有这样相关标记,看来只能自己动手了,又开始baidu,发现这样的文章还不少,请查阅本站转来的另一篇文章, 
    DEDE实现“文章标题-栏目名称-网站名” 
    但身为一个技术人员又驱使我自己也写了一个,下面把我自己实现的方法及如何调用贴出来,方便大家使用 
    版本5.0,涉及到的类和模板有以下几个 

    inc_archives_view.php (最新5.5版为 arc.archives.class.php)内容页生成类 

    inc_arclist_view.php (最新5.5版为 arc.listview.class.php)列表页生成类 

    inc_typelink.php(最新5.5版为 typelink.class.php) 用于获取页面位置和栏目名相关类 
    index_article.htm 频道页模板 
    list_article.htm 列表页模板 

    article_article.htm 内容页模板 

    首先我们来修改dedecms的内核,(以下我说的文件名统一用5.0版,你可以对应上面我列出的文件一一查看新版对应的各文件) 

    在inc_typelink.php类里Ctrl+F查找 "function GetPositionLink" 在GetPositionLink()函数下入以下函数 

    这个函数用于获取 当前页面的位置信息 

    比如 栏目1_栏目2 
    以下为引用的内容: 
                            复制代码
                            代码如下:
           
            /* 
            * 得到当前页的位置,主要用在页面title中 
            * $typeid 栏目id 
            * &$info 引用传值 
            * $SplitSymbol 各栏目之间的分割符 
            * 排序 desc:栏目二_栏目一 ,asc:栏目一_栏目二 
            */ 
            function getPosition($typeid,&$info,$SplitSymbol='_',$orderby='desc'){ 
            if (empty($typeid)) return false; 
            $this->dsql->SetQuery("Select ID,reID,typename From jyk_arctype where ID='".$typeid."'"); 
            $infos = $this->dsql->GetOne(); 
            $symbol = empty($info)?""SplitSymbol; 
            if ($orderby=='desc'){ 
            $info = $info.$symbol.$infos['typename']; 
            } 
            else{ 
            $info = $infos['typename'].$symbol.$info; 
            } 
            if ($infos['reID']!='0'){ 
            $this->getPosition($infos['reID'],&$info,$SplitSymbol,$orderby); 
            } 
            } 
           
    如图: 

    接下来再在解析列表页,内容页的类里加入相关代码, 
    在inc_archives_view.php 类里查找 $this->Fields['position'] 在这一行下面加入以下代码 
                            复制代码
                            代码如下:
           
            $this->TypeLink->getPosition($this->Fields['typeid'],&$this->Fields['position2'],"_"); 
           
    在inc_arclist_view.php 类里同样查找 $this->Fields['position'] 在他下面加入以下代码 
                            复制代码
                            代码如下:
           
            $this->TypeLink->getPosition($typeid,&$this->Fields['position2'],"_"); 
           
    好了,现在我们在模板里调用 
    在list_article.htm和article_article.htm的title标签里用 {dede:field name='position2'/} 调用 
    如图 

    注:频道页无需用这样方法调用,虽然也可以得到频道名,但用{dede:field name='typename'/}调用更加方便,也不需要修改inc_arcpart_view.php类 
    实现效果如下: 

    O了,加上这篇文章,修改织梦系统使其实现 "文章名_栏目1_栏目2_网站名" 总共有4种不同的方法了,根据个人情况选择吧, 
    祝你的网站让baidu,google收录的更多,呵呵. 

    后话: 

    在开发这个功能时,发现dede像栏目数据表(平时不怎么改动)都不缓存, 程序在用时都是实时链接数据库查询,就比如inc_typelink.php中都是直接sql查出来的,不禁感叹phpcms在方面的处理要更优于dedecms, phpcms对平时不怎么更改的数据都是直接缓存成php文件,虽然dedecms最新版5.5的生成速度还可以,但织梦的开发人员如果能更好的优化这些细节,那生成速度岂不会更加快.

    来源:互联网
    免责声明:如果侵犯了您的权益,请联系站长(1277306191@qq.com),我们会及时删除侵权内容,谢谢合作!

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表