| @技術/プログラミング

遅ればせながら、LDRizeMinibufferというGreasemonkeyをFIrefoxに入れてみました。GoogleやTwitterやTumblrの閲覧が劇的に改善されます。いままでメリットが分からず入れてなかったんだけど、アホですね。もっと早くに入れれば良かった。

となると一年前にやったAutoPagerizeのとき同様、P_BLOGでも動くようにしたくなる。というわけで例のごとくMicroformatsをXHTMLに書き加えました。AutoPagerizeの場合は独自規格のMicroformatsでしたが、LDRizeとMinibufferはhAtomという汎用Microformatsに対応しており、他の用途にも御利益のあるものなんだそうです。ありがたやありがたや。

ところで僕は知らなかったんですけど、XHTMLの中にclassって複数書けるんですね。一要素あたり一個しかclass書いちゃいけないと思ってた。アホだ。これまで autopagerize_page_element 専用に <div> を用意してましたが、これはhAtomのhfeedとご一緒してもらい、<div class="hfeed autopagerize_page_element"> としました。無駄な <div> を一個減らせました。

具体的にはまず include/user_include/base_xhtml.inc.php の変更から。一年前にAutoPagerizeに対応させたときは以下のようにしていましたが

<!-- Begin #content -->
<div id="content">
{$contents_top}
<div class="autopagerize_page_element">
{$contents}
</div>
<div class="autopagerize_insert_before"></div>
</div>
<!-- End #content -->

これを以下のように変更。

<!-- Begin #content -->
<div class="hfeed autopagerize_page_element" id="content">
{$contents}
</div>
<div class="autopagerize_insert_before"></div>
<!-- End #content -->

ちなみにいま僕は $contents_top を使ってないので class="hfeed autopagerize_page_element" と id="content" を同じ<div>の中に同居させました。$contents_top を使っている人は<div id="content">にclass="hfeed"を追加すると良いと思います。

次に include/fnc_logs.inc.php を開き、331行目付近

    $article_box =<<<EOD
<div class="section">
<h3 class="article-title">{$article_title}</h3>
{$date_time}<div class="comment">
{$row['comment']}
</div>

を以下のように書き換え。

    $article_box =<<<EOD
<div class="section hentry">
<h3 class="article-title entry-title">{$permalink}</h3>
{$date_time}<div class="comment entry-content">
{$row['comment']}
</div>

ところでhAtomはISO-8601形式の日付を<abbr>タグのtitleとして表示する必要があるんですが、P_BLOGは標準ではISO-8601形式の日付を表示しないので、AutoPagerizeに対応するよりかは手間がかかります。独自に$pub_date$mod_dateという変数を設定してやりました。すなわち229行目付近$row['mod'] = ...の下に

$pub_date = date('Y-m-dTH:i:sO', strtotime($row['date']));
$mod_date = date('Y-m-dTH:i:sO', strtotime($row['mod']));

の二つを書き加え、233行目付近の$mod_strのところを以下のように書き換えます。

$mod_str = ', '.$lang['mod'].' @ <abbr class="updated" title="' . $mod_date . '">'.$row['mod'] . '</abbr>';

そして最後、245行目付近の$date_time = ...を以下のように書き換えます。

$date_time = '<div class="date">' . $lang['post'] . ' @ <abbr class="published" title="' . $pub_date .'">' . $row['date'] . '</abbr> ' . $mod_str . '</div>';

これでひとまずLDRizeとMinibufferが動くようになります。めちゃ快適です。

しかし厳密にはhAtomではauthorもMicroformatsでマークアップする必要があるんですが、P_BLOGでは著者名表示がサポートされていない。福耳Cafeさんで著者名表示プラグインが配布されているのでこれを入れれば何とかいけそうです。

そろそろLoggixへの移行などを考えるべきなんだろうけど、P_BLOGはいじればいくらでも拡張できるのでなかなか着手できませんね。