見出し画像

PowerCMS X で特定カラムのカウント数を表示する

記事モデルのオブジェクトデータがあったとして、

  • 記事A カラム「sample」の値は「TEST」

  • 記事B カラム「sample」の値は「TEST」

  • 記事C カラム「sample」の値は「TEST」

  • 記事D カラム「sample」の値は「DATA」

  • 記事E カラム「sample」の値は「DATA」

フロントは以下の表示をさせたい場合の説明です。カッコ内はカウント数です。

  • TEST (3)

  • DATA (2)

MTタグは mt:countgroupby を利用します。以下がサンプルコードです。
コードの中の「sample」という箇所がカラム名です。ご自身のカラム名に書き換えてください。
例:count_group_by_sample の箇所はカラム名が age だったら、count_group_by_age にします。

<mt:countgroupby model="entry" group="sample" count="sample" sort_by="count" sort_order="descend">
<mt:if name="count_group_by_sample"><mt:var name="count_group_by_sample" /> (<mt:var name="count_group_by__count_object" />)</mt:if>
</mt:countgroupby>

テンプレート・タグリファレンスは以下の記述になっています。

model : 対象となるモデル
group : GROUP BYでグループ化するカラム(複数ある時はCSV指定)
count : 集計対象のカラム
sort_by : 'name'もしくは'count'を指定
sort_order : 'ascend(昇順)' または 'descend(降順)'
offset : N目からリストを開始する(Nは正の整数)
limit : 表示する件数(数値)
glue : 繰り返し処理の際に指定された文字列で各ブロックを連結する

https://powercmsx.jp/about/mtml_reference.html

結果の件数が多い時は「 limit="10"」を付けるとよいですね。10件表示になります。

このタグはカラムの値が重複しないので、ユニークな値を取得する目的で利用しても良いかもしれないです。
以前、別の記事でグローバルモデファイアの array_unique を紹介しましたが、mt:countgroupby タグのほうが良さそうですね。


この記事が気に入ったらサポートをしてみませんか?