Posts tagged with Habari

YourMood Plugin for Habari (pre-alpha)

又一個小 Plugin,效果就是每篇文章下方的「這篇文章讓你覺得…」,中文版的心情取自 Yahoo! 奇摩新聞,而英文版的心情則參考 NBC New York。

YourMood (pre-alpha)

這個 Plugin 的 PHP 部份比較簡單,困難的地方反而是 CSS…… XD 我的作法是把每篇文章的心情資訊分別儲存於一條 postinfo 紀錄當中,起初也曾考慮過要新增一個名為 Mood 的新內容類別(Content Type),不過後來覺得以 YourMood 而言這樣子太大材小用、浪費空間。現在的這種作法也並非沒有缺點,這種作法的缺點就是不容易進行統計與分析。

目前 YourMood 的已知問題有:

  1. 完全沒有判斷使用者是否已經投過票,只要重新整理就能再投一次。
  2. 投票結果的更新我預期是要有補間動畫的,不過這樣一來就必須用 JavaScript 產生 HTML,會導致 HTML 樣板不容易自訂。
  3. 缺少圖示,我實在找不到合適的圖庫……

Binadamu Theme for Habari v1.2

沒想到距離上一個 stable 版已經兩年了 @﹏@ 這次的更新主要就是支援 Habari 0.7,另外 source code 也遷移到 bitbucket.org/bcse

Changelog

  1. 支援 Habari 0.7。
  2. 新增本地化支援以及正體中文語系。
  3. 更多的外掛支援:Breezy Archives、Fresh Comments、TwitterLitte。
  4. Gravatar 改用 Template 版

Polyglot Plugin for Habari (pre-alpha)

polyglot

寫了個小 plugin,對於偶爾會寫多國語言版本文章的 blog 來說相當實用。

目前是採用這樣的 formatting:

<x:polyglot lang="zh-tw">
    正體中文文章。
</x:polyglot>
 
---
 
<x:polyglot lang="en">
    English entry.
</x:polyglot>

<x:polyglot /> 是自定義標籤,因為如果用既有標籤的話 Regular Expression 會不好處理巢狀標籤的問題…… 目前後台的 UI 還沒處理,要自己輸入這些特殊標籤。

第一個語言版本會被視為預設語言版本,如果文章中沒有出現 <x:polyglot /> 標籤,Polyglot 就不會被執行。但如果有的話,<x:polyglot /> 以外的文字都會被忽略,可以用來寫註解或畫分隔線。

目前在 Feed 方面的處理是一律忽略 <x:polyglot />,所以在 Feed 裡面會一次看到各國語言版本的文章。

Polyglot (pre-alpha)

TweetSuite Plugin for Habari (pre-alpha)

前幾天看到了 TweetBacks 這個新 idea ,實用性可能很低,但相當有趣,因此今天趁著有空寫了給 Habari 用的版本。目前完成度還不高,不過 TweetBacks 的功能都有了。

為了讓此 Plugin 得以運作,我修改了 Habari Core ,請參閱安裝前須知。目前 Habari 暫時還沒有自訂 Comment 內容型態的功能, Post 則有,這個功能未來計畫會加入,因此現在只能用這種克難作法。

Things to Do Before Installation

請先修改 comment.php, comments.php 兩個檔案,方能使用此 Plugin 。

