网页关键字对于搜索引擎的收录与排名是至关重要的。但是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" 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

8月1日更新第二种方法:

需要修改的文件只有两个: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_getBlogHead(Title,CateTitle,CateID,keyWords)
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
......
	<meta name="keywords" content="<%=rekeyWords%>"  />
......
<%
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