Jak korzystać z przepisu Sprig „Załaduj więcej” po aktualizacji
To jest kontynuacja poprzedniego pytania, które zadałem (tutaj) . Używam przepisu Sprig's Load More . Na mojej stronie kategorii chcę, aby funkcja load more pobierała tylko wpisy, które są równe bieżącej stronie kategorii. W ostatniej aktualizacji rozwiązanie dotyczące kategorii, które było w moim poprzednim pytaniu, już nie działa, ponieważ zostało nieco zmienione. Nie mogę dowiedzieć się, jak ponownie zacząć relatedTo(category)
działać. Obecnie mam to skonfigurowane w ten sposób ( {'relatedTo': category}
nic nie robi):
_category.twig
{{ sprig('_layouts/_blog/_categories/_loadMore', {'limit': 6},{'relatedTo': category}) }}
{{ sprig.script }}
_loadMore.twig
{% set offset = offset ?? 0 %}
{% set entries = craft.entries.section('caseFiles').offset(offset).limit(limit).relatedTo(category).all() %}
{% for entry in entries %}
------Entry Content-----
{% endfor %}
{% if entries %}
{# Increments `offset` by the value of `limit` and swaps itself out on click #}
<button class="orange-button" sprig s-vars="offset: {{ offset + limit }}"
s-target="this" s-swap="outerHTML">
<p>Load More</p>
</button>
{% endif %}
Odpowiedzi
Problem polega na tym, że robisz, .relatedTo(category)
ale zmienna, którą przekazujesz, jest wywoływana relatedTo
, nie category
.
Tak jak w przypadku limit
, w oparciu o twój kod, powinno być .relatedTo(relatedTo)
. Powinien też być częścią tego samego skrótu, co Twój limit
.
Nie możesz jednak przekazać obiektu kategorii do komponentu i id
zamiast tego będziesz musiał przekazać jego ( dokumenty ).
W zależności od tego, co category
jest w twoim przypadku (i myślę, że jest to obiekt), możesz zrobić:
{{ sprig('_components/load-more', {
'limit': 6,
'categoryId': category.id
}) }}
Następnie w swoim komponencie:
{% set offset = offset ?? 0 %}
{% set query = craft.entries().section('caseFiles').offset(offset).limit(limit) %}
{# Make sure a categoryId is being passed #}
{% if categoryId %}
{% set query = query.relatedTo(categoryId) %}
{% endif %}
{% set entries = query.all() %}
{% for entry in entries %}
------Entry Content-----
{% endfor %}
{% if entries %}
{# Increments `offset` by the value of `limit` and swaps itself out on click #}
<button class="orange-button" sprig s-vars="offset: {{ offset + limit }}"
s-target="this" s-swap="outerHTML">
<p>Load More</p>
</button>
{% endif %}