幫blogger.com加上分類標籤及最新回覆的功能(完全不用外掛)分類:網路、部落格
會寫這篇整理算是對最近熬夜的研究畫上一個句點,不然我越來越有興趣的時候,每天都不用睡了。會研究這個主題是因為 http://www.blogger.com 這個部落格平台提供的功能其實不很完全,目前被大家所詬病的是少了"分類"、"引用"、"最新留言匯整"這三項功能。
先提醒一下要詳細研究以下的文章,請先具備了解很多專有名詞及程式寫作的能力,並不是我寫的不夠清楚,而是重頭到尾寫清楚可能要三天三夜,所以只能很簡略的說明方法,另外,要對 blogger.com 這個部落格的平台有一定的熟悉度。
對我來講,"引用"其實跟"留言"是一樣的功能,而且很少人引用我寫的高調短文,所以這個功能後續再想辦法補強,目前網路上使用最多的應該算是 http://www.haloscan.com 的服務吧!其實若要自己改寫留言的 HTML Form,應該是有辦法解決的。
blogger.com 的特性是在文章發布的同時把 HTML 的靜態頁面組版組好,所以發布一篇文章的時候,幾乎同時要組內頁(ItemPage)、首頁(MainPage)、匯整頁(ArchivePage)這三個頁面,這我想也是為什麼 blogger.com 的系統不作分類的緣故,因為一做一對一的分類,重新組版要多組一個頁面,如果是一篇文章對n個分類的組版,那組版不是要很多次嗎?那系統鐵定做不大了。
首頁主控台想法:
如果不能寫伺服器端的程式,那麼最好的辦法就是用 Javascript 寫客戶端的程式了,而能夠得知這些訊息的就只有首頁(MainPage)完全知道,要克服避免下載過多的資料到客戶端,唯一的辦法就是只傳必要的資訊到客戶端,例如:標題、時間、分類標籤(tag)、作者以及每一篇文章的PID了,有了這些資訊,其實就可以組合出必要的功能,可以利用搜尋方式,找出每篇文章的分類標籤(tag),有了時間就可以依據最新留言來作排序的功能。
但是現在問題來了,缺少內文的部落格首頁是沒有什麼吸引人的,blogger.com 的修改文章功能給我了一些靈感,去偷偷看了他們的 javascript 程式碼,他是利用 DCOM 內建的 XMLHttpRequest 元件來下載內文的,但是要能用 XML/RPC 必要知道帳號密碼才能取得到的,所以這個方法被我打了一個大叉叉。
內文載入方式:
我又想了一個方法是用 HTML 內包一個 IFRAME 來載入內文資料,然後用 Javascript 來解析這段 HTML 把必要的內頁(ItemPage)資訊給取出來,顯示給瀏覽者看,在網路隨便搜尋了 javascript 的文章,找到有人用 DHTML 的方法,然後配合 Javascript 的 onload callback function 來通知所內頁已經下載成功,然後再把資料傳送給父親(parent),顯示出內文資料。
這個方法雖然好,可是多少還是浪費一些頻寬,另外一些javascript 的防錯處理還是要作的,不然讓瀏覽者一直跳出視窗說你的網頁錯誤,有點不舒服,這方面的除錯我花了不少的時間,然後 Lordcolus 說 firefox 不能看,我去追查了一下,原來是用到非 Javascript 的正確語法,是 MS 加強的方便語法,所以 firefox 看不懂所致。不過用 firefox 的感覺比 IE 還要慢,而且有時候會撈錯內頁,IE並不會有這樣的情況發生,這點我也找了很久是否是我程式的錯誤,可是因為很難重複發生,就不繼續追查了。
另外有一個小問題是 javascript 的程式碼用引號(") 來區分標題的字串,所以當文章的標題出現引號的時候會導致程式錯誤,整個首頁就顯示不出來了。
分類標籤的做法:
由於 blogger.com 並沒有分類標籤這個欄位,起先想用相關連結(link)這個欄位來做,但是想想這個欄位擅自拿來用也不太好,所以用了 HTML H6 這個tag,只要在CSS 語法中把 h6 給隱藏起來即可,未來如果要把分類顯示出來,或是加入分類的連結部份,也可以用 javascript 加入即可,各位可以看下面這個範例
http://tripwriter.blogspot.com/2005/05/blog-post_13.html
標題底下小字很淺色的分類標籤就是包在 H6 這個 tag 裡面,但是看一下IE的標題列,其實是有H6這個標籤的,我想就留在那邊給搜尋引擎去找關鍵字也不錯。
分類欄位解決了,用javascript 的指令去找字串就不是一件難事了,但是,另外一個問題又來了,我其實並不想讓這個範本需要有這些額外的字眼是隨不同網站而立定的分類標籤,也就是說A網站有這個範本的分類標籤是國家、城市名稱,B網站的分類標籤是以系統、寫程式、職場等標籤來分類,這樣這個範本就缺乏通用性,對我這個龜毛的程式設計師來說,就是不夠符合元件化的原則。
所以我把分類的方法放在部落格設定的說明項目裡面,在範本的標籤是<$BlogDescription$>這個裡面,然後在這邊打入執行 javascript 的 function,把合乎條件的分類標籤給找出來即可。結果,問題又來了,blogger.com 硬生生就是不想給你放 javascript 的字眼,可能怕有人搞鬼吧!本來想放棄這種作法的,結果我又想到一個妙招,雖然浪費一點頻寬,但這個妙招同時解決了無論在首頁內頁都可以快速的找到你要的分類,不只是在首頁可以做到的缺點,我把要搜尋分類標籤放在URL網址的後方,加入"?t=關鍵字"的作法,這樣javascript 就可以取得這個字串,進而做到隨時連結就可以看到正確結果的好處。試試看點下面的連結,應該就是顯示紐約的分類了
http://tripwriter.blogspot.com/?t=紐約&
額外的外掛:
上面這些都做完的時候,其實已經不想在加什麼功能了,後來發現我以前用的 furl.net 的外掛雖然可以廢除,可是少了這幾篇又有點不捨,畢竟還要有分類的說明,例如下面這個網址的範例:
http://tripwriter.blogspot.com/2005/05/blog-post_04.html
這是內頁(ItemPage),作法是把首頁給載入,然後把跟咖啡館相關的分類表列出來。這個的達成剛好跟首頁載入內頁的內文資料相反,所以要做好一點都不難,本來滿心歡喜的想說也可以把這個外掛給別人的部落格網站內,但是後來發現不成功,原因是 javascript 的 DHTML 資訊要交換必須在同一個網址才可以,可能是基於安全性的裡由吧!萬一我可以去改別人的網頁內容,不是天下大亂了。這點我就不繼續研究方法了,留待突發奇想的時候來解決。當然,可以有作法是把首頁寫成 HTML/javascript 的語法共用,這就是另外的想法了,這點我自己實驗過可行,不過已經是偏方了。
另外,還可以用 IFRAME 的作法然後把不並要的資訊不顯示,但是缺點是會有scrollbar 在右方,不符合畫面美觀的要求。
我想這篇就說明到這裡,若有說明不清的請在下面留言,我盡量回答,要這個版型範本的請留下您的email,我會用附件方式傳送,請大家要貼上範本的時候記得要把原來的範本備份起來,本人恕不幫人修改範本及debug,要自行修改的歡迎修改,也請告知您應用的網站在哪裡。記得改上之後要在 blogger.com 主控台的設定→格式→顯示文章數目的地方填上999篇文章即可,因為首頁要所有文章的標題資訊。
本文暫時中止回覆,請到新的這篇可以下載範本的文章去留言
http://nextservices.blogspot.com/2006/04/blogger.html
總共有57個迴響
我昨晚手癢,把自動分類標籤的功能加上,作法是要部落客在貼文的時候在每一篇文章的標題列加上
<h6>分類:標籤1、標籤2、標籤3、標籤4</h6>
注意上面的 HTML 要用半形的英文符號
這樣首頁就會自動找尋 h6 這個 tag 來做分類標籤了,記得要有全形符號的冒號(:)跟頓號(、),這樣才能正確的辨識。
起先以為用這個方法首頁的資料會很大,而且還要在載入三個不同頁面的內頁(Itempage),載入速度會很慢,可是實驗證明比大部分人的部落格要快的多。
為什麼呢?
1. blogger.com 的靜態 HTML 是經過壓縮才傳出來的,以 http://tripwriter.blogspot.com 為例子,首頁目前為 62K左右,共181篇文章,423篇回響,可是經過壓縮之後只剩下16K,加上三篇內文三張照片傳送下來,所有資料約115K而已,我比較了一下別的部落格首頁,如果沒有外掛而有三張照片的首頁,檔案大小跟我的javascript首頁幾乎一模一樣的大小。
2. 而標準部落格的分類方法只能對單一文章作單一的分類處理,點下分類之後還要再開另一個頁面來顯示,我這個方法完全不用在開新頁面,而且可以做到一篇文章對n個分類標籤的效果。
我想寫程式的人都很臭屁,我也不例外,這個首頁的好處還很多,講也講不完,我終於知道為什麼 gmail及 google desktop 可以好用的原因,因為他們把一些效率的提升放在client 端,有認真的去解決使用者的困難,以及了解使用者的需求。
不過,這個需求有多大足以支撐這樣大的企業體,我也在觀察當中。
另外,我昨晚用我的 PocketPC 測試一下,原以為頁面會出不來,神奇的是居然10秒左右跑出來,這個 PocketPC 的 CPU 是 400 的,首頁的 Javascript 用了一堆 Array 及沒有效率的排序方法,居然跑那麼快。
不過 PocketIE 沒有支援 DHTML 的所有語法,所以有些網頁顯示不出來。
老話就不說了,實在是... 算你狠!
另外有關<h6>這個東西,我實在不喜歡裡面用中文字來作split的判斷。能否改成這樣?
<h6 id="category">
<cat>標籤1</cat>
<cat>標籤2</cat>
</h6>
然後利用DOM一一過濾 "category" 這個物件的children(IE語法)。感覺起來比你用中文全形符號當作分隔好多了。
這也是身為程式設計師的怪僻啦。至於firefox有沒有類似DOM的語法,這個就你自己研究啦。我是完全不理會非IE的環境了,要用MAC,你就看沒有特殊功能的內容吧。
HTML要壓縮送出,不一定非要靜態網頁才行,只要Apache在configure時加入gzip的模組就可以了。
另外,我為了怕在瀏覽一些男人常去的網站時電腦被spyware侵入,又不想要改用firefox降低相容性,所以平常都是用maxthon(MyIE2)並且將ActiveX和Script預設關閉。結果你的這些網站,我剛開始都不知所以然,直到某次大悟你在搞這個花招,才開啟script來看看成果。
因此提醒你,要記得在首頁放上需要script的警語,然後利用script將之關閉。以免向隅。
水瓶子你好
拜讀大作之後稍微試了一下
結果好像全沒反應
所以來跟你索取版型範本
jaschyo[at]gmail.com
另外想附帶一問的是這支JAVA是不是超過999篇文章就會部份失效?
謝謝!
看了你的留言,突然燃起了一些希望,也找到了這篇…可是,可能因為對程式沒什麼了解,所以…看完還是一支半解><
我大概看了一下你的網頁,的確是多了迴響與分類的功能,但我不太懂什麼是文章重新排序?是指…有人留言的文章,會一直排在比較前面嗎?
嗯~~我是很有興趣試試你的程式,只是,希望不要很難,因為我每次光改個排版,就花超多時間了…不知是不是沒慧根 =P
takol,謝謝你的提醒,我會把noscript 的 HTML 語法補上。
有關<h6>的這個問題是我折衷的作法,因為我想讓 HTML語法以及 CSS在不太需要修正的情況下就能顯示分類項目,所以選擇了這個H6,翻遍了所有 HTML語法只有這個最合適,我甚至試過了LABEL, INDEX 之類的,發現不是很合適。
而多項目的分類標籤如果需要程式化的作業用<cat></cat>的確是比較好,但是我又很偷懶,想要讓輸入標籤的人能夠比較方便直覺,blogger.com 有些欄位是用半形的逗號(,)格開,del.icio.us 是用空格,考量了這些之後我決定用全形的頓號(、),版面比較好看,雖然可能外國人的IE可能會判斷錯誤,但我想目前我只會寫中文字的部落格,所以先不考慮這些啦!
當然設計一個是程式讀取的規格,跟是人讀取的規格,或者是人與電腦都要看的懂的規格有很大的出入。
anyway,目前為止看得懂這篇的人不多,謝謝你的意見。
jas,999篇的限制是 blogger.com 系統最多能夠讀取的範圍,應該跟我寫的程式沒有關係,我會把範本寄給你,若有問題麻煩告訴我。
kaya,我原來的想法是文章的排列就依照最新回覆的順序,後來我改掉了,文章的排序方式是依照po文的順序(不是時間),而在右方的sidebar 加上一欄十篇最新回覆的文章
1.
分類的方法在標題上打上 <h6>....</h6> 就可以自動分類,ex:【紐約】自由女神像<h6>分類:美國、紐約、紀念</h6>
2.
記得在設定把首頁組版的文章數目改為 999 篇即可
對於您這篇文章很有興趣, 可否向您索取範本來研究?
我的位址: goston@gmail.com
Sylvain aka Silent,Goston
我已經 mail 出去, 若沒收到請再留言給我。
您好,對於您這篇文章,我頗感興趣,因為這個問題的確困擾我許久,可否向您索取範本研究?謝謝!
Conny.Liao@gmail.com
Thanks for your sharing of your customization, it's really awlsome that you use javascript to modify the code layer. I would like to request for your template to study over it, thank you very much!
zeelot.zblog@gmail.com
Conny,zeelot,Benson,我已經寄出範本。
另,大家怎麼都用 gmail,這裡真是 google 品牌的愛用者。
你好,看到你的留言,希望可以向你索取範本來試試看,謝謝‥‥
greenlost[at]gmail.com
您好,對於您這篇文章,小弟感興趣如何能不需外掛達到分類,可以向你索取範本來試試看嗎,謝謝!!
水瓶子你好...
我接觸blog是透過Blogger開始, 就是因為他們不support分類, 所以才會遠走他blog...但話說回來, Blogger的使用介面是我用過最就手的, 所以還是經常用他寫草稿, 寫好了在貼到別處.
看了你費那麼大的心思為Blogger上分類, 實在很高興, 只可惜只有網路高段之人才懂用, 我們這些門外漢只有純欣賞的份.
看到實際運作, 覺得網頁載入還是有點慢, 而在Tripwriter那邊好像有些entry並沒有依時續列出 (目前列出前三篇依續是050317, 050523, 050424), 不知何解.
anyway, 我留言的重點是, 我覺得你這個以標題列表, 點閱再載入permalink的作法, 不知道是否可以再改良一下...現在有很多blog介面都是在主頁顯示文章的前部, 看全文要點 [繼續閱讀] 連到permalink ... 我是想頁面這樣跳來跳去也蠻煩人的, 不知道你這個solution, 是否可以用來作 [繼續閱讀]的全文原頁展開, 看完了又可把它摺起來?
greenlost, jiang315已經寄出範本,沒收到請跟我講。
badbrother,謝謝你的觀察細微
1. 有關主文排列順序的問題,我是故意用貼文章的順序排列,而不是用時間排列,blogger 有提供每一篇文章的一個 ID,這個ID的數字大小就是Po文的順序,由於我的旅行日誌沒辦法一天把所有景點寫完,所以我是採用事後回憶的方式記錄,想到什麼就寫什麼,但我又想保留照片的日期,看到每月整理的頁面的時候,同樣日期的照片短文就放一起了,所以不得已採用這種方式。若是需要用Po文的日期排序,那麼修改一下程式其實不難。所以程式是沒有問題的,只是我選擇的方式是這樣的。
2. 有關只顯示出部分文章然後按下"繼續閱讀"的連結,這個當然是很好作,在 help.blogger.com 已經有用 CSS 的作法來解決,還不用大費周章用我這個 javascript 來解,由於我自己寫的文章要求是比較簡短,所以不會有這種需求。不過不失為可加強的功能項目之一。
若 badbrother 兄有想要自行修改研究的話,我可以 mail 範本給你自行修改。
水瓶子你好!
我也正在玩blogger.com的分類功能
希望能從你的版型範本來研究一下
謝謝!
mail: sunjoe[at]gmail.com
小妹尋此功能已久,特來邀一份版型範本。
感謝~
ivyhorn@gmail.com
Joe、小妹,已經寄出。
水瓶子大哥您好:
小弟是位剛開始摸索 blog 的新手, 看到您的教學文真的是覺得 Blogger.com 讓我最困擾的部份可以解決了~
終於有高人能夠突破沒有分類標籤的問題啦XD
實在是太感謝您啦!!
另外, 小弟希望能夠向您索取一份範本來研究, 謝謝您 :)
電郵: lestat.chuang@gmail.com
吸血鬼.黎斯特已經寄出。
水瓶子大大:
小弟已收到了,非常感謝您!
辛苦您啦~~
再次感謝:)
水瓶子
你好! ^^
我也是想跟你 拿分類標籤的template來看看!
謝謝~
cute_dusk[at]yahoo.com.tw
看了水瓶兄對留言和分類的實作,實在十分佩服。本來想自己寫,翻了一下你的blog source code,雖說idea您一說就懂,真的要寫還需要一番功夫。
所以想跟您索取一下您的樣板。等我完成修改後會在首頁上擺上您blog的連結:P
我的email: wowlai.tw(at)yahoo.com.tw
stanley,déjà vu,JimmyLai
三位若沒有收到請跟我講。
謝謝水瓶子兄,我已經收到了。
不過我只用到最新留言(:P)需求不高,分類有機會我在來試。
因為我姐的文章都是 lolo 長的,所以要求我在首頁加上一個"繼續讀完......"的連結,所以只好做上去了,我並不是用內文的長度來判斷,而是用 <BR 這個分行的符號來判斷,同樣,需要範本的人發mail給我: writers@writers.idv.tw 我回寄給大家。
設定方式是只要搜尋一下 var a= 這個字串,設定為 var a=2; 即可有這個功能,不過記得要把所有文章重新組版一次。
水瓶子你好
我也想試試看你的template
有趣的是我原本的template就是跟你同一個原型
另外有一個小小建議
因為你的comments有時候會很長
可以使用help.blogger.com
的方法-"hide/show comments"
並且在comments最下面才加入"發表評論"(或"給予迴響")
---
Blesser
blesserx at gmail.com
http://blesserx.blogspot.com
感激不盡
水瓶子你好
我想試試你設計的分類標籤和最新回應功能,可以e-mail語法給我嗎?
謝謝!
lala2999 hotmail com
以上兩位,我已經mail了,若沒有收到再跟我講。
我正在看你的範本,唉,好複雜阿。
請問一下,如果我只是想使用「最新迴響」的功能,我該co哪一段語法、放在哪裡呢?
謝謝
最新迴響功能沒有辦法像元件式的用一段語法就解決,因為要取得這些資訊必須把所有文章及所有的留言掃一次,然後再排序,所以這個範本主要就是這個程式啦!
我建議豬小草先生可以先套用我的版型,然後再修改CSS,這樣可能比較快達成你的目標。
Dear水瓶子:
我也可以跟你要一份分類的範本嗎?
這樣我就不用搬家了~~
先謝謝你!
我的email是:
chatnoir1@gmail.com
(嗯,也是gmail...:P)
已經寄出。
你好水瓶子
我最近才接觸blogger
希望能跟你要一個"分類標籤及最新回覆應用"
的範本
chen.ming.shian@gaim.com
並請告知blogger除了要用html與css以外還會用到什麼語言
chen,我已經寄出。
我想除了 HTML/CSS 之外,如果在 blogger.com 這個平台,一定要有程式概念,他的組合出 HTML 的設定都是用程式的迴圈概念完成的,所以非常的活,可以做任何的編排。
而我則是用 Client 端的 Javascript 來把一些功能實作出來,其實國內的一些部落格平台這些功能在 Server 端就做出來,可以不用那麼麻煩,會選擇在 blogger.com 用這種克難方式,除了他的平台穩定活用之外,還有一點在練功的意味。如果沒有興趣的人,可以不用學那麼多。
水瓶子你好,我是Blog新手,對這篇文章分類法很有興趣,希望向你要個範本研究,謝謝。
dennis0218@seed.net.tw
dennis,已經寄出。
水瓶子很抱歉,我沒有找到你的mail,不知道是信箱問題還是淹沒到垃圾信件中了,找不到,這次用GMail信箱,能不能麻煩你重新寄一次。
另外我也想要另外一篇post"Javascript製作的三套版型範本"的版型,回在那邊怕你要寄兩次不方便,所以乾脆回同一篇,麻煩你了,謝謝。
dennis0218@gmail.com
dennis,已經寄出。
Hi,
Could you send these template to me, thanks.
my mail: sjliao@gmail.com
你好
我也想向你索取一份範本
感謝
corviscain@gmail.com
你好想跟你索取一份範本...
你很厲害哦~而且還願意分享出來~~
sean5_1@hotmail.com
以上人,我已經 mail出去,收到請回信讓我知道。
您好!我想跟您要一份範本,我的e-mail是mygogo815@gmail.com
謝謝您
水瓶子兄,謝謝你的版型分享,我又來和你請版型了,謝謝你先!
我的電郵是wenyuehwang[at]yahoo.com
已經 mail了,收到要回信讓我知道。
謝謝昨天收到囉
謝謝您的樣版,但我發現我只要將post數改超過10則,我的首頁就只剩下sidebar的部份了!不知道是什麼原因?
原因是某篇標題有亂碼, 我已經改好, 除錯的方式是按下 IE 左下的 javascript 錯誤, 然後看是哪一行有錯誤, 然後檢視 HTML 原始檔去看就知道了。
你好,我也有興趣想參考一下你的樣版
麻煩你寄到我的信箱: gourrymk2+Blog(at)gmail.com
謝謝^^
已經mail出去,收到請回覆讓我知道。
謝謝,我已經收到了,正在研究中^^
我也想向您所索取面板
想在部落格最近迴響的功能...
in.indigo[at]gamil.com
以上麻煩您了~
indigo,你的 email 打錯,我改了再寄出,收到要跟我講一聲。
AquariusBaby 已經寄出,收到要跟我講一聲。
我想這篇文章的回響數目已經太多,先暫時終止這篇的迴響。
給予迴響