作者:tank
转自:
http://www.me.idv.tw/article/225.htm
注意:请注意备份,谨慎修改
我用的這個PJBlog 終於發表了新的版本,靜態網頁版本 v2.8.4.133
下載後立即升級並且將這些程式先做了繁體中文化,雖然是使用 utf-8,繁體化後看起來總是比較順眼
第一、升級後有一些之前修改的插件都會不見
第二、已經使用了FCKeditor V2.6版,我之前已經在使用了,而且我有一些插件也不見,還好,整個網站我已經備份好在型升級,所以將備份的FCKeditor直接覆蓋到新版本就行了
第三、因為使用全靜態的網頁模式,似乎側邊的功能有一點不順暢,不過大部分的插件都能運行
第四、馬上研究了一下靜態輸出的程式,原來放在Template裡邊,另外static.htm就是主要的靜態模板
第五、於後台更新為靜態頁面,發現meta 裡邊的 keywords及description 都使用原始的字串,原本的用意除了改善速度,但對於搜尋引擎的優化帶來很嚴重的問題
第六、選單還是處於動態模式,並未全面靜態化;不過對於先前的?id=xxxx 這樣的功能還是存在,不過遇到頁面轉向的問題,有一些奇怪
這是我目前發現的一些疑點,所以開始動手處理第五項比較棘手的問題
當然我面先了解一下static.htm的內容發現 meta 的部份
复制内容到剪贴板
代码:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Language" content="UTF-8" />
<meta http-equiv="Cache-Control" content="NO-CACHE" />
<meta http-equiv="PRAGMA" content="NO-CACHE"/>
<meta name="robots" content="all" />
<meta name="author" content="your@email.com,YourName" />
<meta name="Copyright" content="PJBlog3 CopyRight 2008" />
<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><$log_Title$> - <$siteName$></title> 發現問題了嗎? 整個meta 的 content 都是有問題的,因為每一個頁面將會產生一樣的關鍵字,而描述的部份也嫌的太簡陋
首先,我要修改 上面meta 的一些內容,畢竟會帶給搜尋引擎較好的優化結果,底下為我修改後的畫面:
复制内容到剪贴板
代码:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Language" content="UTF-8" />
<meta http-equiv="Cache-Control" content="NO-CACHE" />
<meta http-equiv="PRAGMA" content="NO-CACHE"/>
<meta name="robots" content="all" />
<meta name="author" content="Tank" />
<meta name="Copyright" content="<$siteName$>" />
<meta name="keywords" content="<$mykey$>,<$log_Title$>,Me,我的部落格,<$siteName$>" />
<meta name="description" content="<$log_Title$>。<$Mydescription$>" />
<title><$log_Title$> - <$siteName$></title> 你發現我改變了什麼呢?
meta 的copyright 改為我的網站名稱
meta 的 keywords ,ㄛ,怎麼會有<$mykey$>
meta 的 description ,呀,怎麼又會有<$mydescription$>
這兩個索引鍵值是我加上去的,主要是要來替換我要的值
OK,改了這個靜態頁面模版後,我們就要先了解一下程式是如何產生靜態頁面的,靜態頁面產生的網頁是 class下的cls_logAction.asp
利用編輯器開啟 cls_logAction.asp 畫面,到第919行看到
'======================================================
'全靜態化
'======================================================
底下就是產生靜態頁面的關鍵,可以看到一個一個替代索引鍵值的內容
因此,我們要將我上面增加的<$mykey$>與<$Mydescription$>也一起替換掉。
我們在寫日誌會要求輸入標籤,因為你會將它作為標籤表示這些字串的重要性,所以這裡的<$mykey$>其實我要替換的就是標籤內容
而<$Mydescription$>的值我是取內容前面100個字來替代網頁中的meta 的description
以上說明後要開始修改一些內容
來到第972行
复制内容到剪贴板
代码:
If log_View("log_comorder") Then comDesc = "Desc" Else comDesc = "Asc" End If
Temp1 = Replace(Temp1, "<$CategoryList$>", CategoryList(0))
Temp1 = Replace(Temp1, "<$base$>", baseUrl)
Temp1 = Replace(Temp1, "<$siteName$>", siteName)
Temp1 = Replace(Temp1, "<$blog_Title$>", blog_Title)
Temp1 = Replace(Temp1, "<$skin$>", blog_DefaultSkin)
Temp1 = Replace(Temp1, "<$blogabout$>", blogabout)
Temp1 = Replace(Temp1, "<$comDesc$>", comDesc)
Temp1 = Replace(Temp1, "<$CookieName$>", CookieName) 我要修改為
复制内容到剪贴板
代码:
Temp1 = Replace(Temp1, "<$CategoryList$>", CategoryList(0))
Temp1 = Replace(Temp1, "<$base$>", baseUrl)
'將標籤替換成為我的keyworld,我加入的 delHtml 於 funcction.asp ,另外在library.asp 384行加上Tag Class類的函數 getTags.Mykeytags
Temp1 = Replace(Temp1, "<$mykey$>", delHtml(getTags.Mykeytags(log_View("log_tag"))))
'將文章的描述前100個字置換為 <$Mydescription$>作為網頁的描述,必須判斷文章由UBB或是FEDITOR編輯
If log_View("log_edittype") = 1 Then
Temp1 = Replace(Temp1, "<$Mydescription$>", replace(left(delHtml(UnCheckStr(UBBCode(HtmlEncode(log_View("log_Content")), Mid(log_View("log_ubbFlags"), 1, 1), Mid(log_View("log_ubbFlags"), 2, 1), Mid(log_View("log_ubbFlags"), 3, 1), Mid(log_View("log_ubbFlags"), 4, 1), Mid(log_View("log_ubbFlags"), 5, 1)))),100),vbcrlf,""))
Else
Temp1 = Replace(Temp1, "<$Mydescription$>", replace(left(delHtml(UnCheckStr(log_View("log_Content"))),100),vbcrlf,""))
End If
Temp1 = Replace(Temp1, "<$siteName$>", siteName)
Temp1 = Replace(Temp1, "<$blog_Title$>", blog_Title)
Temp1 = Replace(Temp1, "<$skin$>", blog_DefaultSkin)
Temp1 = Replace(Temp1, "<$blogabout$>", blogabout)
Temp1 = Replace(Temp1, "<$comDesc$>", comDesc)
Temp1 = Replace(Temp1, "<$CookieName$>", CookieName) 在上面我有註解,所以打開 common/function.asp 到檔案的第1042行%>前面加入
复制内容到剪贴板
代码:
Function delHtml(strHtml)
Dim objRegExp, strOutput
'建立正則表達式
Set objRegExp = New Regexp
'設置是否區分大小寫
objRegExp.IgnoreCase = True
'是匹配所有字符串還是只是第一個
objRegExp.Global = True
'設置模式引號中的是正則表達式,用來找出html標簽
objRegExp.Pattern = "(<[a-zA-Z].*?>)|(<[\/][a-zA-Z].*?>)"
'將html標簽去掉
strOutput = objRegExp.Replace(strHtml, "")
'防止非html標簽不顯示
strOutput = Replace(strOutput, "<", "<")
strOutput = Replace(strOutput, ">", ">")
delHtml = strOutput
Set objRegExp = Nothing
End Function 然後存檔即可
線在開啟 common/libary.asp 到第384行,我們找到
'*******************************************
' Tag Class
'*******************************************
現在我們要藉助 tag 類 裡邊的Public Function filterHTML(Str) 函數來修改一下 成為我要的 Public Function MykeyTags(Str)
我們在
Public Function filterHTML(Str)
.
...
End Function
底下加入Public Function MykeyTags(Str)
复制内容到剪贴板
代码:
Public Function MykeyTags(Str) '過濾標籤,傳回keywords
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>,")
Next
Dim re
Set re = New RegExp
re.IgnoreCase = True
re.Global = True
re.Pattern = "\{(\d)\}"
Str = re.Replace(Str, "")
Str = left(Str,len(Str)-1)
MykeyTags = Str
End If
End Function這樣就完成了網頁關鍵字及描述的靜態網頁優化了
這是我稍微改了一下,當然可以在優化一下將程式再簡短一些,目前對於頁面優化的部份,我就覺得很管用了
接下來幾天我應該會好好研究PJBLOG3的一些語法,慢慢改進功能,如您有更好的建言,歡迎留言給我