[b]welcome[b]

目前版本对SEO的不足和解决方法:meta,content 优化

上一篇 / 下一篇  2007-07-08 13:03:28

;_mR:~@0说明:本帖是转帖

,Q,W2Vm,^0 SupeSite/X-Space官方站*NP;iPK2A)@

 

m:}\N\7} `#h0

}bU;v'v-iN0meta的优化
6oEo2?(r2zE0
pd)|j!m3{S0discuz的后台可以对meta信息进行设置,甚至可以添加自己的头部信息,但它的设置都是针对于所有页面的,全部页面都拥有相同的keywords和description是SEO所不赞成的。
Z1}\O+_ o{O'w}0SupeSite/X-Space官方站 Q(H[Q&\;[#i
SupeSite/X-Space官方站W!m&T y!e\\
方案一:删除metaSupeSite/X-Space官方站 qgI+y-~y [m

E3jJ} P{? Z,b0修改页头模板文件 templates/default/header.htm:将meta的keywords和description标签删除。SupeSite/X-Space官方站;b"X"R#D%pN#y/l?6R]
SupeSite/X-Space官方站1D$D!oa"J"QE
这两个标签作用很小了,而且还有discuz自带的一些无用信息,用得不好反而会有坏作用,因此宁缺勿滥。SupeSite/X-Space官方站^%@5hmD3u)_ZU
SupeSite/X-Space官方站?&F`/UP-VBb

-lt*Mp U3_0方案二:定制metaSupeSite/X-Space官方站-R\o]"z