To use this plugin, please modify your comment.php and comments.php as below.

  1. comment.php

    const COMMENT = 0;
    const PINGBACK = 1;
    const TRACKBACK = 2;
    const TWEETBACK = 3; // Add this line
    
    public static function list_comment_types( $refresh = false )
    {
        if ( ( ! $refresh ) && ( ! empty( self::$comment_type_list ) ) ) {
            return self::$comment_type_list;
        }
        self::$comment_type_list = array(
            self::COMMENT => 'comment',
            self::PINGBACK => 'pingback',
            self::TRACKBACK => 'trackback',
            self::TWEETBACK => 'tweetback', // Add this line
        );
        return self::$comment_type_list;
    }
    
  2. comments.php

    private function sort_comments()
    {
        $type_sort = array(
            Comment::COMMENT => 'comments',
            Comment::PINGBACK => 'pingbacks',
            Comment::TRACKBACK => 'trackbacks',
            Comment::TWEETBACK => 'tweetbacks',  // Add this line
        );
    ...
    
    public function __get( $name )
    {
        switch ( $name ) {
            case 'count':
                return count( $this );
            case 'approved':
            case 'unapproved':
            case 'moderated':
            case 'comments':
            case 'pingbacks':
            case 'trackbacks':
            case 'tweetbacks':  // Add this line
                return new Comments( $this->only( $name ) );
        }
    }
    

Get it!

目前只能透過 SVN 取得。

You can get TweetSuite via SVN.

Known Issues

  1. 有時(或者該說是經常?)資料庫會儲存到重複的 Tweetbacks ,但這種情況是一次就出現很多重複的 Tweetbacks。
  2. 有些短網址是大小寫有別的,而 Twitter Search 不區分大小寫,於是可能會抓到一些無關的 Tweetbacks 。(尤其是 bit.ly 的短網址超容易發生這種事)

Notes

此 Plugin 的運作流程依序為:

  1. 使用者讀取單篇文章(Post)
  2. 讀取完畢時, TweetSuite 才開始執行,這有兩層考量:在讀取文章前執行可能導致讀取變得非常慢、讀取文章前還沒有 Post 物件能用 XD 但這種作法的缺點就是最新的 TweetBacks 會在第二次載入時才出現。
  3. TweetSuite 首先會讀取這篇文章的短網址資訊,如果資訊不存在,便會到各個短網址服務產生這篇文章的短網址,然後儲存到資料庫。如果是有缺漏,便只會重新嘗試產生遺漏的短網址。(寫這個的時候我發現 tr.im 這個服務,程式寫得不太好…… 因為它不會檢查資料庫中是否已經存在重複的網址,每次都將給你一個新產生的網址)
  4. 得到這些短網址後, TweetSuite 會將它們串接起來丟到 Twitter Search 作聯集搜尋,最後將得到的搜尋結果存入 comments 資料表。其實在執行 Twitter Search 之前, TweetSuite 會先取得這篇文章最近一次的 TweetBacks 的 ID ,然後就能加入 Twitter Search 的參數中,讓 Twitter Search 只回傳較新的 Tweets ,因此資料庫中的 TweetBacks 不會重複。
  5. TweetSuite 會紀錄這一次執行的時間,接下來一個小時內同樣的文章將不會重複執行。

Breezy Archives Plugin for Habari

簡介

Breezy Archives 是一個模仿 Live Archives 的彙整 Plugin 。當瀏覽器關閉 JavaScript 功能時,它會變成 Clean Archives ,而不會留下一個空白的頁面。

安裝

  1. 解壓縮檔案。
  2. 將 breezyarchives 資料夾放到 /user/plugins 資料夾中,然後到 Habari 管理介面中啟用它。
  3. 將下面這行貼到你的 Theme 中。

    <?php if ( Plugins::is_loaded('BreezyArchives') ) $theme->breezyarchives(); ?>
    

設定 / 自訂

啟用後,請按下 Configure 來設定此 Plugin ,有這些項目可以設定:

  • Chronology — 依月份彙整的設定
    • Title for Chronology Archives — 月份彙整的標題。
    • Month Format — 設定月份的格式,共有四個選項可選擇。
      • Full name — 全稱 (January – December)
      • Abbreviation — 縮寫 (Jan – Dec)
      • Number with leading zero — 前方補零的數字 (01 – 12)
      • Number without leading zero — 前方不補零的數字 (1 – 12)
    • Show Monthly Posts Count — 顯示每個月份的文章數量。
  • Taxonomy — 依標籤彙整的設定
    • Title for Taxonomy Archives — 標籤彙整的標題。
    • Show Tagged Posts Count — 顯示每個標籤的文章數量。
    • Excluded Tags — 此為選填欄位。在此輸入你不要顯示於標籤彙整的 tag slugs
  • Pagination — 分頁設定
    • № of Posts per Page — 每頁顯示幾篇文章。
    • Next Page Link Text — 下一頁的連結文字。
    • Previous Page Link Text — 上一頁的連結文字。
  • General — 一般設定
    • Show Newest First — 將新的文章放在前面。
    • Show № of Comments — 顯示每篇文章的迴響數量。

如果你要修改 CSS 呈現的結果,可以將 breezyarchives.css 複製到你的 Theme 資料夾中並修改這個檔案。

下載

更新紀錄

  • 0.1 (2008-08-27) — 初次釋出。

Pageless Plugin for Habari

警告

使用此 Plugin 必須有 HTML 、 PHP 基礎知識。

簡介

此 Plugin 取代了分頁,使用者只要將頁面向下捲動,新的內容便會自動載入。

安裝

  1. 解壓縮檔案。
  2. 將 pageless 資料夾放到 /user/plugins 資料夾中,然後到 Habari 管理介面中啟用它。
  3. 將 pageless 資料夾中的 pageless.php 複製到你使用中的 Theme 資料夾,並根據你所使用的 Theme 來修改。(通常只要參考 multiple.php ,刪除 foreach 以外的部份即可。)

設定

啟用後,請按下 Configure 來設定此 Plugin ,你必須設定這些項目:

  • How many posts to load each time? — 你一次想載入幾篇文章?
  • Class name of posts — 每篇文章共同的 CSS class
  • ID of page selector — 頁碼選擇器的 ID

設定範例

正確的 HTML 架構如下:

<div id="entry-post_1" class="hentry">
    <!-- Post 1 -->
</div>
<div id="entry-post_2" class="hentry">
    <!-- Post 2 -->
</div>
<div id="entry-post_3" class="hentry">
    <!-- Post 3 -->
</div>
<div id="page-selector">
    <!-- Page: 1, 2, 3, ... -->
</div>
  1. 每篇文章各有一個 ID ,格式為 entry-post_slug
  2. 每篇文章都有一個共同的 CSS class ,範例中為 hentry
  3. 頁碼選擇器有一個 ID ,範例中為 page-selector

如果你的 HTML 架構不符合以上條件,請修改你的 Theme 。

下載

更新紀錄

  • 0.1 (2008-07-31) — 初次釋出。

FlickrFeed Plugin for Habari

簡介

此 Plugin 讓你在 blog 上顯示你的 Flickr 最新照片。我覺得 unserialize() 應該會比解析 XML 快得多,所以我寫了這個 plugin.

安裝

  1. 解壓縮檔案。
  2. 將 flickrfeed 資料夾放到 /user/plugins 資料夾中,然後到 Habari 管理介面中啟用它。
  3. 將下面這行貼到你的 Theme 中。

    <?php if ( Plugins::is_loaded('FlickrFeed') ) $theme->flickrfeed(); ?>
    

設定 / 自訂

啟用後,請按下 Configure 來設定此 Plugin ,有這些項目可以設定:

  • Photostream type
  • Flickr ID — 你的 Flickr ID ,你可以使用 idGettr 取得。
  • № of photos — 設定要顯示幾張照片。
  • Photo size — 設定照片大小。
  • Tags — 限制只顯示某些標籤的照片,以逗號分隔,不可空白。(可不填)
  • Cache expiry — 設定暫存檔保存多久,單位是秒。

如果你要修改 HTML 呈現的結果,可以將 flickrfeed.php 複製到你的 Theme 資料夾中並修改這個檔案。

下載

更新紀錄

  • 0.2 (2008-07-26) — 初次釋出。