{% if include.maxPages %} {% assign maxPages = include.maxPages %} {% else %} {% assign maxPages = 5 %} {% endif %} {% assign halfPages = maxPages | divided_by: 2 %} {% assign right-margin = paginator.total_pages | minus: paginator.page %} {% if paginator.page <= halfPages %} {% assign start = 1 %} {% if paginator.total_pages > maxPages %} {% assign end = maxPages %} {% else %} {% assign end = paginator.total_pages %} {% endif %} {% elsif right-margin <= halfPages %} {% assign start = paginator.total_pages | minus: maxPages | plus: 1 | append: ',' | append: 1 | split: ',' | sort | last | plus: 0 %} {% assign end = paginator.total_pages %} {% else %} {% assign position-less-half = paginator.page | minus: halfPages %} {% if position-less-half < 1 %} {% assign start = 1 %} {% else %} {% assign start = position-less-half %} {% endif %} {% assign position-plus-half = paginator.page | plus: halfPages %} {% if position-plus-half > paginator.total_pages %} {% assign end = paginator.total_pages %} {% else %} {% assign end = position-plus-half %} {% endif %} {% endif %} {% if paginator.previous_page %} {% else %} {% endif %} {% if paginator.previous_page %} {% else %} {% endif %} {% if start > 1 %} {% endif %} {% for num in (start..end)%} {% if num == paginator.page %} {{ num }} {% elsif num == 1 %} {{ num }} {% else %} {{ num }} {% endif %} {% unless forloop.last %} {% endunless %} {% endfor %} {% if end < paginator.total_pages %} {% endif %} {% if paginator.next_page %} {% else %} {% endif %} {% if paginator.next_page %} {% else %} {% endif %}