{% if pagination is defined and pagination.totalPages > 1 %} {% if pagination.page > 1 %} {% endif %} {% set currentPage = pagination.page %} {% set totalPages = pagination.totalPages %} {% set delta = 2 %} {% set showFirst = currentPage > delta + 2 %} {% set showLast = currentPage < totalPages - delta - 1 %} {% set rangeStart = max(1, currentPage - delta) %} {% set rangeEnd = min(totalPages, currentPage + delta) %} {# Première page si nécessaire #} {% if showFirst %} {% if currentPage > delta + 3 %} ... {% endif %} {% endif %} {# Pages autour de la page actuelle #} {% for page in rangeStart..rangeEnd %} {% if page == currentPage %} {% else %} {% endif %} {% endfor %} {# Dernière page si nécessaire #} {% if showLast %} {% if currentPage < totalPages - delta - 2 %} ... {% endif %} {% endif %} {% if pagination.page < pagination.totalPages %} {% endif %} {% endif %}