MovableType

リンクの修正漏れを防ぐテンプレートを作る方法

はじめに

MTタグでなく、直接HTMLに書かれているリンクを、ヘッダーやフッターなど、様々なテンプレートに記述してしまうと、URLやテキストの修正時に漏れてしまう危険性があります。

このような自体を防ぐため、URL情報をMTタグから出力できる様に設定する方法をご紹介します。

サンプルテンプレートの様に作ると、リンク情報の流用ができるようになるので、リンクの設定漏れが減るほか、テンプレートの可読性も良くなるテンプレートが完成します。

MTSetVarTemplate タグを使用するのは、このような特徴があるためです。

  • 囲んだ内容が処理されずテンプレートのまま値になる。
  • ハッシュのキーを指定することができる。

サンプルテンプレート

サンプルでは、リンク設定で定義した内容を「ヘッダー」「フッター」のメニューで出力するものです。

リンク設定

1リンクごとに、MTSetVarTemplateタグを使用します。「name」にリンク名を入力して下さい。 「タイトル」:リンク名 「URL」:遷移先URL 「外部リンク」:外部リンクの場合は1を入力。

<mt:Ignore>リンク設定</mt:Ignore>
<mt:SetVarTemplate name="トップページ">
    <mt:Setvars>
        タイトル=トップページ
        URL=/
        外部リンク=
    </mt:Setvars>
</mt:SetVarTemplate>
<mt:SetVarTemplate name="ブログ">
    <mt:Setvars>
        タイトル=ブログ
        URL=https://cms-note.com/
        外部リンク=1
    </mt:Setvars>
</mt:SetVarTemplate>
<mt:SetVarTemplate name="会社概要">
    <mt:Setvars>
        タイトル=会社概要
        URL=/about/
        外部リンク=
    </mt:Setvars>
</mt:SetVarTemplate>

ヘッダーメニュー設定

リンク設定した内容を、ハッシュのキー指定したMTSetVarTemplateタグに設定します。キーの番号はメニューの並び順になります。

<mt:Ignore>ヘッダーメニュー設定</mt:Ignore>
<mt:SetVarTemplate name="ヘッダーメニュー{01}"><mt:var name="トップページ"></mt:SetVarTemplate>
<mt:SetVarTemplate name="ヘッダーメニュー{02}"><mt:var name="ブログ"></mt:SetVarTemplate>
<mt:SetVarTemplate name="ヘッダーメニュー{03}"><mt:var name="会社概要"></mt:SetVarTemplate>

ヘッダーメニュー出力

作成したハッシュをMTLoopで出力します。 value値には、テンプレートのまま値として設定された、リンク設定の内容が含まれていますので、MTLoopタグの開始タグ直後で出力します。 リンク設定の内容が、メニュー設定で指定した順番で出力されるので、MTVarタグで値を出力します。

<mt:Ignore>ヘッダーメニュー出力</mt:Ignore>
<mt:Loop name="ヘッダーメニュー" sort_by="key"><mt:var name="__value__">
    <mt:if name="__first__"><ul></mt:if>
        <li><a href="<mt:Var name="URL">"<mt:if name="外部リンク"> target="_blank"</mt:if>><mt:Var name="タイトル"></a>
    <mt:if name="__last__"></ul></mt:if>
</mt:Loop>

フッターメニュー

同様にリンク設定した内容を、フッターメニュー用のMTSetVarTemplateタグに設定し、上記と同じMTLoopタグで出力します。(nameは変更して下さい。) キーの指定方法を別パターンにしてみました。お好みの方で良いと思います。

<mt:Ignore>フッターメニュー設定</mt:Ignore>
<mt:SetVarTemplate name="フッターメニュー" key="01"><mt:var name="ブログ"></mt:SetVarTemplate>
<mt:SetVarTemplate name="フッターメニュー" key="02"><mt:var name="会社概要"></mt:SetVarTemplate>
<mt:SetVarTemplate name="フッターメニュー" key="03"><mt:var name="トップページ"></mt:SetVarTemplate>