MTで不要なHTMLファイルを出力しない方法

Posted on
MTで不要なHTMLファイルを出力しない方法

Movable Typeでは記事を作成するとテンプレートのアーカイブマッピングの設定に従ってHTMLファイルが出力されますが、記事によってはファイルを出力したくないケースがあります。

例えばニュース記事で詳細ページではなくPDFへ直接リンクさせたい場合などでしょうか。
そんなときはアーカイブマッピングのパスにMTタグを使用して対応します。

カスタムフィールドを作成する

記事によってHTMLを出力させるかどうかを選択したい場合、まずは記事に対して以下のようなカスタムフィールドを作成します。

名前:HTMLファイルを生成しない
種類:チェックボックス
テンプレートタグ:EntryNoHtml

名前やテンプレートタグは自由に変更してください。
これで記事の作成画面に「HTMLファイルを生成しない」というチェックボックスが追加されます。

カスタムフィールド

アーカイブマッピングを変更する

次に記事テンプレートのアーカイブマッピングを変更します。

パスの設定はアーカイブマッピングで利用するアーカイブファイル名の定義にある記述方法のほかにMTタグの利用も可能なので、パスのセレクトボックスから「カスタム」を選択してテキストフィールドに以下を記述します。

<mt:Unless tag="EntryNoHtml">%y/%m/%-f</mt:Unless>

mt:Unlessには先程作成したカスタムフィールドを指定していて、チェックが入っていない場合にHTMLファイルを出力する = チェックが入っている場合はHTMLを生成しない という内容に変更します。

こうすることでHTMLファイルを出力するかどうかを記事ごとに決められるようになります。

このようにアーカイブマッピングにMTタグを使用することで、特定の記事だけファイルの出力形式を変えることができたりと他にもカスタマイズが可能になります。

ちなみにアーカイブマッピングのテキストフィールドは255文字までしか入力できないため、それを超える場合は出力する条件をテンプレートモジュールとして作成しておきmt:Includeで呼び出すことで対応します。

テンプレートモジュールとして作成する際は、ファイルの出力形式(上記の例では%y/%m/%-f)をそのまま記述すると普通の文字列として出力されてしまうため注意が必要です。
アーカイブマッピングの形式に変換して出力するには以下のようにmt:FileTemplateのformatに出力形式を記述します。

<mt:Unless tag="EntryNoHtml"><mt:FileTemplate format="%y/%m/%-f"></mt:Unless>

おしまい。