アーカイブパスの相対指定用プラグイン

 たまに記事中に自分の過去のエントリーのリンクを張りたくなる事があります。
 そういう時、今までは他サイトへのリンクと同様直接該当URLを指定してたのですが、これだとサイトを引っ越したりでURLが変わってしまうと当然デッドリンクになってしまいます。
 他サイトへのリンクならそれも仕方なしとして、個別に修正するなりあきらめて放っておく(笑)なりできるんですが、さすがに自分の過去エントリーへのリンクについてはここまでやるのは、面倒だし本末転倒な気がします。
 かと言って単純に相対アドレス表記にすると、インデックスやアーカイブごとに格納ディレクトリが異なるため位置関係が一致せず、これまた上手くいきません。
 ということで今回解決法として、エントリー登録時の本文中では「基準となるURL+相対アドレス」という形で記述しておき、再構築時にそれを絶対アドレスに変換するということにしました。


 この「基準となるURL」というのは、例えば引っ越しをすると変わってしまうような部分、MovableTypeで言うと「ウェブログの設定」で指定する「アーカイブのURL」の部分です。 ちなみに私は都合上”mt.cfg”で指定するCGIPathを基準としてます。
(いずれにせよ、人によってディレクトリ構成の違いから最適な基準アドレスは変わってくるでしょう)
 で具体的には、登録時には「基準となるURL」の部分をある代替文字列で表記しておき、この文字列をグローバル・フィルター型のプラグインを利用して実際のURLに置き換えます。
 こういう事をやるプラグインが既にあるかどうか分かりませんが、中身は非常に簡単なものなので、今回は自分で作成しました。
 もし同じ使い方をするので欲しいと思う方がいるようでしたら、このリンク先をテキストファイルとして保存した後、ファイル拡張子を”.pl”に変えてからサーバ上のpluginsディレクトリの下に転送してください。
 使い方としては、例えば本文を

例:<a href=”{MTCGIPath}archives/2005/03/post_foo.html”>2005/03/03のエントリ</a>
(*実際は”MTCGIPath”を挟む中括弧に半角文字を使う)

のように書いておくと、構築後は

例:<a href=”http://xxx.yyy.zzz/mt/archives/2005/03/post_foo.html”>2005/03/03のエントリ</a>

という感じに変換されるという具合です。
あ、あとこの機能を有効にするためには、テンプレート中で使用されている <$MTEntryBody$> というタグを <$MTEntryBody cgipath=”1″$> という風に変更する必要があります。
 ちなみにこのプラグインを作成するにあたって、こちらのサイトを参考にさせていただきました。

コメント

コメントする