官方首页 | 无图版 | BBS首页
PJBlog3 3.0.6.170 新版发布 下载|升级(2008.12.25) 庆圣诞+2009元旦+新春-PJ模板征集活动开始啦! 2008版 PJHOME 珍藏/纪念版官方T恤 正式发布! PJ3内测团队主创人员身份,性格,特点吐血大曝光
PJBlog技术支持论坛使用问题总索引 PJBLOG 3 的心路历程 感谢有你 【独家】我使用过的三种空间,与客服的精彩故事 Z-Blog,Wordpress,Bo-Blog转换到PJBlog
腊月的白菜-都辛苦了!祝PJ所有成员和用户的新年快乐! 苦咖啡个人BLOG-祝PJ越来越好 pjblog3资源收集-PJ加油 Feln's Blog-你们辛苦了啊 ~~
听雨轩-继续努力。。期待着PJ4的在线安装插件 cludechn's blog-加油,以后能有更好的版本推出 移动3G-3G改变生活 爱之音-希望PJ3最终版能加入附件批量上传的功能哈
 45 12345
发新话题
打印

keywords及description静态化页面后的简单优化 (7.23更新)

本主题由 anson 于 2008-7-19 09:24 移动

keywords及description静态化页面后的简单优化 (7.23更新)

作者: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的一些語法,慢慢改進功能,如您有更好的建言,歡迎留言給我
本帖最近评分记录
  • evio PJ币 +30 现在才发现,这是好贴,一直都米注意... 2008-8-9 09:43
  • wolfit PJ币 +102 好贴 2008-7-17 23:09
  • huhaisen PJ币 +20 优秀主题 2008-7-17 11:09
人生没有彩排,每一刻都是现场直播,把握自己从现在开始

TOP

先沙发一个,再慢慢看

请大家把问题解决后请自行修改编辑帖子标明“已解决”,并将解决方法补全,以方便日后查看
对于热心解答者,给予一定的奖励!支持适用原创。大家多多加油,共同把PJFourm建设好!

TOP

不错 希望PJ优化一下然后集成
欢迎你的访问
PR3的博客招友情连接

TOP

继续路过打酱油!!!

TOP

做个俯卧撑
·● 迈克伍:MichaelWu.CN

TOP

真不错。
PJblog3资源站 pjblog3.com.cn | 特特宝贝
PJblog3交流群:72540254(满)72540485(开启)

TOP

感謝你將我的文章POST 出來
原本想說測試一段時間後再行公佈於此
不過到目前為止,還沒發生任何狀況
目前我想對插件的部分研究一下,如何將在靜態頁面獲得好的效果
我也有個網站使用Oblog 不過這個雖然使用了靜態頁面,但似乎使用了太多Js
因此我想未來對於PJBlog 的開發要儘量不要再使用 js
這也是我想做的重點
也歡迎大家來我的部落格 http://www.me.idv.tw 與我研究
希望能對 Pjblog 有點貢獻
本帖最近评分记录
  • huhaisen PJ币 +10 感谢作者 2008-9-23 01:22
  • anson PJ币 +100 原创主题 2008-7-17 17:29

TOP

台湾的……什么时候回归祖国?

TOP

呵呵,不错。

TOP

学习下??
http://www.yiqijob.cn

TOP

 45 12345
发新话题