{% block element_shop_directory %}
{% set searchResult = element.data.listing %}
{% set currentPage = ((searchResult.criteria.offset + 1) / searchResult.criteria.limit )|round(0, 'ceil') %}
{% set limit = searchResult.criteria.limit %}
{% set paginationConfig = {
page: currentPage,
totalPages: (searchResult.total / limit)|round(0, 'ceil'),
initialPage: currentPage,
originalPage: 1
} %}
{% set slot = cmsPage.firstElementOfType('shop-directory') %}
{% set filterUrl = null %}
{% set dataUrl = null %}
{% if searchResult.currentFilters.navigationId %}
{% set filterUrl = url('frontend.cms.navigation.filter', { navigationId: searchResult.currentFilters.navigationId }) %}
{% set dataUrl = url('frontend.cms.navigation.page', { navigationId: searchResult.currentFilters.navigationId }) %}
{% endif %}
{% set params = {
slotId: slot.id,
'no-aggregations': 1
} %}
{% set listingPagination = {
sidebar: null,
params: params,
dataUrl: dataUrl,
filterUrl: filterUrl,
disableEmptyFilter: disableEmptyFilter,
snippets: {
resetAllButtonText: 'listing.filterPanelResetAll'|trans|sw_sanitize
}
} %}
{% set hasPagination = element.config['hasPagination']['value'] %}
<div class="cms-element-shop-directory cms-element-product-listing-wrapper"
data-listing="true"
data-listing-options='{{ listingPagination|json_encode }}'
data-listing-pagination-options='{{ paginationConfig|json_encode }}'
{% if not hasPagination %}
data-listing-infinite-scroll="true"
{% endif %}
{% if hasPagination %}
data-listing-pagination="true"
{% endif %}
>
{% set shops = element.data.listing.elements %}
<div class="cms-element-shop-directory__wrapper cms-element-product-listing{% if not hasPagination %} is-infinite-scroll{% endif %}">
<div class="cms-listing-row js-listing-wrapper">
{% if shops %}
{% for shop in shops %}
<div class="cms-element-shop-directory__item">
{% sw_include '@DvdwDirectory/storefront/component/shops/webshop.html.twig' with {
product: shop
} %}
</div>
{% endfor %}
{% endif %}
</div>
<div>
{#
Fix pagination and disable infinite scroll
+ use shopware default pagination instead of custom element:
'@DvdwDirectory/storefront/component/listing/pagination/pagination.html.twig'
#}
{# {% if hasPagination %} #}
{% sw_include '@Storefront/storefront/component/pagination.html.twig' with {
entities: searchResult,
criteria: searchResult.criteria,
paginationConfig: paginationConfig,
pageOriginal: pageOriginal
} %}
{# {% else %}
<p>No pagination available.</p>
{% endif %} #}
</div>
</div>
{# {% if not hasPagination %}
{% block element_product_listing_loading_indicator %}
{% sw_include '@DvdwDirectory/storefront/component/listing/loading-indicator.html.twig' %}
{% endblock %}
{% endif %} #}
<div class="empty-container-indicator">
{% block element_product_listing_col_empty_alert %}
{% sw_include '@Storefront/storefront/utilities/alert.html.twig' with {
type: 'info',
content: 'listing.emptyResultMessage'|trans|sw_sanitize
} %}
{% endblock %}
</div>
</div>
{% endblock %}