Blosxomで記事ごとに専用のCSSを当てる方法を考えていた。last()
でrel="stylesheet"
を削除してCSSの参照を追加するだけのプラグインを作るのも良いけど、やることのわりにコストが高い。単純にmetaプラグインとinterpolate_fancyプラグインを組み合わせて実現するのが手っ取り早そう。
記事ファイルでは特別なCSSを使うかどうかのフラグのみ書く。
パーマリンクに特別なCSSを追加
meta-special_css: 1
<p>...</p>
フレーバーでは以下のようにして、$meta::special_css
を使った分岐を利用する。CSSファイルのパスは記事ファイル名を利用することでユニークさを保証できる。
<?$meta::special_css eq="1">
<link rel="stylesheet" href="/styles$path/$fn.css">
</?>
<?$meta::special_css ne="1">
<link rel="stylesheet" href="/styles/style.css">
</?>
まだ採用はしてない。
常に記事ファイル名を利用したCSSファイルのパスを参照するようにしておいて、mod_rewriteでそのパスが見つからなかった場合にデフォルトのCSSにフォールバックさせる方がもっと手っ取り早い感じする。普通にURL書き換えしちゃうとキャッシュが効かなくなるけど、302での外部リダイレクトにすれば良さそう。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /styles/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ style.css [L,R=302]
</IfModule>
こういう実装だとBlosxomに依存しないので、CSSファイルのパスをユニークにする仕組みさえ用意できれば、様々なCMSで実現できる。