2007-03-10

Blogger 資料來源用法與整理 (Site Feed Usage)

在 Blogger 介紹過的眾多 Hack 之中,詢問度最高、用的人最多的就是「最新回應」或「最新文章」,當然,我之前的文章也介紹過,程式碼都一樣,稍稍改一下 Feed 的來源就可以了。包含上一篇顯示相關文章的 Hack 也有提到,Blogger 提供很多種的 Feed 來源,上一篇用的是特定標籤的 Feed,而「最新回應」用的是 Comment 的 Feed,「最新文章」當然就是用整個 Blog 最基本的 Feed,最後一類比較冷門,叫做 Pre-post Comment,Blogger 有「意見管理」的功能,也就是「留言要經版主審核才能刊出」,如果有啟用這個功能,這個 Feed 就可以列出還沒刊出的留言。這四類的 Feed URL 整理如下:

新文章的 Feed(以下幾種都有一樣的效果):

  • http://你的Blog網址/feeds/posts/類型
  • http://你的Blog網址/rss.xml
  • http://你的Blog網址/atom.xml
  • http://beta.blogger.com/feeds/你的BlogID/posts/類型
最新回應留言的 Feed:
  • http://你的Blog網址/feeds/comments/類型
  • http://beta.blogger.com/feeds/你的BlogID/comments/類型
特定分類標籤的 Feed:
  • http://你的Blog網址/feeds/posts/類型/-/標籤
  • http://beta.blogger.com/feeds/你的BlogID/posts/類型/-/標籤
未審核的回應留言的 Feed:
  • http://你的Blog網址/feeds/特定文章ID/comments/類型
  • http://beta.blogger.com/feeds/你的BlogID/特定文章ID/comments/類型

以上有些屬性需要自己調整,說明如下:

  1. http://你的Blog網址:如果沒有用 Customized Domain Name,通常應該是 http://名稱.blogspot.com。這裡有個小技巧,如果在樣版裡面常常會用到「自己」的網址當作變數或 Feed URL,可以直接省略,也就是說 "http://你的Blog網址/" 等同於 "/",絕對路徑可以用相對路徑來表示。
  2. 類型:指的是 Feed 內容的類型,可以填的值有 default, full 和 summary,前兩個是提供完整的 Feed 內容,summary 則是僅提供部分(應該會比較快)。
  3. 你的BlogID:注意一下你的網址列,尤其在你登入編輯的時候看得到,找 blogID= 後面那個字串就是。這裡有官方說明
  4. 特定文章ID:在閱讀特定文章,要留言回應的時候注意一下網址列也可以看到,找 PostID= 後面那個字串就是。
  5. 標籤:你想要看的分類標籤名稱(大小寫有分別喔)。如果想同時看多個標籤的 Feed,也可以用 "標籤1/標籤2" 來取代(代表的是,同時有這兩個標籤的所有文章)。注意,如果有標籤名稱中間有空白,在整個網址一定要加雙引號,手動敲網址的話也可用 %20 或是 + 來替代。

以上是所有 Blogger 提供的 Feed URL,這些 Feed 網址還有一些參數可以下喔!基本常識:如果要在網址後面加參數,第一個參數和網址字串中間要加一個 ? 當連字號,如果後面不止一個參數,參數之間要用 & 當作連接符號。下面先介紹一些參數,連接的特殊符號在範例裡再看:

  1. alt=格式:可以把 Feed 內容的格式改成 RSS 2.0 (rss),預設是 ATOM (atom) 的格式,也支援 JOSN (json-in-script)。
  2. start-index=N:設定 Feed 內容的啟始文章標號,如果 Feed 裡面有十篇,index N 設成五的話,那就只會顯示從第五篇開始後面的內容。
  3. max-results=N:設定 Feed 內容最大的數量。值好像沒有上限(可以搞個 50 或 100 的,相對地文章多顯示會比較慢),預設沒有這個參數的話,內容是 20 篇。
  4. orderby=排序方法:設定 Feed 內容依照發文時間 (published) 排序,或是「更新時間」(updated) 來排序,如果用 published 這個參數不管舊文章怎麼更新,也不會干擾你的 RSS Feed 內容。

