{% set current_page = pagination.current %} {% set total_pages = pagination.pages|length %} {% set max_visible = 6 %} {% set half_visible = (max_visible / 2)|round(0, 'floor') %} {# Calcular el rango de páginas a mostrar #} {% set start_page = max(1, current_page - half_visible) %} {% set end_page = min(total_pages, start_page + max_visible - 1) %} {# Ajustar el inicio si estamos cerca del final #} {% if end_page - start_page < max_visible - 1 %} {% set start_page = max(1, end_page - max_visible + 1) %} {% endif %} {% for page in pagination.pages %} {% set page_number = loop.index %} {# Mostrar siempre la primera página #} {% if page_number == 1 %} {% if page.link %}
  • {{ page.title }}
  • {% else %}
  • {{ page.title }}
  • {% endif %} {# Añadir puntos suspensivos si es necesario #} {% if start_page > 2 %}
  • ...
  • {% endif %} {# Mostrar páginas en el rango #} {% elseif page_number >= start_page and page_number <= end_page and page_number != 1 and page_number != total_pages %} {% if page.link %}
  • {{ page.title }}
  • {% else %}
  • {{ page.title }}
  • {% endif %} {# Mostrar siempre la última página #} {% elseif page_number == total_pages %} {# Añadir puntos suspensivos si es necesario #} {% if end_page < total_pages - 1 %}
  • ...
  • {% endif %} {% if page.link %}
  • {{ page.title }}
  • {% else %}
  • {{ page.title }}
  • {% endif %} {% endif %} {% endfor %}