親が他のエントリーに関連する構造エントリーを見つける

私は指定された関係パラメータを満たすすべてのエントリのすべての子を選択したいと思います。

私はこれを試してみましたが、私は.isDescendantOfが単一エントリだけをサポートしていると思います。これも可能ですか?

{% set parents = craft.entries.section('training').level('1').relatedTo(relationParam) %}
{% set children= craft.entries.section('training').isDescendantOf(parents).eventDate('>= ' ~ now).order('startDate DESC') %}

おそらくまったく新しいアプローチが必要になるかもしれないので、これにもっと多くの背景を与えることが助けになると思った。
Craft CMSでこの設定を検討する ここに画像の説明を入力
私は2レベルの構造を持っています。トップレベルはイベントを記述する大きな行列で、複数のカテゴリが選択された大きな分類セクションがあります。次に、子供たちはそのイベントの特定のインスタンスで、それぞれの日付と場所を持ちます。

私はlvl1上ですでにそれを行っているので、lvl2の各エントリでクライアントにカテゴリ分類を繰り返させたくありません。

親が特定の関係パラメータを満たしているすべてのlvl2エントリを選択できますか?

ベストアンサー

はい、 descendantOf
paramは要素モデルの配列または要素IDの配列を受け入れないようです。この問題を回避するために、Twigでできることは次のとおりです。

このソリューションは、 relatedTo
条件に一致するすべての親エントリの追加クエリをトリガします。しかし、 ids
の列だけを取得しているので、実際にはあまりにも悪くないかもしれませんが、一致する親エントリの量にもよります。

{% set idsParam = [] %}
{% for parent in parents %}
    {% set idsParam = idsParam|merge(parent.getDescendants().ids()) %}
{% endfor %}

{% set children = craft.entries({
    section: 'training',
    ids: idsParam,
    eventDate: '>= ' ~ now|date('U'),
    order: 'startDate DESC',
}) %}

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です