PJBlog添加真正的关键字程序修改扩展方法
视觉·编程 四月 3rd, 2008网页关键字对于搜索引擎的收录与排名是至关重要的。但是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
