Twig で配列に push して、その配列からランダムに値を取り出す

Craft CMS でも利用されている Twig で配列に push して、さらにその配列からランダムに値を取り出す方法をご紹介します。

Craft CMS Logo

Craft CMS でも利用されている Twig で配列に push して、さらにその配列からランダムに値を取り出す方法をご紹介します。

やりたいこと

$foo = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];

このような配列を作り、この中からランダムに値を一つ取り出すイメージです。

Twig テンプレート

下記のようになります。

{% set foo = [] %}
{% for i in 0..9 %}
 {% set foo = foo|merge([i]) %}
{% endfor %}
配列の要素数は {{ foo|length }} です。ランダムに取得するインデックスは {{ random(foo) }} です。

ポイントは、最初に空の配列をセットして、そこに merge で追加していく、その時に merge(i) ではなく merge([i]) のように配列を merge するところです。

ランダムに取り出す

配列から値をランダムに取り出すのは {{ random(foo) }} とするだけでOKです。

使い所

例えば Craft CMS などの CMS には複数の値を登録しておいて、その複数のイメージの URL を配列にセットして、その URL の中からランダムに値を取り出せば、アクセスするたびに背景画像やトップページのメインイメージを変更する、といったことが可能です。

Craft CMS でエントリをランダムに取得する

Craft CMS ントリをランダムに取得たい場合は下記の記事をご覧ください。

参考

以上です。

Published 2019-03-26
Updated 2019-06-25