Es bastante facil:
Código PHP:
Ver original// Paginas a mostrar en la barra
$maxpags = 6;
// Calculamos el inico restando la mitad de maxpags a la pagina actual
$inipag = $pagina - ceil($maxpags/2);
// Estamos al final de la lista? entonces hay que mostrar todos los enlaces disponibles
if($inipag > $total_paginas - $maxpags)
$inipag = $total_paginas - $maxpags;
// Recalculamos el inicio, si fuera necesario
if($inipag < 1)
$inipag = 1;
// Calculamos la pagina final
$finpag = $inipag + $maxpags;
// Solo verificamos que no estemos fuera de los limites
if($finpag > $total_paginas)
$finpag = $total_paginas;
// Por ultimo, solo modificas el for
for($i = $inipag; $i <= $finpag; $i++) {
// voila!!!
}