好,怎麼混用以上的 Feed URL 加上屬性和參數呢?以下有幾個範例:

  1. 範例一,顯示我的最新文章,強制用 RSS2.0、上限十篇完整內容: http://abintech.blogspot.com/feeds/posts/full?alt=rss&max-results=10
  2. 範例二,顯示我的最新回應,顯示從第五篇開始,總共顯示五篇部分的內容就好: http://abintech.blogspot.com/feeds/comments/summary?start-index=5&max-results=5
  3. 範例三,顯示同時有標籤 BLOGGER HACK 和 CSS 的文章: http://abintech.blogspot.com/feeds/posts/summary/-/CSS/BLOGGER+HACK

有很多的 Hack 都是利用這些 Feed URL 提供的內容來做變化,只要善用 Javascript 或是 JSON 和範例,相信可以做出各式各樣符合自己需求的 Hack,搭配 CSS 語法和 Blogger 的樣版彈性,自己的 Blog 要打造成什麼樣子都沒問題!

參考文章:
Blogger Beta Feeds
修正RSS Feed 依發文時間排序

回應: 11

張騎米 提到...

您好:
我做了一個網站,想用BLOGGER來當作資料維護的工具,但不想用BLOGGER當作介面,看了您的文章之後,解決了我大部分的問題,但是目前還有一個「搜尋文章」的問題,要如何取得在BLOGGER上方搜尋列結果的XML呢?

Abin 提到...

To 張輯米:
我不懂什麼是「BLOGGER上方搜尋列結果的XML」,如果你是想做站內搜尋的功能,請參考以下兩篇文章:增加站內的全文搜尋 & 內嵌搜尋引擎來做 Blog 的全文搜尋

張騎米 提到...

To: abin

不好意思,沒有解釋清楚
因為我想用PHP作一個網站,背後的資料則是用BLOGGER,所以不希望使用者的連結會連到BLOGGER。

目前依照您的文章可以做出站內的全文搜尋,但是我想用PHP把搜尋結果擷取出來做處理之後再輸出,不知道BLOGGER有沒有提供搜尋結果的XML?

另外,BLOGGER有沒有全部標籤列表的XML輸出?我也想用PHP來作自訂的標籤雲。

非常感謝

吉米

Abin 提到...

TO 張喆米:
這部份我沒有碰過,建議你直接參閱 Google Data API,裡面也有部份是關於 Blogger Data、用 PHP 呼叫的介紹,至於像你說做標籤列表、搜尋輸出的 XML,只要 Google 有提供相關函式,應該都會有 XML 的 Output 才是。

張騎米 提到...

非常感謝!

張騎米 提到...

又來麻煩您,找了很久找不到把列出結果倒序的參數。只能找到 orderby=published或 updated,還是說實際上沒有這個參數?

Abin 提到...

To 張輯米:
我查看了 Google Base API 裡面的描述,我有看到一個新的參數,叫做 sortorder,所以照理來說,應該可以用 sortorder=ascending 或是 sortorder=descending 來更改 Feed 查詢的顯示順序(請看這篇文章的說明),不過很不幸的,在我實際測試後,套用到 Blogger Data 上面並沒有效。原生的 Blogger 查詢參數並沒有更改 feed entries 順序的參數,連 Base API 的也不能用,看來就無解了,只好自己用程式去排囉。

張騎米 提到...

哎呀~好吧~
看來還是得要靠程式來搞了...
下面是小弟用BLOGGER資料當作資料源所作的網站,是使用PHP寫的。歡迎指教
每週看戲俱樂部
http://mjkc.tw

張騎米 提到...

忘了說,目前這個網站除了文章回應順序無法修正外,關鍵字查詢也還有錯誤。就是之前問您要怎麼取得網誌內容的FEED,我的作法是用 blogsearch.google.com 但是他傳回的FEED沒有單篇文章的POSTID,所以無法解析。

mrmu 提到...

感謝感謝! 被blogger的rss困擾整個晚上!! 同樣是抓blogger網址後接rss.xml的檔,有的是atom,有的是rss,非常困擾!! 看到您介紹可以接參數,終於解決我的問題了~ :D

梅酒 提到...

最近要設定by tag去feed匯入facebook,一直有參考到這篇文章,雖然是很舊的文章了,不過還是很受用。
特來感謝一下。

張貼留言

歡迎留言或發表意見,不過要理性不做人身攻擊。匿名的朋友得到回應的速度會比較慢喔~
發問相關的禮貌和規矩請先參考這篇文章,不當留言、和本文無關的回應可能會被直接刪除無視喔!