この記事は「PowerCMS X Advent Calendar 2021」の6日目です。
前回の「PowerCMS X で配列をシャッフルしてランダムで出力する(1)」から随分と間が空いてしまいましたが、今回はその続きです。
PowerCMS Xのバージョンもその間に3になってしまいました......。
(1)ではshuffle属性を使いましたので、今回はそれ以外のランダム関連のタグをご紹介します。
ファンクションタグ<mt:ArrayShuffle>は、name属性で指定した配列の中身をシャッフルします。
コレ自体は何も出力しません。
以下の例は、記事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>は、name属性で指定した配列の中身を1つ以上ランダムに抽出します。
このタグ自体は何も出力しません。
抽出する数は「num(limit、lengthでも可)」で指定してください。省略した場合は1になります。
「ランダムに抽出」なので、配列の順番はそのままになります。
以下の例は、記事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」は、どんどんバージョンが上がっていって追加機能を把握するのも大変ですが、そのぶん使いやすくなっているので面白いCMSです。オススメです。
MONSTER DIVEでは、おなじみMovable TypeからPowerCMS Xまで構築経験がありますので、ぜひご相談くださいませ。
→ Movable Type カスタマイズ構築サービス