本文へジャンプ

PowerCMS X で配列をシャッフルしてランダムで出力する(2)

この記事は「PowerCMS X Advent Calendar 2021」の6日目です。

前回の「PowerCMS X で配列をシャッフルしてランダムで出力する(1)」から随分と間が空いてしまいましたが、今回はその続きです。
PowerCMS Xのバージョンもその間に3になってしまいました......。

追加されたランダム関連のタグ

  • 「shuffle」属性
  • 「mt:arrayshuffle」タグ:配列をシャッフル。
  • 「mt:arrayrand」タグ:ランダムな n件を抽出。

(1)ではshuffle属性を使いましたので、今回はそれ以外のランダム関連のタグをご紹介します。

<mt:ArrayShuffle>

ファンクションタグ<mt:ArrayShuffle>は、name属性で指定した配列の中身をシャッフルします。
コレ自体は何も出力しません。

mt:ArrayShuffle

サンプルソース

以下の例は、記事8件のデータを配列にしてシャッフル。
<mt:Loop>で全件を出力しています。図のように順番が変わっています。

<mt:Entries limit="8" sort_by="published_on" sort_order="descend">
 <mt:SetVarBlock name="SET_entries_array" function="push"><$mt:EntryID$></mt:SetVarBlock>
</mt:Entries>
 
<$mt:ArrayShuffle name="SET_entries_array"$>
 
<mt:Loop name="SET_entries_array">
 <mt:Var name="__value__">
</mt:Loop>

<mt:ArrayRand>

ファンクションタグ<mt:ArrayRand>は、name属性で指定した配列の中身を1つ以上ランダムに抽出します。
このタグ自体は何も出力しません。

抽出する数は「num(limit、lengthでも可)」で指定してください。省略した場合は1になります。
「ランダムに抽出」なので、配列の順番はそのままになります。

mt:ArrayRand

サンプルソース

以下の例は、記事8件のデータを配列にして、その中から5件だけ無作為に選んでいます。
そして、抽出したものを<mt:Loop>で全件を出力しています。
図のように5件ランダムで選ばれていますが順番はそのままです。

<mt:Entries limit="8" sort_by="published_on" sort_order="descend">
 <mt:SetVarBlock name="SET_entries_array" function="push"><$mt:EntryID$></mt:SetVarBlock>
</mt:Entries>
 
<$mt:ArrayRand name="SET_entries_array" num="5"$>
 
<mt:Loop name="SET_entries_array">
 <mt:Var name="__value__">
</mt:Loop>

まとめ

今回は、<mt:ArrayShuffle>と<mt:ArrayRand>をご紹介しました。
前回ご紹介した、shuffle属性と合わせて使うと効果的に使えると思います。

PowerCMS Xの構築ご依頼お待ちしております。

「PowerCMS X」は、どんどんバージョンが上がっていって追加機能を把握するのも大変ですが、そのぶん使いやすくなっているので面白いCMSです。オススメです。

MONSTER DIVEでは、おなじみMovable TypeからPowerCMS Xまで構築経験がありますので、ぜひご相談くださいませ。
Movable Type カスタマイズ構築サービス

Recent Entries
MD EVENT REPORT
What's Hot?