Скрипт для вывода списка страниц
Скрипт, который выборочно выводит список страниц (от 20 до 44 страниц), выбирая ближайшие к текущей, первые, последние и несколько промежуточных. Особенно полезен, если количество страниц превышает сотню.
/**
* Generate list of page
*
* @param $this_page
* @param $pages_count
*
* @return array <length: 20-44>
*/
$generate_pagination = function ($this_page, $pages_count) {
// init array
$pages_show = [];
// step 1: add nearest pages
$start_from_page = $this_page - 5;
$finish_at_page = $this_page + 5;
for ($i = $start_from_page; $i <= $finish_at_page; $i ++) {
$pages_show [$i] = $i;
$pages_show [$i * 5] = $i * 5;
$pages_show [$i * 20] = $i * 20;
$pages_show [ceil ($i / 5)] = ceil ($i / 5);
$pages_show [ceil ($i / 20)] = ceil ($i / 20);
}
// step 2: add limits pages
$pages_show [1] = 1;
$pages_show [10] = 10;
$pages_show [50] = 50;
$pages_show [$pages_count] = $pages_count;
$pages_show [$pages_count - 10] = $pages_count - 10;
$pages_show [$pages_count - 50] = $pages_count - 50;
// step 3: if pages not exist, clear them from array
foreach ($pages_show as $value)
if ($value < 1 or $value > $pages_count)
unset ($pages_show[$value]);
// sort result
sort ($pages_show);
return $pages_show;
};
Демонстрационный код:
$this_page = 256;
$pages_count = 2048;
$pages_show = $generate_pagination ($this_page, $pages_count);
foreach ($pages_show as $value)
echo "<a href=\"/publics/page/$value\">$value</a> ";
Поделиться в соцсетях:





Комментарии:
Подождите, пожалуйста. Загружаются комментарии...