업데이트 후 Sprig의 "Load More"레시피를 사용하는 방법

Nov 19 2020

이것은 내가 (여기) 했던 이전 질문의 연속입니다 . 내가 사용하고 장식의 Load 더 레시피 . 내 카테고리 페이지에서 더로드 기능이 현재 카테고리 페이지와 동일한 항목 만 표시하도록하고 싶습니다. 최근 업데이트에서 이전 질문에 있던 범주 솔루션이 약간 재구성되었으므로 더 이상 작동하지 않습니다. 어떻게 relatedTo(category)다시 작동 하는지 알 수 없습니다 . 현재 다음과 같이 설정되어 있습니다 ( {'relatedTo': category}아무것도하지 않음).

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

답변

3 Oli Nov 19 2020 at 16:50

문제는 수행하고 .relatedTo(category)있지만 전달하는 변수가 호출되는 relatedTo것이 아니라 호출 된다는 것 category입니다.

와 마찬가지로 limit코드에 따라 .relatedTo(relatedTo). 또한 .NET Framework와 동일한 해시의 일부 여야합니다 limit.

그러나 카테고리 객체를 컴포넌트에 전달할 수 없으며 id대신 전달해야합니다 ( docs ).

category귀하의 경우 에 따라 (그리고 그것이 객체라고 생각합니다) 다음과 같이 할 수 있습니다.

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

그런 다음 구성 요소에서 :

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