Comment utiliser la recette «Charger plus» de Sprig après la mise à jour

Nov 19 2020

Ceci est la suite d'une question précédente que j'avais (ici) . J'utilise Charger plus de recettes Sprig . Dans ma page de catégorie, je veux que la fonction de chargement plus ne tire que les entrées qui correspondent à la page de catégorie actuelle. Dans une mise à jour récente, la solution de catégorie qui était dans ma question précédente ne fonctionne plus, car elle a été un peu restructurée. Je n'arrive pas à comprendre comment faire fonctionner le relatedTo(category)à nouveau. Je l'ai actuellement configuré comme ceci (le {'relatedTo': category}ne fait rien):

_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 %}

Réponses

3 Oli Nov 19 2020 at 16:50

Le problème est que vous faites, .relatedTo(category)mais la variable que vous passez est appelée relatedTo, non category.

Tout comme avec limit, en fonction de votre code, cela devrait être .relatedTo(relatedTo). En outre, il doit faire partie du même hachage que votre fichier limit.

Cependant, vous ne pouvez pas passer un objet de catégorie à un composant et devrez le transmettre à la idplace ( docs ).

En fonction de ce qui categoryest dans votre cas (et je suppose que c'est un objet), vous pouvez faire:

{{ sprig('_components/load-more', {
    'limit': 6,
    'categoryId': category.id
}) }}

Puis dans votre composant:

{% 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 %}