网页关键字对于搜索引擎的收录与排名是至关重要的。但是PJBLOG的关键字由程序作者设置成了他自己的固定关键字。对于我们发表的文章没有益处,只对PJBLOG作者可能有贡献。PJ为什么这样做不清楚,这得问他本人。PJBLOG每篇日志都可以自己设置几个TAGS。这个TAGS主要是为了方便访客通过TAGS访问索引具有相同TAGS的日志。对于SEO可能起不到多少作用。因为这些TAGS并不被放如META的KEYWORDS内容中。PJBLOG论坛有网友提供了PJBLOG主程序修改,实现日志TAGS自动设置成文章的KEYWORDS
修改比较繁杂,请事先备份原文件:
第一种方法:
现转载过来以备不时之需:
首先打开article.asp,找到
if blog_postFile then
SQL="Select top 1 log_ID,log_CateID,log_title,Log_IsShow,log_ViewNums,log_Author,log_comorder,log_DisComment FROM blog_Content Where log_ID="&id&" and log_IsDraft=false"
else
SQL="Select top 1 log_ID,log_CateID,log_title,Log_IsShow,log_ViewNums,log_Author,log_comorder,log_DisComment,log_Content,log_PostTime,log_edittype,log_ubbFlags,log_CommNums,log_QuoteNums,log_weather,log_level,log_Modify,log_FromUrl,log_From,log_tag FROM blog_Content Where log_ID="&id&" and log_IsDraft=false"
end if
把它改成
SQL="Select top 1 log_ID,log_CateID,log_title,Log_IsShow,log_ViewNums,log_Author,log_comorder,log_DisComment,log_Content,log_PostTime,log_edittype,log_ubbFlags,log_CommNums,log_QuoteNums,log_weather,log_level,log_Modify,log_FromUrl,log_From,log_tag FROM blog_Content Where log_ID="&id&" and log_IsDraft=false"
然后打开header.asp,找到
<meta name="keywords" content=
改成
<%dim tmpTag,tmp_tags,len_name
len_name=Len(SiteName)
If Left(Title,len_name)=SiteName Then
%>
<meta name="keywords" c />
<%else
set tmpTag=new tag
tmp_tags=tmpTag.filterKeys(log_ViewArr(19,0))
%>
<meta name="keywords" c />
<%end if%>
注意,有人反应说这一步改的代码没有效果,应该改成以下代码,特提供做参考:
<%dim tmpTag,tmp_tags,len_name
len_name=Len(SiteName)
If Left(Title,len_name)=SiteName Then
%>
<meta name="keywords" content="Blog,Theosoft,<%=SiteName%>" />
<%else
set tmpTag=new Tag
tmp_tags=tmpTag.filterKeys(log_ViewArr(19,0))
%>
<meta name="keywords" content="<%=tmp_tags%>Blog,<%=SiteName%>" />
<%end if%>
最后打开commonlibrary.asp,找到
Public function filterHTML(str) '过滤标签
If isEmpty(str) or isNull(str) or len(str)=0 Then
Exit Function
filterHTML=str
else
dim log_Tag,log_TagItem
For Each log_TagItem IN Arr_Tags
log_Tag=Split(log_TagItem,"||")
str=replace(str,"{"&log_Tag(0)&"}","<a href=""default.asp?tag="&Server.URLEncode(log_Tag(1))&""">"&log_Tag(1)&"</a><a href=""http://technorati.com/tag/"&log_Tag(1)&""" rel=""tag"" style=""display:none"">"&log_Tag(1)&"</a> ")
Next
Dim re
Set re=new RegExp
re.IgnoreCase =True
re.Global=True
re.Pattern="{(d)}"
str=re.Replace(str,"")
filterHTML=str
end if
end function
在其后添加如下代码
Public function filterKeys(str) 'Theosoft (C) 2001-2006
If isEmpty(str) or isNull(str) or len(str)=0 Then
Exit Function
filterKeys=str
else
dim log_Tag,log_TagItem
For Each log_TagItem IN Arr_Tags
log_Tag=Split(log_TagItem,"||")
str=replace(str,"{"&log_Tag(0)&"}",log_Tag(1)&",") //此处于11月20日修改,修复中文tag的转换问题
Next
Dim re
Set re=new RegExp
re.IgnoreCase =True
re.Global=True
re.Pattern="{(d)}"
str=re.Replace(str,"")
filterKeys=str
end if
end function
加注:
关于description的问题,我是直接调用了摘要内容,按以上的思路修改如下:
将已经修改的
SQL="Select top 1 log_ID,log_CateID,log_title,Log_IsShow,log_ViewNums,log_Author,log_comorder,log_DisComment,log_Content,log_PostTime,log_edittype,log_ubbFlags,log_CommNums,log_QuoteNums,log_weather,log_level,log_Modify,log_FromUrl,log_From,log_tag FROM blog_Content Where log_ID="&id&" and log_IsDraft=false"
这句换成
SQL="Select top 1 log_ID,log_CateID,log_title,Log_IsShow,log_ViewNums,log_Author,log_comorder,log_DisComment,log_Content,log_PostTime,log_edittype,log_ubbFlags,log_CommNums,log_QuoteNums,log_weather,log_level,log_Modify,log_FromUrl,log_From,log_tag,log_Intro FROM blog_Content Where log_ID="&id&" and log_IsDraft=false"
header.asp中的
<meta name="description" content="<%=SiteName%> – <%=blog_Title%>" />
换成
<%
len_name=Len(SiteName)
If Left(Title,len_name)=SiteName Then
%>
<meta name="description" content="<%=SiteName%> – <%=blog_Title%>" />
<%else
tmp_tags=tmpTag.ClearHTML(log_ViewArr(20,0))
%>
<meta name="description" content="<%=tmp_tags%>" />
<%end if%>
commonlibrary.asp中在刚增加的
Public function filterKeys(str) 'Theosoft (C) 2001-2006
……….
end function
函数下再增加如下函数
Public Function ClearHTML(str) 'golove (C) 2007
Dim jnkcTmp,jnkcRegExp
jnkcTmp = str & ""
Set jnkcRegExp = new RegExp
jnkcRegExp.Global = True
jnkcRegExp.Pattern = "(<[^>]*>)"
jnkcTmp = jnkcRegExp.Replace(jnkcTmp,"")
Set jnkcRegExp = Nothing
jnkcTmp=replace(jnkcTmp,chr(10),"")
jnkcTmp=replace(jnkcTmp,chr(13),"")
ClearHTML = jnkcTmp
End Function
==========================================
注意:
我用的就是上面的这种方法,但是才刚刚偶尔发现,点击分类标题时,会出现错误。错误原因是说header.asp中的log_ViewArr未定义。看了一下相关位置的代码,才知道是判断标题时出现的问题。这里动态设置tag和Description是根据打开页面的标题来判断的,而对于分类的标题为:分类名称-blog_title,所以这里应该修改一下上面的代码(有两处):
len_name=Len(SiteName)
If Left(Title,len_name)=SiteName
修改为:
len_name=Len(Blogtitle)
If Right(Title,len_name)=Blogtitle
==========================================
第二种方法
简简单单为PJBlog实现动态关键字
需要修改的文件只有两个:header.asp和article.asp。
下面我们看具体的修改步骤:
第一步:打开header.asp文件,找到 '输出文件头 的这段代码,其中keywords中的关键字可以自己修改定义,这些关键字只在PJBLOG首页预览页面起作用:
'输出文件头
sub getBlogHead(Title,CateTitle,CateID)
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="UTF-8">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Language" content="UTF-8" />
<meta name="robots" content="all" />
<meta name="author" content="<%=blog_email%>,<%=blog_master%>" />
<meta name="Copyright" content="PJBlog2 CopyRight 2005" />
<meta name="keywords" content="PuterJam,Blog,ASP,designing,with,web,standards,xhtml,css,graphic,design,layout,usability,accessibility,w3c,w3,w3cn" />
<meta name="description" content="<%=SiteName%> - <%=blog_Title%>" />
<title><%=Title%></title>
<%if len(CateTitle)>0 and CateID>0 then %>
<link rel="alternate" type="application/rss+xml" href="<%=siteURL%>feed.asp?cateID=<%=CateID%>" title="订阅 <%=siteName%> - <%=CateTitle%> 所有文章(rss2)" />
<link rel="alternate" type="application/atom+xml" href="<%=siteURL%>atom.asp?cateID=<%=CateID%>" title="订阅 <%=siteName%> - <%=CateTitle%> 所有文章(atom)" />
<%else%>
<link rel="alternate" type="application/rss+xml" href="<%=siteURL%>feed.asp" title="订阅 <%=siteName%> 所有文章(rss2)" />
<link rel="alternate" type="application/atom+xml" href="<%=siteURL%>atom.asp" title="订阅 <%=siteName%> 所有文章(atom)" />
<%end if%>
<link rel="stylesheet" rev="stylesheet" href="skins/<%=Skins%>/global.css" type="text/css" media="all" /><!--全局样式表-->
<link rel="stylesheet" rev="stylesheet" href="skins/<%=Skins%>/layout.css" type="text/css" media="all" /><!--层次样式表-->
<link rel="stylesheet" rev="stylesheet" href="skins/<%=Skins%>/typography.css" type="text/css" media="all" /><!--局部样式表-->
<link rel="stylesheet" rev="stylesheet" href="skins/<%=Skins%>/link.css" type="text/css" media="all" /><!--超链接样式表-->
<link rel="stylesheet" rev="stylesheet" href="skins/<%=Skins%>/UBB/editor.css" type="text/css" media="all" /><!--UBB编辑器代码-->
<link rel="icon" href="favicon.ico" type="image/x-icon" />
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
<script type="text/javascript" src="common/common.js"></script>
<!--<script type="text/javascript" src="common/nicetitle.js"></script>-->
</head>
<body onload="initJS()" onkeydown="PressKey()">
<a href="default.asp" accesskey="i"></a>
<a href="javascript:history.go(-1)" accesskey="z"></a>
<%getSkinFlash%>
<div id="container">
<!--顶部-->
<div id="header">
<div id="blogname"><%=siteName%>
<div id="blogTitle"><%=blog_Title%></div>
</div>
<%CategoryList(0)%>
</div>
<%
end sub
在这段代码之后再追加一段与之相似的代码如下,这段代码中的keywords只在日志页面时起作用:
'日志页面输出文件头
sub re_reBlogHead(Title,CateTitle,CateID,keyWords)
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="UTF-8">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Language" content="UTF-8" />
<meta name="robots" content="all" />
<meta name="author" content="<%=blog_email%>,<%=blog_master%>" />
<meta name="Copyright" content="PJBlog2 CopyRight 2005" />
<meta name="keywords" content="威客365,<%=keyWords%>" />
<meta name="description" content="<%=SiteName%> – <%=blog_Title%>" />
<title><%=Title%></title>
<%if len(CateTitle)>0 and CateID>0 then %>
<link rel="alternate" type="application/rss+xml" href="<%=siteURL%>feed.asp?cateID=<%=CateID%>" title="订阅 <%=siteName%> – <%=CateTitle%> 所有文章(rss2)" />
<link rel="alternate" type="application/atom+xml" href="<%=siteURL%>atom.asp?cateID=<%=CateID%>" title="订阅 <%=siteName%> – <%=CateTitle%> 所有文章(atom)" />
<%else%>
<link rel="alternate" type="application/rss+xml" href="<%=siteURL%>feed.asp" title="订阅 <%=siteName%> 所有文章(rss2)" />
<link rel="alternate" type="application/atom+xml" href="<%=siteURL%>atom.asp" title="订阅 <%=siteName%> 所有文章(atom)" />
<%end if%>
<link rel="stylesheet" rev="stylesheet" href="skins/<%=Skins%>/global.css" type="text/css" media="all" /><!–全局样式表–>
<link rel="stylesheet" rev="stylesheet" href="skins/<%=Skins%>/layout.css" type="text/css" media="all" /><!–层次样式表–>
<link rel="stylesheet" rev="stylesheet" href="skins/<%=Skins%>/typography.css" type="text/css" media="all" /><!–局部样式表–>
<link rel="stylesheet" rev="stylesheet" href="skins/<%=Skins%>/link.css" type="text/css" media="all" /><!–超链接样式表–>
<link rel="stylesheet" rev="stylesheet" href="skins/<%=Skins%>/UBB/editor.css" type="text/css" media="all" /><!–UBB编辑器代码–>
<link rel="icon" href="favicon.ico" type="image/x-icon" />
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
<script type="text/javascript" src="common/common.js"></script>
<!–<script type="text/javascript" src="common/nicetitle.js"></script>–>
</head>
<body onload="initJS()" onkeydown="PressKey()">
<a href="default.asp" accesskey="i"></a>
<a href="javascript:history.go(-1)" accesskey="z"></a>
<%getSkinFlash%>
<div id="container">
<!–顶部–>
<div id="header">
<div id="blogname"><%=siteName%>
<div id="blogTitle"><%=blog_Title%></div>
</div>
<%CategoryList(0)%>
</div>
<%
end sub
第二步:打开article.asp文件,article.asp是最终输出文件,在这里他会调用到header.asp。查找下面的代码
getBlogHead BlogTitle,getCate.cate_Name,getCate.cate_ID
把他替换为我们在header.asp中新增的头文件函数代码如下:
'获取Tag作为关键字
Dim getTag,reKeyWords,re '定义变量
Set getTag=new tag '实例化tag类
reKeyWords = getTag.filterHTML(log_ViewArr(19,0)) '取得带有html标签的tag
reKeyWords = Replace(reKeyWords,"</a> <a","</a>,<a") '将中间的空格换为半角逗号“,”
Set re=new RegExp
re.IgnoreCase =True
re.Global=True
'过滤掉HTML标签
re.Pattern = "<.*?rel.*?>(.*?)</.*?>"
reKeyWords = re.Replace(reKeyWords,"$1")
re.Pattern = "<.*?>(.*?)</.*?>"
reKeyWords = re.Replace(reKeyWords,"$1")
Set getTag = Nothing
Set re = Nothing
re_getBlogHead BlogTitle,getCate.cate_Name,getCate.cate_ID,reKeyWords
保存并覆盖上传。OK