ブロックの最も最近のインスタンスがYフィールドにXを含み、次にZを含む場合

私はページ上の行列フィールドのブロックをループしています。そのループ内の複数の異なるブロック(すべてが異なるブロック型である可能性があります)では、ifブロックを特定のブロックタイプ(「referenceBlockType」)と呼びますxをyフィールドに入力し、次にzを入力します。最も最近のインスタンスでは、if文を含むブロックの位置に対するreferenceBlockTypeの最も近い前のインスタンスを意味することに注意してください。

referenceBlockTypeはループ内に複数回現れ、必ずしもそれを参照しているブロックの直接の兄弟であるとは限りません。また、常にループの最初または最後のフィールドでもありません。

どうすればいい?ありがとう!

ベストアンサー

私の答えは、比較したい行列モジュールが1つしかないという前提に基づいています。そうでなければ、キーを
block.getType()。handle
として配列に格納しなければなりません。複数の変数を作成する必要があります。

ブロックハンドルが一致する場合は、フィールドの値を格納する変数を作成する必要があります。したがって、ハンドルが等しいかどうかをチェックして比較します

{% set latestBlockValue = null %}
{% for block in entry.matrix %}
    {% if block.getType().handle == 'referenceBlockType' %}
        {% if latestBlockValue is not null and latestBlockValue == x %}
            {# z #}
        {% endif %}
        {% set latestBlockValue = block.y %}
    {% endif %}
{% endfor %}

返信を残す

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