back_and_forthプラグインをAutoPagerize対応に

back_and_forthプラグインではprevで時系列的に古いエントリを、nextで時系列的に新しいエントリを参照していた。そのためAutoPagerizeはSITEINFOをちゃんと書いてやらないと動作しなかった。このサイトをAutoPagerizeへSITEINFOを書かずに対応させるためback_and_forthプラグインを更新して、prevnextが参照するエントリを逆にしてみた。このバージョンのback_and_forthプラグインに差し替えた上で適切な要素のclass属性にautopagerize_page_elementを加えてやれば、SITEINFOを用意してやらなくてもAutoPagerizeが動作するようになるはず。

既にこのサイトでは稼動させている。が、キャッシュの関係で途中でterminatedになることもある(既に古いエントリを閲覧していた場合にキャッシュが残っていてnextが見つからなかったりするので)。

「prev」と「next」は日本語の感覚で「前」と「次」をイメージすると、今までの参照の仕方のが自然な気がするけど、実際のところはどうなんだろ。ぶっちゃけセマンティクスはまったく考えずにAutoPagerizeへの簡単な対応だけを考えてゴリゴリ書き換えてしまった。HTML 4.01仕様書のLink typesでは「線上に並んだドキュメント(邦訳では、続き物とされている文書群)」としか書かれていないので、その並び方の基準が時系列である(または他の何かである)とは明記されていない。

ここらへんのことは日本語脳で考えるとまずそうなので、海外で有名なフォーラム・ソフトウェアとか色々見てみたところ、多くはnextで古いスレッドを参照しているようだ。時系列的にnextとは捉えておらず、ページ的にnextみたいな捉え方をしている。対してAnne先生のサイトなどではnextで時系列的に新しいエントリを参照するようになっている(今までのこのサイトの挙動と同じ)。Web標準界隈のサイトはこっち系のが多いような印象(20くらいのサイトしか見てないけど)。

戻したくなった。戻すかも。戻す時にはSITEINFOちゃんと書こう。

AutoPagerizeへの対応関連とは関係ないが、他にXHTMLで出力するかどうかを選択できるオプション設定とかもさりげなく追加しておいた。link要素の出力の時に参照される。

追記

戻した。SITEINFOを書きたくないがために……というのは理由として貧弱すぎる。十分納得した上での変更なら良いと思うけど、かなり軽い感じで変更してしまったので元に戻してもうちょっと考えてみようと思う。とはいってもAutoPagerizeへは対応したいので、SITEINFOを書いてデータベースに追加しておいた

ページによって辿って貰う対象を制御してやるためにautopagerize_follow_locationというクラス名を割り振ることにし、エントリ個別のページではrel="prev"a要素に振り、ウェブログのトップやカテゴリごとのページの場合はrel="nexta要素に振った。AutoPagerizeのキャッシュをクリアして、ざっと確認したところ意図したとおりに動いている模様。