Тема: functions.php paginate()
Изменил функцию paginate() из сборки PunBB.ru 1.2.15. Главной целью было добавить ссылки "Предыдущая" и "Следующая" для листания страниц - удобнейшая, на мой взгляд, вещь. Заодно баг исправил.
[li]Добавлены ссылки на предыдущую и следующую страницы многостраничных тем/форумов, работает совместно со "Все"[/li][li]Исправлена последовательность инициализации переменных, из-за которой в режиме "Все" номер последней страницы не выводился ссылкой[/li]
Думается, не только мне полезно будет.
function paginate($num_pages, $cur_page, $link_to)
{
/// MOD VIEW ALL PAGES IN ONE BEGIN
global $lang_common;
$active_all = true;
/// MOD VIEW ALL PAGES IN ONE END
$pages = array();
$link_to_all = false;
// If $cur_page > $num_pages, we show link to all pages
if ($cur_page > $num_pages)
{
$active_all = false;
$link_to_all = true;
$cur_page--;
}
// If $cur_page == -1, we link to all pages (used in viewforum.php)
if ($cur_page == -1)
{
$cur_page = 1;
$link_to_all = true;
}
if ($num_pages <= 1)
$pages = array('<strong>1</strong>');
else
{
if (!$link_to_all && $cur_page > 1)
$pages[] = '<a href="'.$link_to.'&p='.($cur_page-1).'"><strong>«</strong></a>';
if ($cur_page > 3)
{
$pages[] = '<a href="'.$link_to.'&p=1">1</a>';
if ($cur_page != 4)
$pages[] = '…';
}
// Don't ask me how the following works. It just does, OK? :-)
for ($current = $cur_page - 2, $stop = $cur_page + 3; $current < $stop; ++$current)
{
if ($current < 1 || $current > $num_pages)
continue;
else if ($current != $cur_page || $link_to_all)
$pages[] = '<a href="'.$link_to.'&p='.$current.'">'.$current.'</a>';
else
$pages[] = '<strong>'.$current.'</strong>';
}
if ($cur_page <= ($num_pages-3))
{
if ($cur_page != ($num_pages-3))
$pages[] = '…';
$pages[] = '<a href="'.$link_to.'&p='.$num_pages.'">'.$num_pages.'</a>';
}
/// MOD VIEW ALL PAGES IN ONE BEGIN
if (!$active_all) $pages[] = $lang_common['All'];
else $pages[] = '<a href='.$link_to.'&action=all>'.$lang_common['All'].'</a>';
/// MOD VIEW ALL PAGES IN ONE END
if (!$link_to_all && $cur_page < $num_pages)
$pages[] = '<a href="'.$link_to.'&p='.($cur_page+1).'"><strong>»</strong></a>';
}
return implode(' ', $pages);
}