discuz!论坛基础优化实践(一)|discuz!论坛meta,content 优化



discuz!论坛基础优化实践(一)|discuz!论坛meta,content 优化

首页 SEOSEM 论坛seo优化 discuz!论坛seo discuz!搜索引擎优化 discuz!论坛metacontent优化 论坛seo优化教程

discuz!论坛用量相当之大,关于discuz!论坛 discuz!教程 discuz!设置 discuz!优化的文章举不胜举,今天这篇案例,所说的是discuz!论坛meta,content 优化,它是discuz!论坛基础优化实践系列中的一篇,以后几天,我会把discuz!论坛基础优化实践系列的所有文章都转过来,大家学习学习如何优化discuz!论坛。

meta的优化

discuz的后台可以对meta信息进行设置,甚至可以添加自己的头部信息,但它的设置都是针对于所有页面的,全部页面都拥有相同的keywords和description是SEO所不赞成的。

方案一:删除meta

修改页头模板文件 templates/default/header.htm:将meta的keywords和description标签删除。

这两个标签作用很小了,而且还有discuz自带的一些无用信息,用得不好反而会有坏作用,因此宁缺勿滥。

方案二:定制meta

本部分实现了将内容页keywords设为帖子标题,description为内容前100字;也实现了主页与各版列表页meta的单独设置(不同版的不同,同一版各列表页相同)。

1.修改页头模板文件 templates\default\header.htm:将meta的keywords和description标签改为如下形式
<meta name="keywords" content="{$metakeywords}$seokeywords" />
<meta name="description" content="$seodescription" />

这里的$seokeywords、$seodescription就是后台设置的那个值,下面说怎么定制这个值;{$metakeywords}是奇虎的关键字,留下以后处理

2.内容页(viewthread)设置keywords为帖子标题,description为内容前100字

2.1修改 viewthread.php 文件:
在 include template('viewthread'); (更新:dz5.5为iinclude template($iscircle ? 'supesite_viewthread' : 'viewthread'); ) 语句的上面加入一行:
require_once DISCUZ_ROOT.'./include/bmt.thread.inc.php';

2.2创建 include/bmt.thread.inc.php 文件,内容为
<?php
if(!defined('IN_DISCUZ')) { exit('Access Denied'); }

$seokeywords = strip_tags($thread['subject']); //关键字设为帖子的标题
//(已更新: nethome 提出问题,当启用主题分类并允许按类别浏览时,原来代码会有问题。所以加了标签过滤,本来在viewthread.php中改更好,为以后升级方便,还是放在这里吧,subject很短,不会影响效率)

$seodescription = current( $postlist );
$seodescription = mb_substr( $seodescription['message'],0,100,"gb2312" );//description取文章内容的前100字
$seodescription = htmlspecialchars( strip_tags($seodescription) );
?>

*此处数字和个别函数适用于GBK版本

最后一行作用是过滤内容中的html,否则在meta中会引起语法错误。先是去除HTML标签,但因为这里是前100字,有可能html标签已经被截断了,所以又用了htmlspecialchars转义一下,有可能会有些垃圾信息。
当然也可以在截取之前用strip_tags去除html标签,可能效率会差了。

*所以此处表达式您需要根据自己的情况修改。
我目前用的是preg_replace( '/[^\xa1-\xff]/', '', $seodescription ),即过滤汉字以外的所在内容,但这样会损失英文关键字。

别外说明,此处数据都是viewthread.php已取好的,所以不会产生额外的数据库操作,只是做了字符串处理,不会引响效率。


3.列表页(forumdisplay)设置不同的keywords和description

3.1修改 forumdisplay.php 文件,在 include template('forumdisplay'); 语句上面添加
require_once DISCUZ_ROOT.'./include/bmt.forum.inc.php';

3.2创建 include/bmt.forum.inc.php 文件,内容为
<?php
if(!defined('IN_DISCUZ')) { exit('Access Denied'); }
$seokeywords = strip_tags($forum['name'] );
$seodescription = strip_tags($forum['description']);


switch ( $forum['fid'] ){
    case 1: //此数字为版的ID号,不同版设置不同的meta
        $seokeywords = 'key1,key2,...';
        $seodescription = 'xxxx xxxx xxxx';
        break;
    case 2:
        $seokeywords = 'key1,key2,...';
        $seodescription = 'xxxx xxxx xxxx';
        break;

}
?>
//更新:一般情况下可以不用switch和case,列表页的关键字为版名,说明为版的说明,若要对某个版设置特殊的关键字和说明,可以设置case。这样解决了版面很多时要设置很多case语句,加快了程序执行速度(不了解php,JAVA的case进行了优化,执行很快)

