Criando Links de Paginação Dinâmica - Simplificando a Navegação para os Usuários

Os links de paginação são essenciais para melhorar a navegação em aplicações que exibem listas de itens, como fóruns ou galerias. Criar uma experiência de paginação fluída ajuda os usuários a transitarem entre as páginas sem confusão. Neste post do blog, exploraremos o problema de gerar esses links de paginação dinâmicos e forneceremos uma solução robusta.

Ao projetar um sistema para exibir conteúdo em várias páginas, surge uma pergunta central: Como geramos os links que permitem aos usuários navegar entre essas páginas de forma eficaz?

Por exemplo, quando um usuário está na página 7 de 593, como os links de paginação devem ser construídos? Um layout comum pode parecer com:

1 ... 5 6 7 ... 593

No layout acima, os usuários podem ver a primeira página (1), a página atual (7) e a última página (593), juntamente com as páginas adjacentes (5 e 6). Esse formato mantém a navegação concisa e amigável ao usuário.

Abaixo está uma abordagem estruturada para criar links de paginação dinâmicos. Primeiro, destacaremos as características a serem consideradas no algoritmo e, em seguida, forneceremos um pseudo-código para ilustrar como implementá-lo.

Características Chave do Algoritmo de Paginação

  1. Exibir um link para a página anterior (Prev) se o usuário não estiver na primeira página.
  2. Sempre exibir o número da primeira página.
  3. Mostrar o número da página atual.
  4. Incluir a página anterior e a seguinte à página atual.
  5. Exibir o número da última página.
  6. Mostrar um link para a próxima página (Next) se o usuário não estiver na última página.

O algoritmo inicial é um bom ponto de partida. Vamos verificar vários casos extremos e refinar a abordagem com base nessas circunstâncias.

function printPageLinksFirstTry(num totalPages, num currentPage)
  if (currentPage > 1)
    print "Prev"
  print "1"
  print "..."
  print currentPage - 1
  print currentPage
  print currentPage + 1
  print "..."
  print totalPages
  if (currentPage < totalPages)
    print "Next"
endFunction

Lidando com Casos Extremos: Refinando a Lógica

Precisamos considerar quando a página atual está próxima das extremidades do intervalo. Para isso, podemos modificar a função anterior:

function printPageLinksHandleCloseToEnds(num totalPages, num currentPage)
  if (currentPage > 1)
    print "Prev"
  print "1"
  if (currentPage > 2)
    print "..."
  if (currentPage > 2)
    print currentPage - 1
  print currentPage
  if (currentPage < totalPages - 1)
    print currentPage + 1
    print "..."
  print totalPages
  if (currentPage < totalPages)
    print "Next"
endFunction

Limpeza: Otimizando o Código

À medida que refinamos, podemos reduzir a redundância no código:

function printPageLinksCleanedUp(num totalPages, num currentPage)
  if (currentPage > 1)
    print "Prev"
  print "1"
  if (currentPage > 2)
    print "..."
    print currentPage - 1
  print currentPage
  if (currentPage < totalPages - 1)
    print currentPage + 1
    print "..."
  print totalPages
  if (currentPage < totalPages)
    print "Next"
endFunction

Ajustes Finais: Acomodando Todos os Cenários

Finalmente, vamos garantir que tudo funcione corretamente mesmo quando há apenas algumas páginas:

function printPageLinksFinal(num totalPages, num currentPage)
  if (totalPages == 1)
    return

  if (currentPage > 1)
    print "Prev"

  print "1"

  if (currentPage > 2)
    print "..."
    print currentPage - 1

  if (currentPage != 1 and currentPage != totalPages)
    print currentPage

  if (currentPage < totalPages - 1)
    print currentPage + 1
    print "..."

  print totalPages

  if (currentPage < totalPages)
    print "Next"
endFunction

Conclusão

Seguindo os passos descritos acima, você pode implementar um algoritmo robusto para gerar links de paginação dinâmicos que melhorarão significativamente a navegação do usuário em seu site. A implementação de tal algoritmo permite que os usuários transitem pelo conteúdo de forma fluida, garantindo uma experiência de navegação muito mais agradável.

Esperamos que este guia capacite você a criar links de paginação eficazes em sua aplicação!