WebDesigner's Memorandumウェブデザイナーの備忘録

Movable TypeでAssetURLやEntryPermalink・ContentPermalinkで出力されるパスを絶対パスから相対パスに変える

Movable TypeでAssetURLやEntryPermalink・ContentPermalinkで出力されるパスを絶対パスから相対パスに変える

Movable Typeで下記のタグを使って画像や記事のリンクを出力すると、絶対パスで出力されてしまいます(僕が使っていて確認したのが下記3つなので他にも絶対パスで出力されるタグがあるかもしれません)。

  • <mt:AssetURL>
  • <mt:EntryPermalink>
  • <mt:ContentPermalink>

ステージング環境で更新・再構築をして、問題がなければ本番環境にアップするような運用の場合、絶対パスだと困ります。
ということで、絶対パスを相対パスに置き換えるように処理を入れました。

パスの置き換え

Movable Typeのタグでは「replace」という属性が使えます。
使い方は「replace="検索する語","置換する語"」です。「,(カンマ)」で区切って2つの値を指定します。

これを使ってサイトのドメインを「/」に置き換えます。

サイトのドメインは変数を使う

全箇所に直接ドメイン名を記述するのは後で変更したくなったときに微妙なので、テンプレートの最初に、サイトのURLを変数に入れて持っておくようにします。

<MTIgnore>【定数】:サイトのURL</MTIgnore>
<mt:SetVarBlock name="WebsiteURL"><mt:BlogParentWebsite><$mt:WebsiteURL$></mt:BlogParentWebsite></mt:SetVarBlock>

あとは「$WebsiteURL」で変数の呼び出しができるので、「/」に置き換えるようにタグを置き換えていきます。

  • <mt:AssetURL replace="$WebsiteURL","/">
  • <mt:EntryPermalink replace="$WebsiteURL","/">
  • <mt:ContentPermalink replace="$WebsiteURL","/">

タグの表記を統一しておくことの重要性

あとになってからこの現象に気がついたので、各テンプレートファイルを見て回って一括で検索・置換して対応しました。

Movable Typeでは<mt:AssetURL><MTAssetURL><$mt:AssetURL>など同じタグでも複数の表記方法があります。
表記が揃っていないと、このような後からの検索・置換時に抜け漏れが出てきて大変になるなと感じました。

著者について

プロフィール画像

サイトウ マサカズ@31mskz10

1997年生まれ。2016年から専門学校でデザインについて勉強。卒業後は神戸の制作会社「N'sCreates」にウェブデザイナーとして入社。このブログでは自分の備忘録も兼ねて、ウェブに関する記事や制作環境を効率的に行うための記事を書いています。

Twitterをフォロー Facebookでいいね