Blocco di paginazione con Smarty e PHP

  • Verifica se è necessaria la paginazione
  • Mostra il link precedente se applicabile
  • Cicla attraverso le pagine per mostrare i numeri
  • Aggiungi puntini di sospensione per le pagine saltate
  • Mostra il link successivo se applicabile
HTML
<div class="row">
  {if isset($pages) && $pages>1}
    <nav style=" text-align: center; ">
      <ul class="pagination">
        {if ((int)$page+1)-1 > 0}<li class="page-item"><a class="page-link" href="?pagina={$page-1}">← <span>Precedente</span></a></li>{/if}

        {assign var="foo" value=1}
        {for $foo=max(1, $page-5) to min($pages, $page+5)}
          <li class="page-item {if ($foo-1)==(int)$page}active{/if}"><a class="page-link" href="?pagina={$foo-1}">{$foo}</a></li>
        {/for}

        {if $foo<($pages)}
          <li class="page-item"><a class="page-link disabled" href="#">...</a></li>
          <li class="page-item"><a class="page-link" href="?pagina={$pages-1}">{$pages}</a></li>
        {/if}

        {if ((int)$page+1)+1 <= $pages}<li class="page-item"><a class="page-link" href="?pagina={(int)$page+1}"><span>Successivo</span> → </a></li>{/if}
      </ul>
    </nav>
  {/if}
</div>