function sayfa_numaralari ($yer, $toplam, $hane) {
if ($hane<10) {$hane=10;}
$isaretli=array(1=>true, $toplam=>true);
for ($i=$yer-2;$i<$yer+3;$i++) {
if ($i<1 || $i>$toplam) {continue;}
$isaretli[$i]=true;
}
$sol=$yer-4; if ($sol<1) {$sol=0;}
$sag=$toplam-$yer-3; if ($sag<1) {$sag=0;}
$kalan=$hane-count($isaretli);
$sol_a=($sol) ? $sol/($sol+$sag)*$kalan : 0;
$sag_a=($sag) ? $sag/($sol+$sag)*$kalan : 0;
if ($sol_a) {
$sol_a=($sol>$sag) ? floor($sol_a) : ceil($sol_a);
$sol_a=$sol/($sol_a+1);
$us=floor(log10($sol_a));
$yuvarla=(($sol_a/pow(10, $us))<5) ? pow(10, $us) : pow(10, $us+1);
for ($i=1;$i<$yer-2;$i+=$sol_a) {
$i=round($i/$yuvarla)*$yuvarla;
if ($i<1 || $i>$toplam) {continue;}
$isaretli[$i]=true;
}
}
if ($sag_a) {
$sag_a=($sol>$sag) ? ceil($sag_a) : floor($sag_a);
$sag_a=$sag/($sag_a+1);
$us=floor(log10($sag_a));
$yuvarla=(($sag_a/pow(10, $us))<5) ? pow(10, $us) : pow(10, $us+1);
for ($i=$yer+2;$i<$toplam;$i+=$sag_a) {
$i=round($i/$yuvarla)*$yuvarla;
if ($i<1 || $i>$toplam) {continue;}
$isaretli[$i]=true;
}
}
ksort($isaretli);
return array_keys($isaretli);
}
$yer= 3;
$sayfasayisi=100;
$gorsayfasayisi= 10;
?>
Op-Sayfalama Demo Sayfası
100 sayfalı bir sitede, 3. sayfanın sayfalama menüsü. $gorsayfasayisi: 15.
// BAGLANTI VERME
foreach (sayfa_numaralari($yer,$sayfasayisi,15) as $i) {
// BOYUTLANDIRMA
if ($i==$yer) {$class="aktif";
} elseif ($i==$yer-1 || $i==$yer +1) {$class="komsu";
} elseif ($i==$yer-2 || $i==$yer +2) {$class="komsu2";
} else {$class="diger";}
echo "
";
if ($class != "aktif") {
echo "" .$i ."";
} else {echo $i;}
echo " ";
}
?>
145 sayfalı bir sitede, 80. sayfanın sayfalama menüsü. $gorsayfasayisi: 15.
// BAGLANTI VERME
$yer= 80;
foreach (sayfa_numaralari($yer,$sayfasayisi, 15) as $i) {
// BOYUTLANDIRMA
if ($i==$yer) {$class="aktif";
} elseif ($i==$yer-1 || $i==$yer +1) {$class="komsu";
} elseif ($i==$yer-2 || $i==$yer +2) {$class="komsu2";
} else {$class="diger";}
echo "
";
if ($class != "aktif") {
echo "" .$i ."";
} else {echo $i;}
echo " ";
}
?>
45 sayfalı bir sitede, 20. sayfanın sayfalama menüsü. $gorsayfasayisi: 10.
$yer= 20;
$sayfasayisi=45;
// BAGLANTI VERME
foreach (sayfa_numaralari($yer,$sayfasayisi, 10) as $i) {
// BOYUTLANDIRMA
if ($i==$yer) {$class="aktif";
} elseif ($i==$yer-1 || $i==$yer +1) {$class="komsu";
} elseif ($i==$yer-2 || $i==$yer +2) {$class="komsu2";
} else {$class="diger";}
echo "
";
if ($class != "aktif") {
echo "" .$i ."";
} else {echo $i;}
echo " ";
}
?>