itaeng

Ma quei link che si usano per la paginazione dei risultati, tipo su google... come li posso ricreare?

Leggendo qua e la mi sono imbattuto in una richiesta di qualcuno che aveva necessità di creare questo genere di link, ma cercando su internet non riusciva a trovare nulla di interessante...

Visto che tempo fa ho dovuto creare qualcosa di simile per DelightCMS (che poi è anche la piattaforma che sta sotto la pagina che state leggendo), lo riporto qua sperando possa essere utile a qualcuno:

<?php
// $numChildren è il numero di record totali, quelli che vogliamo suddividere in più pagine 
// $baseLink è l'indirizzo assoluto della pagina
$blogPostPerPage = 25;
$pageCount = ceil($numChildren / $blogPostPerPage);
$jump = false;

echo "<div id='paginator'>";

	// inseriamo prima di tutto il bottone per tornare indietro di una pagina, se siamo dalla seconda in poi
	if ($pageNum > 1) {
		echo $html->link('<< ', $baseLink . ($pageNum-1));
	}

	// qua inizia il lavoro sporco
	if ($pageCount > 1) {
		for ($i = 1; $i <= $pageCount; $i++) {
		// visualizzo i 7 link delle pagine intorno al numero di pagina che sto visualizzando, più il primo e l'ultimo (ok è una spiegazione di merda ma se provi capisci cosa intendo)
			if (($i <= $pageNum + 7) and ($i >= $pageNum - 7) or ($i == 1) or ($i == $pageCount)) {
				if ($pageNum == $i) {
					echo $i;
				} else {
					echo $html->link($i, $baseLink . $i);
				}
				$jump = false;
			// non sono nelle condizioni che dicevo prima, quindi metto i puntini e non visualizzo la pagina finchè non si verifica una delle condizioni di cui sopra
			} else {
				if ($jump != true) {
					echo "...";
					$jump = true;
				}
			}
			echo " ";
		}

		// se non sono all'ultima pagina, visualizzo il link per tornare indietro di una
		if ($pageNum < $pageCount) {
			echo $html->link('>>', $baseLink . ($pageNum+1));
		}
	}

echo "</div>";
?>