使用修改文件来实现,每版的meta改起来不方便,感觉有些弱智,呵呵。但没有改数据库,用了两个单独的文件,修改了两个文件也很简单,这样升级或迁移更方便吧

case虽然多了一些,但比起读数据库的记录,速度应该快很多


4.主页meta
在后台设置即可。(如果2、3不做,则meta也同主页)

content的优化
discuz有个archiver,一是URL容易收录,二是页面比较干静,还有description会从正文中取内容,但archiver没有对内容中[b][url]之类的解析,那些标签起不到作用,原样显示还会增加垃圾信息。
本部分主要做两方面的优化,一是去除内容页的无用信息,二是给标题加上<h1>。加上伪静态和上篇meta的优化,效果就超过了archiver,因此可以在后台禁用它,还减少了复制网页。

实施方案

1.隐藏内容页(viewthread)中的无用信息:
修改内容页模板文件 templates/default/viewthread.htm:用<!--{if $discuz_uid}-->   <!--{/if}-->将要隐藏的信息包含起来。

准确的说是当游客(bots)访问时,隐藏那些信息,当用户登录后是正常的,所以不影响使用。
这些信息主要指的是左侧用户信息栏、(资料 个人空间 主页 短消息 等等)、用户的签名(隐藏后不怕签名的内容影响正文,链接也不起作用了:


2.为标题加上<h1>标签
修改内容页模板文件 templates/default/viewthread.htm:将 <span class="bold">$post[subject]</span><br><br> 替换为
<h1>$post[subject]</h1>

国宝说<h1>还是很有用的。请根据您的需要自己调整下格式

小游戏

定制“本帖最后由 XXX 于 xxxxxx 编辑”内容

修改文件 templates/default/misc.lang.php:将下面两行改成您喜欢的内容:
'post_edit' => '\n\n[[i] 本帖最后由 $editor 于 $edittime 编辑 [/i]]',
'post_edit_regexp' => '/\n{2}\[\[i\] 本帖最后由 .*? 于 .*? 编辑 \[\/i\]\]$/s',

比如我改成 [ 网站名 URL xxx 于 xxxx 编辑]。改程序无聊时的自娱,呵呵
注意上下两个表达式要匹配。为了防止解析方括号是全角,不要复制后在文件中查找。

以上文章转自点石论坛 http://www.dunsh.org/forums

discuz!论坛基础优化实践系列请看
discuz!论坛基础优化实践(二)|discuz!论坛内容页优化  
discuz!论坛基础优化实践(三)|discuz!论坛robots.txt使用及相关 

seo更多优化文章请参考 http://gnaw0725.blogbus.com/c1507212/





喜欢这篇文章吗?那就点击 订阅吧

首页| 评论 1 | 引用 2 | 编辑 按下键盘Ctrl+D会有惊喜发生
原文:discuz!论坛基础优化实践(一)|discuz!论坛meta,content 优化
分类:[首页]>>[SEOSEM]
原创: 活动目录SEO博客版权所有。转载时必须注明本声明,本文作者和链接。
作者: gnaw0725
链接:http://gnaw0725.blogbus.com/logs/12660030.html
时间:2007-12-25 15:57
收藏到: Yahoo书签 百度收藏 Google书签 QQ书签 天极网摘 新浪ViVi 365Key网摘 diglog 和讯网摘 博拉网 Del.icio.us POCO网摘 Windows Live

一篇日志:<<  DNS动态注册在网络短暂中断情况下可能丢失DNS记录|DNS动态注册原理工作机制
一篇日志:如何做VPN|VPN设置配置技术  >>


『discuz!论坛基础优化实践(一)|discuz!论坛meta,content 优化 我想说:』
 姓名: 
 网址: 
 

本页精品文章:discuz!论坛基础优化实践(一)|discuz!论坛meta,content 优化
活动目录SEO博客公告
月流量突破 10 万,总流量突破170万,如果您对活动目录域网络管理也有心得,并且希望以此扩大自己影响力,只需要添加本站链接,然后将文章标题和链接在线留言给活动目录博客,活动目录博客将收录您的文章,并注明您的站点及链接。