Jak korzystać z przepisu Sprig „Załaduj więcej” po aktualizacji

Nov 19 2020

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

3 Oli Nov 19 2020 at 16:50

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 idzamiast tego będziesz musiał przekazać jego ( dokumenty ).

W zależności od tego, co categoryjest 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 %}