• Home
  • Craft CMS
  • Craft CMS( Twig )で動的なキーと値で連想配列を作成する

Craft CMS( Twig )で動的なキーと値で連想配列を作成する

今回は Craft CMS( Twig )で動的なキーと値で連想配列を作成する方法をご紹介します。Craft CMS を例にしていますが、Twig 全般のお話です。

前回の記事 に引き続き、Craft CMS で下記のような設定のドロップダウンフィールドを作成したとします。フィールドのハンドルは player です。

ドロップダウンの設定

これの設定を元にして、ドロップダウンの値を キー 、ドロップダウンのラベルを にした連想配列を動的に作る方法をご紹介します。作成したい連想配列の形は下記のような形です。

{
    'baggio': 'ロベルト・バッジョ',
    'cruyff': 'ヨハン・クライフ',
    'zico':   'ジーコ'
}

テンプレートを実装

テンプレートは下記のようになります。

{% set players = {} %}
{% set playerField = craft.fields.getFieldByHandle('player') %}
{% for option in playerField.settings.options %}
    {% set players = players | merge({ (option.value) : option.label }) %}
{% endfor %}

まず連想配列を入れる変数を定義します。

{% set players = {} %}

Craft CMS では、 craft.fields.getFieldByHandle('player') でフィールドの情報を取得し、 .settings.options で選択肢の情報を取得できます。この options は下記のような形で情報が入っています(抜粋)。

[
    { 'label' => ドロップダウンのラベル, 'value' => ドロップダウンの値},
    ...
]

なので、ドロップダウンの値は option.value で、ラベルは option.label で取得できます。

この options をループで回しつつ、 merge を使って最初に定義した players にキーと値を追加していきます。

{% for option in playerField.settings.options %}
    {% set players = players | merge({ (option.value) : option.label }) %}
{% endfor %}

キーを動的にする場合は (option.value) のように変数を () で囲むのがポイントです。

あとは普通に {{ players.baggio }} のように出力すれば OK です。

ちなみに、出力するときのキーを動的にする場合は、下記のようなります。Craft CMS で URL の name パラメータから値を取得することを前提にしてみました。

{% set paramPlayersName = craft.request.getParam('name') %}
{{ attribute(players, paramPlayersName) }}

以上です。

Recent Entries

Pickup Categories

Movable Type

CMSとして国内5万サイト以上に導入されている Movable Type に関する記事です。

Craft CMS

CMS 業界で注目の Craft CMS に関する記事です。Craft CMS はチーム全体をハッピーにしてくれる素晴らしい CMS です。