【MTOSカスタマイズ】MTEntryFlagを利用して条件分岐をする

Movable Type Open Source(MTOS)は、2015年の9月末でサポートを終了

MTOSは、2015年の9月末でサポートを終了しました。 わたしはCMS構築でMovableTypeやWordPressを使用することが多いですが、MovableTypeについては、商用版をMT3から利用しています。 MTOS(MT5.2のオープンソース)もかなりお世話になりました。

今回の記事は今さらですが、MTOSのカスタマイズ記事です! ご存知の方も多いと思いますが、MTOSは「カスタムフィールド機能」や「コミュニティ機能」がありません。 そこで、管理画面にあるデフォルトの機能を利用して、いろいろなカスタマイズをしてみようじゃないかという試みです。

今回の記事の目的

  • MT5OSの投稿画面を見てみる
  • 「MTEntryFlag」を使って表示を制御する

デフォルトの機能を、カスタムフィールド替わりに利用する。 ちょっとした条件分岐ならデフォルトの機能で補えるので、MTOSでなくとも意外と活用できる機会がありそうです。

MT5OSの投稿画面

カスタムフィールド機能がありませんので、使える入力のフィールドは以下の画像のようになります。 ※MTOS5.2.13の画面キャプチャです。

投稿画面

デフォルトの入力項目

  • タイトル
  • 本文
  • 続き
  • タグ
  • 概要
  • キーワード
  • カテゴリ
  • コメント
  • トラックバック
  • ブログ記事アイテム

こうやって挙げてみると意外とフィールド数が多いので、十分運用できそうですね。 今回は、これでもフィールドが足りない!という場合にコメントとトラックバックを利用した条件分岐にチャレンジしてみます。

コメントやトラックバックを許可する、機能を利用する

コメントを利用する

サイトの構築では、コメントやトラックバック系のタグはあまり使わないかもしれませんが、投稿画面のデフォルトにも付いているので、利用してみましょう。 カスタムフィールド機能がないと作りづらい、「チェックボックス」をデフォルトの機能から拝借してみます。

まずは「MTテンプレートタグ」をみていきましょう。

MTEntryFlag

コメントやトラックバックのチェックボックスの状態を判断するためには、「MTEntryFlag」というMTタグを使います。 「MTEntryFlag」は、フィールドの状態を真(true)と偽(false)で返してくれるタグです。

flag モディファイアで指定した記事のフィールドの状態を、0 か 1 で表示します。 コメントの受け付け (allow_comments) の状態とトラックバックの受け付け (allow_pings) の状態を表示できます。

引用元:MTEntryFlag | テンプレートタグリファレンス – CMSプラットフォーム Movable Type –

また、「MTEntryFlag」を利用する際は、以下のモディファイアが必須となります。

MTEntryFlagのモディファイアをチェック

flag=”allow_comments | allow_pings”

allow_comments はコメントの状態を表示します。 許可されている場合は 1 になります。 allow_pings はトラックバックの状態を表示します。 許可されている場合は 1 になります。 このモディファイアは必須です。

引用元:MTEntryFlag | テンプレートタグリファレンス – CMSプラットフォーム Movable Type –

「MTEntryFlag」には2つのモディファイアがあるようです。

<$mt:EntryFlag flag="allow_comments"$>
//コメントにチェックがある場合(コメントを許可)、「1」になる

<$mt:EntryFlag flag="allow_pings"$>
//pingの送信にチェックがある場合(トラックバックを許可)、「1」になる

チェックボックスにチェックがあった場合に「1」になることを利用して以下の条件分岐を考えてみました。

コメントの許可をした場合の条件分岐

<mt:SetVarBlock name="commentflag"><$mt:EntryFlag flag="allow_comments"$></mt:SetVarBlock>
<mt:If name="commentflag" eq="1">
<p>コメントの許可をチェックした場合、このエリアが表示される</p>
<mt:Else>
<p>コメントの許可をチェックしていない場合、このエリアが表示される</p>
</mt:If> 

トラックバックを許可をした場合の条件分岐

<mt:SetVarBlock name="pingflag"><$mt:EntryFlag flag="allow_pings"$></mt:SetVarBlock>
<mt:If name="pingflag" eq="1">
<p>トラックバックの許可をチェックした場合、このエリアが表示される</p>
<mt:Else>
<p>トラックバックの許可をチェックしていない場合、このエリアが表示される</p>
</mt:If> 

どちらの場合も「mt:SetVarBlock 」でチェックボックスの状態を「0」か「1」で取得し、「mt:If」で条件分岐するというもの。 これだけでデフォルトの機能を利用した条件分岐ができました。 意外と簡単ですよね!

試しに「mt:GetVar」で出力すると、「0」か「1」を返していることが確認できます。 デバッグが必要な場合は、出力の確認をしながらカスタマイズをしてきましょう。

<$mt:GetVar name="commentflag"$>

まとめ

いかがでしたか? 今回はMTの管理画面のデフォルトの機能で条件分岐をしてみることにチャレンジしてみました。 MTOSを使っていて、カスタムフィールドが使えない状況の時は、デフォルトでチェックボックスが2つ追加された感じになりますので、使う機会があるかもしれませんね。 MT6でも使えるテンプレートタグなので、MTOSでなくとも機会があれば使ってみてください。

MTOSのカスタマイズは好きで結構触っていたので、今さら感がすごいですが記事にしていきたいと思います。