目前版本对SEO的不足和解决方法:meta,content 优化
;_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&Ty!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 OAnp9Ec0本部分实现了将内容页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官方站-s6EIGy/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'); }
Yl[-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*NB5jH K"`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