Movable Typeで生成したページ内のURL(リンクURLや画像URL)は普通はhttp://で始まる絶対URLになりますが、これを相対URLにする方法です。
プラグインは使用しませんが、少しテンプレートをいじります。あとグローバルモディファイアreplaceを使用します。

絶対URLはGoogleさんがほとんど公式に推奨してることもあるし、特別な理由がなければ絶対URLのままでいいと思うんですが、

・ソースが長くなるのがやだ
・FTPで落とせばオフラインでも見られるようにしたい
・別のサーバーに転送して公開したいので絶対URLだと困る

とかいう場合はむしろ相対パスにしようと思うわけです。
でもプラグインとか探すのはめんどくさいし、テンプレートだけで済むならそれに越したことはない、ということで。

テンプレートをMTForタグで囲んでreplaceを書くだけ

基本はこれだけ。

<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>

と出力されますね。めでたしめでたし。

Tweet about this on TwitterShare on FacebookShare on Google+Share on TumblrEmail this to someone