Matrixブロックを将来の日付にフィルターする


2

日付フィールドを含むMatrixブロックで将来の日付をフィルタリングするのに苦労しています。

マトリックス行の値が今日であるかどうかの条件チェックの結果として「オープン」または「クローズ」を表示したいのですが、マトリックスブロックの将来の日付に対してのみ条件を実行したいと思います。過去の日付は無視してください。

これまでに見たすべての例で、検索ロジックはエントリレベルで宣言されていますが、これはマトリックスブロックであり、2つを接続することができません。

私のコード...

{% set closed = craft.block('closedDates')
    .type('closedDate')
    .date('>=' ~ today)
    .all() %}
{% for block in entry.closedDates.all() %}
    {% if today == closed %}
        <p><strong>Closed</strong></p>
    {% else %}
        <p>Open</p>
    {% endif %}
{% endfor %}```

The (matrix) field = closedDates, the block type = closedDate, the field = date.

I prefer a matrix field so I have only 1 entry.

Would appreciate any suggestions.
2

Thanks Marten, yes, that's correct.

After plugging away I have gotten it to work, but it's likely not as efficient as it could be...

{% set today = now|date('Y-m-d') %}
{% set todayday = now|date('l') %}
{% for block in entry.closedDates.date('>=' ~ today).limit(1) %}
    {% set closedDate = block.date.format('Y-m-d') %}
    {% if closedDate == today %}
        <p><strong>It's a holiday, sorry, we're closed</strong></p>
    {% elseif todayday == 'Sunday' %}
        <p><strong>It's {{ todayday }}, sorry, we're closed</strong></p>
    {% else %}
        <p>We're Open!</p>
    {% endif %}
{% endfor %}

I added a check for whether today is Sunday, which is a normally closed day that would not be in the entry.

Doug