この Weblog のテンプレートは XHTML 1.1 で作ってるんだけど, メディアタイプは text/html として Web サーバから送出されている. これをブラウザの要求に応じて application/xhtml+xml として送出できんかいな, あわよくばそういうプラグインを作れんかいな, と これもまた前々から思っているところ.
ということで, 昨日に引き続き Serene Bach のモジュールを目で追っかけていった. 直接関係しそうなのは下記の 1 行ということを把握. 但し 「1 行」 とは言っても, これと同様の行が複数のモジュール, 複数のメソッドに記述されている.
return sb::Interface->get->head('type'=>'text/html') . $self->set_main($cms->output);
…凄いなコレ. テンプレートから生成された文書 (≒ メソッド sb::TemplateManager::output
の戻り値 $cms
はクラス sb::TemplateManager
のオブジェクト.) が何であろうが関係なく 'text/html'
だなんて. せっかくメディアタイプを指定できるように sb::Interface::head
が実装されているのに これじゃ意味ねーじゃん.
オブジェクト指向的には, テンプレートのメディアタイプを判別して出力する sb::TemplateManager::get_type
なるメソッドを追加すると良さげ. これをプラグイン追加の形で実現するのは簡単だろうけど, あちこちに散在している上記 1 行の修正もプラグイン追加の形で, つまり 1 行を書き換えるためだけにメソッドをオーバーライドする, てのは非現実的だなぁ.
また明け方になって就寝するのはマズいので今回はここまで. 近いうちに作業しようと思う.