プラグインは使用しませんが、少しテンプレートをいじります。あとグローバルモディファイアreplace
を使用します。
絶対URLはGoogleさんがほとんど公式に推奨してることもあるし、特別な理由がなければ絶対URLのままでいいと思うんですが、
・ソースが長くなるのがやだ
・FTPで落とせばオフラインでも見られるようにしたい
・別のサーバーに転送して公開したいので絶対URLだと困る
とかいう場合はむしろ相対パスにしようと思うわけです。
でもプラグインとか探すのはめんどくさいし、テンプレートだけで済むならそれに越したことはない、ということで。
基本はこれだけ。
<MTFor replace="http://example.com/","./">
<ul>
<MTEntries>
<li><a href="<MTEntryLink>"><MTEntryTitle></a></li>
</MTEntries>
</ul>
</MTFor>
MTFor
で囲んで、そこにグローバルモディファイアのreplace
を書きます。
こうすると、MTFor
で囲んだ部分のhttp://example.com/
という部分が./
に置き換わります。
MTFor
ってこういう使い方もあるんですねー。裏技みたいなものでしょうか。
何もしていない場合は以下のような感じなのが、
<ul>
<li><a href="http://example.com/entries/post1.html">記事1</a></li>
<li><a href="http://example.com/entries/post2.html">記事2</a></li>
<li><a href="http://example.com/entries/post3.html">記事3</a></li>
</ul>
こんな感じに出力されるようになります。
<ul>
<li><a href="./entries/post1.html">記事1</a></li>
<li><a href="./entries/post2.html">記事2</a></li>
<li><a href="./entries/post3.html">記事3</a></li>
</ul>
トップページなどはこれでいいわけですね。
変数RELPATH
(変数名は何でもいいですが)に相対パスを代入します。
カテゴリの数だけループさせて、さかのぼる部分を足してるわけです。
で、作った相対パスをreplace
の置換後の部分に入れてます。変数なので頭に$記号。
<MTSetvar name="RELPATH" value="./">
<MTIfNonEmpty tag="EntryCategory">
<MTParentCategories glue="">
<MTSetvar name="RELPATH" value="../" append="1">
</MTParentCategories>
</MTIfNonEmpty>
<MTFor replace="http://example.com/","$RELPATH">
(省略)
</MTFor>
これも考え方は全く同じです。
<MTSetvar name="RELPATH" value="./">
<MTParentCategories glue="">
<MTSetvar name="RELPATH" value="../" append="1">
</MTParentCategories>
<MTFor replace="http://example.com/","$RELPATH">
(省略)
</MTFor>
ウェブページもほとんど同じような考え方です……が、ウェブページをフォルダーの中に入れない人は、一番最初のやつ(./に変換するやつ)で大丈夫ですね。
フォルダーを考慮した場合の書き方はおいおい追記しようと思います。
注意すべき点としては、「置換したくないところまで置換されちゃう」ということです。
たとえば、ページの中であえてURLを記載してるところとかがあったら、
置換前: <a href="http://example.com/">http://example.com/</a>
置換後: <a href="./">./</a>
これじゃ意味不明ですね。なので、あらかじめ置換されたくないURLは、【URL】と書く!と言う風に決めておく、というのはどうでしょう。
多分公式にアナウンスされてないですが、replace
は2つ(3つ以上も大丈夫だと思うけど)書くことができます。
その場合、左に書いた分から処理されるみたいです。
<MTFor replace="http://example.com/","./" replace="【URL】","http://example.com/">
<a href="http://example.com/">【URL】</a>
</MTFor>
こんな風に書けば、
<a href="./">http://example.com/</a>
と出力されますね。めでたしめでたし。