![見出し画像](https://assets.st-note.com/production/uploads/images/137499889/rectangle_large_type_2_e17e7645f055ba8542f85bb20b7421e0.png?width=1200)
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 にします。
※ アンダースコアが入ったカラム名(例 age_hoge)の場合はハイフンを省略しないでください。(例 count_group_by_age_hoge)
<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 : 繰り返し処理の際に指定された文字列で各ブロックを連結する
結果の件数が多い時は「 limit="10"」を付けるとよいですね。10件表示になります。
このタグはカラムの値が重複しないので、ユニークな値を取得する目的で利用しても良いかもしれないです。
以前、別の記事でグローバルモデファイアの array_unique を紹介しましたが、mt:countgroupby タグのほうが良さそうですね。