エントリフィールド

エントリフィールドでは、エントリを他のエレメントに関連付けることができます。

設定

エントリフィールドの設定は、次の通りです。

  • ソース – フィールドが、どのエントリ(または、他のエントリインデックスソース)からエントリを関連付けられるか。
  • リミット – フィールドと一度に関連付けできるエントリ数の上限(デフォルトは無制限です)
  • 選択ラベル – フィールドの選択ボタンのラベルに使用されます

マルチサイト設定

マルチサイトがインストールされている場合、次の設定も有効になります。(「高度」のトグルボタンで表示されます)

  • 特定のサイトから エントリ を関連付けますか? – 特定のサイトのエントリとの関連付けのみを許可するかどうか。

    有効にすると、サイトを選択するための新しい設定が表示されます。

    無効にすると、関連付けられたエントリは常に現在のサイトから取得されます。

  • サイトごとにリレーションを管理 – それぞれのサイトが関連付けられたエントリの独自のセットを取得するかどうか。

フィールド

エントリフィールドには、現在関連付けられているすべてのエントリのリストと、新しいエントリを追加するためのボタンがあります。

「エントリを追加」ボタンをクリックすると、すでに追加されているエントリの検索や選択ができるモーダルウィンドウが表示されます。このモーダルから新しいエントリを作るには、「新しいエントリの入力」ボタンをクリックします。

インラインのエントリ編集

関連付けられたエントリをダブルクリックすると、エントリのタイトルやカスタムフィールドを編集できる HUD を表示します。

テンプレート記法

テンプレート内でエントリフィールドのエレメントを取得する場合、エントリフィールドのハンドルを利用して、関連付けられたエントリにアクセスできます。

{% set relatedEntries = entry.<FieldHandle> %}

これは、所定のフィールドで関連付けられたすべてのエントリを出力するよう定義されたエレメントクエリを提供します。

実例

関連付けられたすべてのエントリをループするには、all() を呼び出して、結果をループ処理します。

{% set relatedEntries = entry.<FieldHandle>.all() %}
{% if relatedEntries|length %}
    <ul>
        {% for rel in relatedEntries %}
            <li><a href="{{ rel.url }}">{{ rel.title }}</a></li>
        {% endfor %}
    </ul>
{% endif %}

関連付けられた最初のエントリだけが欲しい場合、代わりに one() を呼び出して、何かが返されていることを確認します。

{% set rel = entry.<FieldHandle>.one() %}
{% if rel %}
    <p><a href="{{ rel.url }}">{{ rel.title }}</a></p>
{% endif %}

(取得する必要はなく)いずれかの関連付けられたエントリがあるかを確認したい場合、exists() を呼び出すことができます。

{% if entry.<FieldHandle>.exists() %}
    <p>There are related entries!</p>
{% endif %}

エントリクエリでパラメータをセットすることもできます。例えば、news セクションに含まれるエントリだけを取得するには、sectionId パラメータをセットします。

{% set relatedEntries = entry.<FieldHandle>
    .section('news')
    .all() %}

関連項目