バージョン2.0.0から「IFブロック」が追加されました。
テンプレート | ドキュメント | a-blog cms 制作者向け情報

バージョン1.6.1から、フィールドに値が無いときの条件分岐が可能になりました。
カスタムフィールドが「特定の値以外」「空」のときに対応する(バージョン1.6.1以降、2.0.0以前)

a-blog cmsのカスタムフィールドは、

  • 値が指定した文字列と一致したときに実行する
  • 何らかの文字列が入っていたときに実行する

といった条件分岐は可能です。

■特定の値のとき
<!-- BEGIN hoge:touch#0 -->hogeの値が0です<!-- END hoge:touch#0 -->
<!-- BEGIN hoge:touch#1 -->hogeの値が1です<!-- END hoge:touch#1 -->

■何らかの値が入っているとき
<!-- BEGIN fuga:veil -->fugaの値は {fuga}です<!-- END fuga:veil -->

ですが、以下のような条件には対応することができません。

  • 値が指定した文字列以外のとき
  • 値が空のとき

このような分岐をさせたい場合は、大月茂樹さんが公開しているユーザー拡張「IfElseモジュール」を利用します。

IfElseモジュールの使い方

モジュールをインストールする

IfElseモジュールは、GitHubで配布されています。

ダウンロード→解凍したら、出てきた「php」フォルダを、そのままa-blog cmsをインストールしたディレクトリにアップロードしてください。 特に設定は必要なく、すぐ利用可能です。

使い方(1):値が特定の値以外のとき

カスタムフィールド「hoge」の値が「ABC」のとき、そうでないときの条件分岐は、以下のように記述します。

★フィールド名★:if#★値★となります。コロン・シャープを忘れないように注意してください。また、閉じタグには値は必要ありません。

<!-- BEGIN_MODULE IfElse -->
  <!-- BEGIN hoge:if#ABC -->
  hogeの値はABCです
  <!--END hoge:if# -->
  <!-- BEGIN パラメータ名:else -->
  hogeの値はABCではありません
  <!--END パラメータ名:else -->
<!-- END_MODULE IfElse -->

使い方(2):値が空のとき

カスタムフィールド「fuga」に何らかの値が入っているとき、空のときの条件分岐は、以下のように記述します。

このモジュールは、BEGINタグのシャープの後ろに値を指定しないと「空のとき」とみなします。このため、elseの方は、値が入っていればどんな内容でもヒットすることになります。

<!-- BEGIN_MODULE IfElse -->
 <!-- BEGIN fuga:if#-->fugaは空です<!--END fuga:if#-->
 <!-- BEGIN fuga:else -->fugaの値は {fuga}です<!--END fuga:else -->
<!-- END_MODULE IfElse -->

使い方(3):モジュール内でエントリーの情報を参照するとき

<!-- BEGIN_MODULE IfElse -->~<!-- END_MODULE IfElse -->の間では、それより外側で有効になっていたEntry_Bodyモジュールなどの情報を参照することができません。 このため、条件分岐内で記事の概要やカスタムフィールドを呼び出したい場合は、さらに任意モジュールで囲む必要があります。

以下は、METAとOGPに対する応用例です。

  1. カスタムフィールド「meta_desc」に値が入っているときは値を出力
  2. 空のときはEntry_Summaryモジュールを利用して、本文の抜粋を出力

という処理を行います。

<!-- BEGIN_MODULE IfElse -->
  <!-- BEGIN cf_meta_desc:if# -->
    <!-- BEGIN_MODULE Entry_Summary id="postSummary" -->
      <!-- BEGIN unit:loop --><!-- BEGIN entry:loop -->
        <meta name="description" content="{summary}[trim(200, '...')]">
        <meta property="og:description" content="{summary}[trim(200, '...')]">
      <!-- END entry:loop --><!-- END unit:loop -->
    <!-- END_MODULE Entry_Summary -->
  <!--END meta_desc:if# -->
  <!-- BEGIN meta_desc:else -->
    <!-- BEGIN meta_desc:veil -->
      <meta name="description" content="{meta_desc}">
      <meta property="og:description" content="{meta_desc}">
    <!-- END meta_desc:veil -->
  <!--END meta_desc:else -->
<!-- END_MODULE IfElse -->

尚、Entry_Summaryモジュールには一意のIDを付け(この例ではpostSummary)、管理ページの「モジュールID」の設定で、現在表示しているページのエントリーを呼び出すようにする必要があります。

補足

他のCMSの場合、カスタムフィールドの値を一旦変数に代入し、条件分岐に通すことで同様の処理が可能です。MovableTypeであれば独自タグ、WordPressであればPHPで処理します。

このモジュールの詳しい解説、利用シーンは、作者・大月さんの記事を参照ください。