ロゴ画像:株式会社Gazi工房

親カテゴリと子カテゴリのエントリをカテゴリ毎に一覧表示させ、かつエントリの有無でカテゴリ名を非表示にする。

  • 親子カテゴリでそれぞれにエントリがあり、カテゴリ毎にエントリを出し分け表示する場合、エントリの有無に合わせて「親カテゴリ名」を表示・非表示するには、Entry_Summaryモジュール(ぺージャーで総エントリー数を呼び出し)と、IF文を使うと解決するよ!

みなさまこんにちは!
暖房費節約のため、スクワットで体を温めています!赤井です!

さて、今回はa-blog cmsのアドベントカレンダー17日目に参加のため、a-blog cmsの開発元であるアップルップルの方に教えていただいた表示方法について投稿します!

どんな内容かといいますと…
文章で説明できる自信がないので、以下の図をご覧くださいm(_ _)m


a-blog cmsの構造(一部)

a-blog cmsの構造(という表現で良いのかな?)は、親カテゴリ「A」と、その子カテゴリとして「A01」「A02」があり、それぞれにエントリを作成していく形です。



表示側

a.親カテゴリ「A」に属するエントリ一覧表示部分と、それぞれの子カテゴリ毎にエントリ一覧を表示したい。かつ、

b.親カテゴリにエントリがなくても、子カテゴリにエントリがあれば、親カテゴリ名は表示したまま子カテゴリのエントリ一覧を表示。さらに、

c.親カテゴリにも子カテゴリにもエントリがない場合は、すべて非表示にしたい。


悩んだ点は、b.とc.の部分で、 親カテゴリ名「A」は、

  • 親カテゴリにエントリがなくても、子カテゴリがある場合は表示。
  • 親カテゴリにも子カテゴリにもエントリが無い場合は非表示。

としたかったのですが、うまいこと表示・非表示ができませんでした。


a-blog cms 構築方法

結論からお伝えしますと、以下モジュールとIF文を使うことで解決できました。

  • 親カテゴリ「A」(子カテゴリを含め)に属するエントリ数を取得するためのEntry_Summary [module_id_a]
  • 親カテゴリ「A」(子カテゴリは含めない)に属するエントリを表示するEntry_Summary [module_id_b]
  • 子カテゴリ「A01」に属するエントリを表示するEntry_Summary [module_id_c]
  • 子カテゴリ「A02」に属するエントリを表示するEntry_Summary [module_id_d]
  • IF文:[module_id_a] にてエントリ数を取得できる変数を使い、IF文にて、エントリが「0」なら親カテゴリ名を非表示にする。

各モジュールの条件設定

  • module_id_a:引数のカテゴリIDに、親カテゴリ「A」のIDを指定。カテゴリ「下階層のカテゴリを含める」を選択。
  • module_id_b:引数のカテゴリIDに、親カテゴリ「A」のIDを指定、カテゴリ「下階層のカテゴリを含めない」を選択。
  • module_id_c:引数のカテゴリIDに、子カテゴリ「A01」を指定。
  • module_id_d:引数のカテゴリIDに、子カテゴリ「A02」を指定。






IF文

<!-- BEGIN_MODULE Entry_Summary id="module_id_a" -->
  <!-- BEGIN pager:veil -->
    <!-- BEGIN_IF [{itemsAmount}/nem] -->
    「A」(ここに親カテゴリ名「A」を出す記述。)
    <!-- END_IF -->
  <!-- END pager:veil -->
<!-- END_MODULE Entry_Summary -->

親カテゴリ名「A」の表示・非表示以外は、IF文などは使わず、ビルトインモジュールのみで、想定通りの表示にできます。


私がハマったポイント

Entry_Summaryモジュールのぺージャー(ページャーで総エントリー数を呼び出せる)とIF文を使う方法を思いつかず、エントリーの有無に合わせて親カテゴリ名「A」を表示したり非表示にする部分がうまいこといかなかったのですが、上記方法でいい感じに再現することができました〜!
教えていただき、ありがとうございました!


最新記事

年別の記事一覧