Скрипт для вывода списка страниц

Скрипт, который выборочно выводит список страниц (от 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> ";

Поделиться в соцсетях: Вконтакте Facebook Twitter Mail.ru Google plus
Комментарии:
Подождите, пожалуйста. Загружаются комментарии...