2007/1/16

表謝意:近期迴響

搞不懂為什麼 Blogger 不提供「近期迴響」這個東西,之前使用「資訊提供」網頁元素(Feed Widget)搭配迴響的消息來源(Feed,偏不想叫它資訊提供勒)是做出了個堪用的東西,但可惜的是它不像 WordPress.com 一樣可以顯示迴響網頁標題。

解決方案找不到,頭痛了一陣子,也試用過 Beautiful Beta 提供的方案,但他有幾個大缺點:
  • 顯示的「標題」並不是真正的標題,而是連結名稱解析來的字串:

    @Ramani: I noticed that the post title is no exactly the same as the linkname. I checked the json-feed contents, and it offers no posttitle. You can get the post-id from the feed.entry.id object, but I have not come up with a trick to derive the posttitle fom the post-id. -- Hans

    簡譯:我也知道連結名稱不真能代表網頁標題,不過 Blogger 的 JSON 裡完全沒有網頁標題;雖然也可以從文章的 JSON 找同 post-id 的標題,但我不幹。(譯註:ㄜ,最後那個「我不幹」是我亂講的 XD)

    這點碰上中文更是致命啊...

  • 我問作者那些程式我可否自己修?他沒理我 XD (還是我留錯地方了?因為回去已經看不到我的留言...)

本來放棄了,但昨天查詢 JSON 資訊的時候發現水瓶子那邊已經有可以支援中文的版本「JSON 應用(2):最新迴響的標題」,這很棒!馬上拿回來裝裝看,發現一些地方跟我想的不太一樣:

  • 沒有考慮 noscript:mmm... 我會希望讓沒有開 Script 的人也能看到基本的東西。
  • 版面顯示方式:這沒什麼好壞只是我不習慣,事實上原來的方式感覺還蠻有效率的。

所以經由水瓶子的友善回應,我稍微修改成自己的版本(嗯,其實還改蠻多的,因為我的需求比較簡單),也提供大家參考,修改的地方簡述如下:

  • 考慮不開 Script 的朋友:照後面提到的步驟修改的話,即使對方關閉 Script 也可以看到原來的 Feed Widget 版本。
  • 程式碼比較簡單:剛說了我的需求比較簡單,所以寫的程式也簡單,或許你改起來會更輕鬆?

還有些小缺點... 不過目前是堪用狀態,總之先放出來給大家看,要修改請自便、發現問題歡迎幫我 debug... XD 安裝方法如下:

  1. 先到「範本>網頁元素」中插入一個「資訊提供」網頁元素,怎麼設定都行,只要來源的地方填上「http://你的blogspot網址/feeds/comments/full」就行了。建議標題直接命名為「近期迴響」。
  2. 儲存後切換到「範本>修改 HTML」處,在內容中找到你剛剛輸入的標題(近期迴響),那一整行長得應該像這樣:

    <b:widget id='Feed2' locked='false' title='近期迴響' type='Feed'/>
  3. 麻煩先把剛那段程式碼中粗體的「/>」刪掉,隨即貼上以下這段程式:

    
    >
      <b:includable id='main'>
        <h2><data:title/></h2>
        <div class='widget-content'>
        <div id='divrc'><ul expr:id='data:widget.instanceId + "_feedItemListDisplay"'>
          <b:loop values='data:feedData.items' var='i'>
            <li><b:if cond='data:showItemAuthor'>
                <b:if cond='data:i.author != ""'>
                  <span class='item-author'>
                    <data:i.author/> said:
                  </span>
                </b:if>
              </b:if>
              <span class='item-title'>
                <a expr:href='data:i.alternate.href'>
                  <data:i.title/>
                </a>
              </span>
              <b:if cond='data:showItemDate'>
                <b:if cond='data:i.str_published != ""'>
                  <span class='item-date'>
                    &#160;-&#160;<data:i.str_published/>
                  </span>
                </b:if>
              </b:if>
            </li>
          </b:loop>
        </ul></div>
        <script type='text/javascript'>
          g_iShowCount=5; //這個 5 改成你要顯示的數目
          g_szBlogDomain=&quot;blog.bobchao.net&quot;; //這邊改成你的 blogspot 網址
        </script>
        <script src='http://page.bobchao.net/rc.js' type='text/javascript'/>
        </div>
      </b:includable>
    </b:widget>
    

    記得修改程式中提到的兩個變數。

  4. 先預覽一下會比較保險,沒問題之後就可以存檔了。

這樣會引入http://page.bobchao.net/rc.js 程式碼,要 debug 請往這邊走 :)

其實原版我有些地方不太了解,像是不知道為什麼要取 id 跟排序,不過我的需求來講應該用不到就是了。GData 還有很多查詢參數,如果其提供的 JSON 都能用的話,或許我以後還會再修改一下(例如,我現在才看到有 entryID 這玩意...)

12 則留言:

  1. 之前連分類功能都沒有,還不是撐了這麼多年。缺個「近期迴響」功能也不算什麼,我想這算是歷史的包袱?(or系統老舊...)

    回覆刪除
  2. Hi,我正在準備從wordpress搬過來的種種(從說要搬到現在拖好久了...),看到這好棒的script,不知道你介不介意我把它打包回家用呢XD

    回覆刪除
  3. vintw,
    當然好啊,請隨意 :)

    回覆刪除
  4. 會先出現原本的 FEED 2秒才轉換成新的。

    回覆刪除
  5. 瓦特比,
    對啊,因為要顧及把 Script 關掉的人,所以一開始還是會出現原先的 Feed widget,等程式把資料抓回來以後才替換掉。

    回覆刪除
  6. 如果我不要出現原先的 Feed widget,
    直接載入JSON,
    然後格式改成:
    ----------------
    文章標題
    發表者 [日期]
    ----------------
    不知道要如何修改,
    對於JS我是一竅不通,
    幫幫我吧!

    回覆刪除
  7. 瓦特比,
    我這兩天會比較忙一點(有個幫老師做的東西要結案),弄完幫你改。(或者有其他哪位仁兄要來幫忙一下也很好啦 XD)

    回覆刪除
  8. 雖然我不知道你何時才會有空幫我改,
    等你改好就 Gmail 給我吧!

    回覆刪除
  9. hi 您好,
    我之前用了您所寫的這個近期迴響功能
    真的很好用
    但是最近好像出了問題
    後來檢查才發現
    rc.js 這個檔案不見了
    我之前是直接引用您原來位址的這個 js 檔
    不曉得您是否可以把 js 檔寄給我
    我另外找地方存放呢?
    不好意思
    麻煩你了~~

    回覆刪除
  10. 大餅:
    我忘了還有別人會用 (因為沒什麼迴響還以為沒人用 T_T) 位址改到 http://page.bobchao.net/rc.js 了,你可以下載。

    回覆刪除
  11. 能不能請教柏強,如果我要在最新回覆裡加上日期呢?
    如:
    2008.03.14 flower said on 新期迴響.

    回覆刪除

歡迎留下您的意見