« Leopard の Automator + rsync + PipeAlert で公開 | Main | ブログにショートカットキーを入れる - 機能紹介 »
テンプレートタグ EntryBody の find 属性と replace 属性を使ってエントリの内容に変更を加える置換機能で、少し制約があることがわかりました。
テンプレートファイルの中で <$BaseURL> と書くことでエントリの内容を埋め込む場所を指定できるわけですが、その テンプレートタグ EntryBody には find 属性と replace 属性というのがあります。これは find 属性の値でエントリの中から探し出すパターンを正規表現で与え、見つかった箇所を replace 属性で与えた内容に置き換える機能があります。
この機能はこのブログでは、メインページなどエントリが一覧されるところではエントリの概要だけを書いて、「続きを読む」というリンクで本文が記載されているエントリページを指し示すのに利用しています。他にも <$BaseURL$> と書いたところを本当にベース URL で置き換えるのにも使用しています。というのはエントリの内容の中ではテンプレートタグ BaseURL が効かないからです。
今日、クローズドなある web アプリの更新情報などを書くために Thingamablog でブログを一つ作成し、そのテンプレートを弄っていました。ローカルでテストした変更をサーバに反映させるついでにそのブログもサーバに同期を取るようにしました。ですからそのブログは一旦ローカルに「公開」して、それを Thingamablog の外で実際にサーバに反映させるようにしています。元々外からは ssh や sftp でしか操作できないサーバなのですが、そのサーバは公開鍵認証を使っているのでパスワード認証の sftp しかサポートしていない Thingamablog では sftp マウントでもしない限りサーバへ公開できません。それなら一旦ローカルに書き出してそれで内容を確認して同期した方がましです。
そのローカルで確認するときにテンプレートにある <$BaseURL$> が邪魔なのです。いちいちリンク先がサーバになってしまうからです。サーバにはまだ反映させていない新しいエントリを確認するわけですからこれはちょっと不便です。そこで取り除ける <$BaseURL$> を徹底的に取り除いたテンプレートを作ってみました。
ところがそうするとテンプレートタグ EntryBody の置換機能が機能不全に陥り、中途半端な置換しかしなくなりました。そのおかげでメインページやカテゴリページあるいはアーカイブページで本来「続きを読む」というリンクになるところが変なリンクになっただけでなく、エントリの内容全体がそれらのページに出てしまっていました。
最後に書き出し内容を確認してからの変更は <$BaseURL$> をなるべく使わないようにする変更だけです。なるべくというよりもその置換機能の記述以外では使わないようにしました。ですから <$BaseURL$> が無いことの影響しか考えられません。
試しに HTML ヘッダの link 要素による RSS フィードの指し示しのところだけ <$BaseURL$> を復活させてみました。というのはその RSS フィード用の link 要素では RSS フィードの URL を絶対 URL にしないとうまく RSS フィードを取得できないエージェントがあるからです。仕様としては相対 URL でもいいのですが、そういうのがあるからなるべくそこは絶対 URL にしておいたほうがいいのです。
そうしたら「続きを読む」リンクが見事復活しました。どうやら <$BaseURL> を普通のところに一カ所でも書いておかないとテンプレートタグ EntryBody の置換機能の中で <$BaseURL> を利用することはできないようです。