I have the following code that works with Sprig. But with the new andRelatedTo param, I am wondering if this could be simplified? However, I am a little unsure if/where to start on this and how the new andRelatedTo would replace existing code.
Can anyone steer me in the right direction?
{% set defaultLimit = 35 %} {% set search = search ?? '' %} {% set sort = sort ?? 'title ASC' %} {% set limit = limit ?? craft.app.request.queryParam('limit') ?? defaultLimit %} {% set page = page ?? 1 %} {% set category = craft.categories.id(_categoryId).one() %} {# {% set alllowedEntryTypeHandles = ['sponsored', 'free'] %} #} {% set limitOptions = [2, 5, 10, 25, 35, 50, 100, 'All'] %} {% set limit = limit in limitOptions ? limit : defaultLimit %} {% set params = { limit:limit, page: page, } %} {% set relatedParams = ['and'] %} {% set relatedParams = relatedParams|merge([]) %} {% set filterIds = '' %} {% set pcdQueryString = null %} {% set cbQueryString = null %} {% set finishQueryString = null %} {% if craft.app.request.queryParam('pcd') %} {% set pcdQueryString = craft.app.request.queryParam('pcd') | join(',') %} {% set filterIds = filterIds ~ ',' ~ pcdQueryString|join(',') %} {% set relatedParams = relatedParams|merge([pcdQueryString]) %} {% set params = params|merge({pcd:pcdQueryString}) %} {% endif %} {% if craft.app.request.queryParam('cb') %} {% set cbQueryString = craft.app.request.queryParam('cb') | join(',') %} {% set filterIds = filterIds ~ ',' ~ cbQueryString|join(',') %} {% set relatedParams = relatedParams|merge([cbQueryString]) %} {% set params = params|merge({cb:cbQueryString}) %} {% endif %} {% if craft.app.request.queryParam('finish') %} {% set finishQueryString = craft.app.request.queryParam('finish') | join(',') %} {% set filterIds = filterIds ~ ',' ~ finishQueryString|join(',') %} {% set relatedParams = relatedParams|merge([finishQueryString]) %} {% set params = params|merge({finish:finishQueryString}) %} {% endif %} {# SAERCH #} {% if craft.app.request.queryParam('search') %} {% set params = params|merge({search:search}) %} {% endif %} {% set filterTags = craft.entries .id(filterIds) .orderBy('title ASC') .all() %} {% set allProductsQuery = craft.products .relatedTo(category) .all() %} {% set productsQuery = craft.products .search(search) .with( [ 'department', 'productImage', 'finish', 'pcd', 'variants', 'thread', 'seat', 'hexHead' ]) .orderBy(sort) .limit(limit) .relatedTo(relatedParams) %} {% do sprig.pushUrl('?' ~ params|url_encode) %}