FvB {~#E O Anp9Ec0本部分实现了将内容页keywords设为帖子标题,description为内容前100字;也实现了主页与各版列表页meta的单独设置(不同版的不同,同一版各列表页相同)。
9xRk f` _f0?5|t9H0
~#Kb|4c%SJn;[x01.修改页头模板文件 templates\default\header.htm:将meta的keywords和description标签改为如下形式
?L{!]z0<meta. name="keywords" c />
/nC5n)H8o {Q0<meta. name="description" c />SupeSite/X-Space官方站-s6E IGy/m5pS
SupeSite/X-Space官方站7Q7H!c5`8f
这里的$seokeywords、$seodescription就是后台设置的那个值,下面说怎么定制这个值;{$metakeywords}是奇虎的关键字,留下以后处理
u&P,iqK*s0SupeSite/X-Space官方站h*@U"Y8r3Stm^6I
2.内容页(viewthread)设置keywords为帖子标题,description为内容前100字
piEVG-i}6I0SupeSite/X-Space官方站F6B$h%{fNB O;f.j
2.1修改 viewthread.php 文件:
`&].Pj tw&EXg:z*E.o0在 include template('viewthread'); (更新:dz5.5为iinclude template($iscircle ? 'supesite_viewthread' : 'viewthread'); ) 语句的上面加入一行:
Nh9Dn3e(wQbj0require_once DISCUZ_ROOT.'./include/bmt.thread.inc.php';
|2Lr)j S3z'K'h0SupeSite/X-Space官方站 AW/@8Xd'["`'h
2.2创建 include/bmt.thread.inc.php 文件,内容为SupeSite/X-Space官方站UJ6j4k2k
<?php
$y}0{7[2MHQi0if(!defined('IN_DISCUZ')) { exit('Access Denied'); }
Y l[-p(@2G+h@^0SupeSite/X-Space官方站RZ;nTq#JP}}l
$seokeywords = strip_tags($thread['subject']); //关键字设为帖子的标题
"aI#{3Myj0h0//(已更新: nethome 提出问题,当启用主题分类并允许按类别浏览时,原来代码会有问题。所以加了标签过滤,本来在viewthread.php中改更好,为以后升级方便,还是放在这里吧,subject很短,不会影响效率)SupeSite/X-Space官方站g%r5OgJM7A,C,K
SupeSite/X-Space官方站Iw/W[BLF ]
$seodescription = current( $postlist );//description取文章内容的前100字
cT0I%]%g;s;Ug0$seodescription = mb_substr( $seodescription['message'],0,100,"gb2312" );
8M o#uEr2nB0$seodescription = htmlspecialchars( strip_tags($seodescription) );
V:yDEf?4c2S0?>
/f*NB5jHK"`0
{{?:}W(v0*此处数字和个别函数适用于GBK版本SupeSite/X-Space官方站Utl(O5{

mg!N?3t(ySE-|"F0最后一行作用是过滤内容中的html,否则在meta中会引起语法错误。先是去除HTML标签,但因为这里是前100字,有可能html标签已经被截断了,所以又用了htmlspecialchars转义一下,有可能会有些垃圾信息。SupeSite/X-Space官方站!KD6C-A&c&CF
当然也可以在截取之前用strip_tags去除html标签,可能效率会差了。SupeSite/X-Space官方站2Y'E7f-[h,GA

wKN.c(V c0*所以此处表达式您需要根据自己的情况修改。
1h\1^g)c8wr0我目前用的是preg_replace( '/[^\xa1-\xff]/', '', $seodescription ),即过滤汉字以外的所在内容,但这样会损失英文关键字。
9y#cG2?"G&o^-A$V yt0SupeSite/X-Space官方站7_I$Q&R-In
别外说明,此处数据都是viewthread.php已取好的,所以不会产生额外的数据库操作,只是做了字符串处理,不会引响效率。SupeSite/X-Space官方站 J8@-B%Eht#\ M"v^

%s+n.nn?G4K03.列表页(forumdisplay)设置不同的keywords和descriptionSupeSite/X-Space官方站1]]@Hr~,@

:X+PJ:yi9d03.1修改 forumdisplay.php 文件,在 include template('forumdisplay'); 语句上面添加
$f ps^ ]*e0require_once DISCUZ_ROOT.'./include/bmt.forum.inc.php';
%a&LH.~T?0SupeSite/X-Space官方站{&t$sh0bmE.k
3.2创建 include/bmt.forum.inc.php 文件,内容为
?5Oh4Woz+v {+L0<?phpSupeSite/X-Space官方站-?*?3MwKi|)u$j
if(!defined('IN_DISCUZ')) { exit('Access Denied'); }
XYqRfg^4G9e0$seokeywords = $forum['name'];SupeSite/X-Space官方站0p$R6|&hq:\7v+{
$seodescription = $forum['description'];SupeSite/X-Space官方站dEkM+@M

&P.F NfY2b.L{0switch ( $forum['fid'] ){ SupeSite/X-Space官方站)[#eh? ~B;Z*~)i
    case 1: //此数字为版的ID号,不同版设置不同的meta
i:{z*J0ydT4p0        $seokeywords = 'key1,key2,...';
&?^6Q%A:t J~_0        $seodescription = 'xxxx xxxx xxxx';
+@C5aO%{@0        break;SupeSite/X-Space官方站3H O6QoLb
    case 2:
B6cJ2d/j} |+t;P8p#S^8{&\0        $seokeywords = 'key1,key2,...';SupeSite/X-Space官方站.yoY3rJ{;_g
        $seodescription = 'xxxx xxxx xxxx';SupeSite/X-Space官方站4ZY:B hV@+}q,g
        break;SupeSite/X-Space官方站J"kV C C"p2[
SupeSite/X-Space官方站C VY,w"[4T6I i
}SupeSite/X-Space官方站+_ui7Q"G^/p
?>
~6i#N0B7e eA0//更新:一般情况下可以不用switch和case,列表页的关键字为版名,说明为版的说明,若要对某个版设置特殊的关键字和说明,可以设置case。这样解决了版面很多时要设置很多case语句,加快了程序执行速度(不了解php,JAVA的case进行了优化,执行很快)
Z"M'G;[)G#i6S!Ku-a/t0
_ ?.LIVas0使用修改文件来实现,每版的meta改起来不方便,感觉有些弱智,呵呵。但没有改数据库,用了两个单独的文件,修改了两个文件也很简单,这样升级或迁移更方便吧SupeSite/X-Space官方站0Ij`{^3H4X{h
SupeSite/X-Space官方站{3IwGB2GP
case虽然多了一些,但比起读数据库的记录,速度应该快很多SupeSite/X-Space官方站~7{EfaV1B p

XpYaZD&Ls0K04.主页metaSupeSite/X-Space官方站5b0|)u5M`%K
在后台设置即可。(如果2、3不做,则meta也同主页)SupeSite/X-Space官方站7jqR6o|9`(Z[ b:eK#D
SupeSite/X-Space官方站Cr f!t \~~1O
SupeSite/X-Space官方站'z F b/^@-wo8blza
content的优化SupeSite/X-Space官方站L;n3b nR.z
discuz有个archiver,一是URL容易收录,二是页面比较干静,还有description会从正文中取内容,但archiver没有对内容中[b][url]之类的解析,那些标签起不到作用,原样显示还会增加垃圾信息。
O.L3C:t] W,w b&W0本部分主要做两方面的优化,一是去除内容页的无用信息,二是给标题加上<h1>。加上伪静态和上篇meta的优化,效果就超过了archiver,因此可以在后台禁用它,还减少了复制网页。SupeSite/X-Space官方站x*jV~e*dud

FDUR4FI0实施方案
$Kz.Pv#pHW$p0
aLs r:l u {q01.隐藏内容页(viewthread)中的无用信息:SupeSite/X-Space官方站3N}[&n%e Xp3jJ
修改内容页模板文件 templates/default/viewthread.htm:用<!--{if $discuz_uid}-->   <!--{/if}-->将要隐藏的信息包含起来。
c6u$@'b)b2NYl0SupeSite/X-Space官方站*O9D9x#M AF-b
准确的说是当游客(bots)访问时,隐藏那些信息,当用户登录后是正常的,所以不影响使用。SupeSite/X-Space官方站ko$V wqUZd
这些信息主要指的是左侧用户信息栏、(资料 个人空间 主页 短消息 等等)、用户的签名(隐藏后不怕签名的内容影响正文,链接也不起作用了)
T#mmJ L X ]V,b$|#a$hW0以住相关文章
_e7z?Y K0SupeSite/X-Space官方站+[I'S!EBi+T_:[L
2.为标题加上<h1>标签
XH s%n{\0修改内容页模板文件 templates/default/viewthread.htm:将 <span class="bold">$post[subject]</span><br><br> 替换为
Lx|.A"Sn1I0<h1>$post[subject]</h1>
0Ne2V)S(i3IQMS} m0
TB3S.h%x\xJ0国宝说<h1>还是很有用的。请根据您的需要自己调整下格式SupeSite/X-Space官方站uGM \!ek
SupeSite/X-Space官方站(E'e9`,uv ?

&BAh/p&| i"Z0小游戏SupeSite/X-Space官方站|`$nN,Mzu
SupeSite/X-Space官方站S0j!o@x6D-iJ0aE
定制“本帖最后由 XXX 于 xxxxxx 编辑”内容SupeSite/X-Space官方站eW`0RX2V
SupeSite/X-Space官方站!`Ax5g}2U3~)|
修改文件 templates/default/misc.lang.php:将下面两行改成您喜欢的内容:
z)t;IN`S0'post_edit' => '\n\n[[i] 本帖最后由 $editor 于 $edittime 编辑 [/i]]',SupeSite/X-Space官方站%Lr]:J.\7k.jJ
'post_edit_regexp' => '/\n{2}\[\[i\] 本帖最后由 .*? 于 .*? 编辑 \[\/i\]\]$/s',SupeSite/X-Space官方站Az&_'nckIR
SupeSite/X-Space官方站nOxg'o8Qx/onX
比如我改成 [ 网站名 URL xxx 于 xxxx 编辑]。改程序无聊时的自娱,呵呵SupeSite/X-Space官方站+Tf O?-l,nj?
注意上下两个表达式要匹配。为了防止解析方括号是全角,不要复制后在文件中查找。
6IZY`,k0

Ll1FyMD]$u"\v0

TAG: 优化

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar