mirror of https://github.com/avecms/AVE.cms.git
M@d D3n
5 years ago
4 changed files with 157 additions and 145 deletions
@ -1,141 +1,141 @@ |
|||||||
<?php |
<?php |
||||||
|
|
||||||
/** |
/** |
||||||
* AVE.cms |
* AVE.cms |
||||||
* |
* |
||||||
* @package AVE.cms |
* @package AVE.cms |
||||||
* @version 3.x |
* @version 3.x |
||||||
* @filesource |
* @filesource |
||||||
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru |
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru |
||||||
* |
* |
||||||
* @license GPL v.2 |
* @license GPL v.2 |
||||||
*/ |
*/ |
||||||
|
|
||||||
/** |
/** |
||||||
* Текущая страница |
* Текущая страница |
||||||
* |
* |
||||||
* @param string $type тип постраничной навигации, |
* @param string $type тип постраничной навигации, |
||||||
* допустимые значения: page, apage, artpage |
* допустимые значения: page, apage, artpage |
||||||
* @return int номер текущей страницы |
* @return int номер текущей страницы |
||||||
*/ |
*/ |
||||||
function get_current_page ($type = 'page') |
function get_current_page ($type = 'page') |
||||||
{ |
{ |
||||||
if (!in_array($type, array('page', 'apage', 'artpage'))) return 1; |
if (!in_array($type, array('page', 'apage', 'artpage'))) return 1; |
||||||
|
|
||||||
$page = (isset($_REQUEST[$type]) && is_numeric($_REQUEST[$type])) ? $_REQUEST[$type] : 1; |
$page = (isset($_REQUEST[$type]) && is_numeric($_REQUEST[$type])) ? $_REQUEST[$type] : 1; |
||||||
|
|
||||||
return (int)$page; |
return (int)$page; |
||||||
} |
} |
||||||
|
|
||||||
/** |
/** |
||||||
* Постраничная навигация для запросов и модулей |
* Постраничная навигация для запросов и модулей |
||||||
* |
* |
||||||
* @param int $total_pages количество страниц в документе |
* @param int $total_pages количество страниц в документе |
||||||
* @param string $type тип постраничной навигации, |
* @param string $type тип постраничной навигации, |
||||||
* допустимые значения: page, apage, artpage |
* допустимые значения: page, apage, artpage |
||||||
* @param string $template_label шаблон метки навигации |
* @param string $template_label шаблон метки навигации |
||||||
* @param string $navi_box контейнер постраничной навигации %s |
* @param string $navi_box контейнер постраничной навигации %s |
||||||
* @return string HTML-код постраничной навигации |
* @return string HTML-код постраничной навигации |
||||||
*/ |
*/ |
||||||
|
|
||||||
function get_pagination ($total_pages, $type, $template_label, $navi_box = '') |
function get_pagination ($total_pages, $type, $template_label, $navi_box = '') |
||||||
{ |
{ |
||||||
$nav = ''; |
$nav = ''; |
||||||
|
|
||||||
if (!in_array($type, array('page', 'apage', 'artpage'))) $type = 'page'; |
if (!in_array($type, array('page', 'apage', 'artpage'))) $type = 'page'; |
||||||
|
|
||||||
$curent_page = get_current_page($type); |
$curent_page = get_current_page($type); |
||||||
|
|
||||||
if ($curent_page == 1) $pages = array ($curent_page, $curent_page+1, $curent_page+2, $curent_page+3, $curent_page+4); |
if ($curent_page == 1) $pages = array ($curent_page, $curent_page+1, $curent_page+2, $curent_page+3, $curent_page+4); |
||||||
elseif ($curent_page == 2) $pages = array ($curent_page-1, $curent_page, $curent_page+1, $curent_page+2, $curent_page+3); |
elseif ($curent_page == 2) $pages = array ($curent_page-1, $curent_page, $curent_page+1, $curent_page+2, $curent_page+3); |
||||||
elseif ($curent_page+1 == $total_pages) $pages = array ($curent_page-3, $curent_page-2, $curent_page-1, $curent_page, $curent_page+1); |
elseif ($curent_page+1 == $total_pages) $pages = array ($curent_page-3, $curent_page-2, $curent_page-1, $curent_page, $curent_page+1); |
||||||
elseif ($curent_page == $total_pages) $pages = array ($curent_page-4, $curent_page-3, $curent_page-2, $curent_page-1, $curent_page); |
elseif ($curent_page == $total_pages) $pages = array ($curent_page-4, $curent_page-3, $curent_page-2, $curent_page-1, $curent_page); |
||||||
else $pages = array ($curent_page-2, $curent_page-1, $curent_page, $curent_page+1, $curent_page+2); |
else $pages = array ($curent_page-2, $curent_page-1, $curent_page, $curent_page+1, $curent_page+2); |
||||||
|
|
||||||
$pages = array_unique($pages); |
$pages = array_unique($pages); |
||||||
|
|
||||||
$link_box = trim(get_settings('link_box')); // Контенйнер для ссылок %s |
$link_box = trim(get_settings('link_box')); // Контенйнер для ссылок %s |
||||||
$separator_box = trim(get_settings('separator_box')); // Контенйнер для метки о наличии страниц кроме видимых %s |
$separator_box = trim(get_settings('separator_box')); // Контенйнер для метки о наличии страниц кроме видимых %s |
||||||
$total_box = trim(get_settings('total_box')); // Контенйнер для Страница ХХХ из ХХХ %s |
$total_box = trim(get_settings('total_box')); // Контенйнер для Страница ХХХ из ХХХ %s |
||||||
$active_box = trim(get_settings('active_box')); // Контенйнер для активного элемента %s |
$active_box = trim(get_settings('active_box')); // Контенйнер для активного элемента %s |
||||||
$total_label = trim(get_settings('total_label')); // Текст перед номерами страниц %d |
$total_label = trim(get_settings('total_label')); // Текст перед номерами страниц %d |
||||||
$start_label = trim(get_settings('start_label')); // Текст ссылки "Первая" |
$start_label = trim(get_settings('start_label')); // Текст ссылки "Первая" |
||||||
$end_label = trim(get_settings('end_label')); // Текст ссылки "Последняя" |
$end_label = trim(get_settings('end_label')); // Текст ссылки "Последняя" |
||||||
$separator_label = trim(get_settings('separator_label')); // Текст метки о наличии страниц кроме видимых |
$separator_label = trim(get_settings('separator_label')); // Текст метки о наличии страниц кроме видимых |
||||||
$next_label = trim(get_settings('next_label')); // Текст ссылки "Следующая" |
$next_label = trim(get_settings('next_label')); // Текст ссылки "Следующая" |
||||||
$prev_label = trim(get_settings('prev_label')); // Текст ссылки "Предыдущая" |
$prev_label = trim(get_settings('prev_label')); // Текст ссылки "Предыдущая" |
||||||
|
|
||||||
// Первая |
// Первая |
||||||
if ($total_pages > 5 && $curent_page > 3) |
if ($total_pages > 5 && $curent_page > 3) |
||||||
{ |
{ |
||||||
$first = str_replace('data-pagination="{s}"', 'data-pagination="1"', $template_label); |
$first = str_replace('data-pagination="{s}"', 'data-pagination="1"', $template_label); |
||||||
|
|
||||||
$nav .= sprintf($link_box, str_replace(array('{s}', '{t}'), $start_label, str_replace(array('&'. $type .'={s}', '&' . $type .'={s}', '/' . $type . '-{s}'), '', $first))); |
$nav .= sprintf($link_box, str_replace(array('{s}', '{t}'), $start_label, str_replace(array('&'. $type .'={s}', '&' . $type .'={s}', '/' . $type . '-{s}'), '', $first))); |
||||||
if ($separator_label != '') |
if ($separator_label != '') |
||||||
$nav .= sprintf($separator_box, $separator_label); |
$nav .= sprintf($separator_box, $separator_label); |
||||||
} |
} |
||||||
|
|
||||||
// Предыдущая |
// Предыдущая |
||||||
if ($curent_page > 1) |
if ($curent_page > 1) |
||||||
{ |
{ |
||||||
if ($curent_page - 1 == 1) |
if ($curent_page - 1 == 1) |
||||||
$nav .= sprintf($link_box, str_replace(array('{s}', '{t}'), $prev_label, str_replace(array('&'. $type .'={s}', '&' . $type .'={s}', '/' . $type . '-{s}'), '', $template_label))); |
$nav .= sprintf($link_box, str_replace(array('{s}', '{t}'), $prev_label, str_replace(array('&'. $type .'={s}', '&' . $type .'={s}', '/' . $type . '-{s}'), '', $template_label))); |
||||||
else |
else |
||||||
$nav .= sprintf($link_box, str_replace('{t}', $prev_label, str_replace('{s}', ($curent_page - 1), $template_label))); |
$nav .= sprintf($link_box, str_replace('{t}', $prev_label, str_replace('{s}', ($curent_page - 1), $template_label))); |
||||||
} |
} |
||||||
|
|
||||||
foreach($pages as $val) |
foreach($pages as $val) |
||||||
{ |
{ |
||||||
if ($val >= 1 && $val <= $total_pages) |
if ($val >= 1 && $val <= $total_pages) |
||||||
{ |
{ |
||||||
if ($curent_page == $val) |
if ($curent_page == $val) |
||||||
{ |
{ |
||||||
// Текущий номер страницы (активная страница) |
// Текущий номер страницы (активная страница) |
||||||
$nav .= sprintf($link_box, sprintf($active_box, str_replace(array('{s}', '{t}'), $val, $curent_page))); |
$nav .= sprintf($link_box, sprintf($active_box, str_replace(array('{s}', '{t}'), $val, $curent_page))); |
||||||
} |
} |
||||||
else |
else |
||||||
{ |
{ |
||||||
if ($val == 1) |
if ($val == 1) |
||||||
{ |
{ |
||||||
// Страница номер 1 |
// Страница номер 1 |
||||||
$nav .= sprintf($link_box, str_replace(array('{s}', '{t}'), $val, str_replace(array('&'.$type.'={s}','&'.$type.'={s}','/'.$type.'-{s}'), '', $template_label))); |
$nav .= sprintf($link_box, str_replace(array('{s}', '{t}'), $val, str_replace(array('&'.$type.'={s}','&'.$type.'={s}','/'.$type.'-{s}'), '', $template_label))); |
||||||
} |
} |
||||||
else |
else |
||||||
{ |
{ |
||||||
// Остальные неактивные номера страниц |
// Остальные неактивные номера страниц |
||||||
$nav .= sprintf($link_box, str_replace(array('{s}', '{t}'), $val, $template_label)); |
$nav .= sprintf($link_box, str_replace(array('{s}', '{t}'), $val, $template_label)); |
||||||
} |
} |
||||||
} |
} |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
// Следующая |
// Следующая |
||||||
if ($curent_page < $total_pages) |
if ($curent_page < $total_pages) |
||||||
{ |
{ |
||||||
$nav .= sprintf($link_box, str_replace('{t}', $next_label, str_replace('{s}', ($curent_page + 1), $template_label))); |
$nav .= sprintf($link_box, str_replace('{t}', $next_label, str_replace('{s}', ($curent_page + 1), $template_label))); |
||||||
} |
} |
||||||
|
|
||||||
// Последняя |
// Последняя |
||||||
if ($total_pages > 5 && ($curent_page < $total_pages-2)) |
if ($total_pages > 5 && ($curent_page < $total_pages-2)) |
||||||
{ |
{ |
||||||
if ($separator_label != '') |
if ($separator_label != '') |
||||||
$nav .= sprintf($separator_box, $separator_label); |
$nav .= sprintf($separator_box, $separator_label); |
||||||
|
|
||||||
$nav .= sprintf($link_box, str_replace('{t}', $end_label, str_replace('{s}', $total_pages, $template_label))); |
$nav .= sprintf($link_box, str_replace('{t}', $end_label, str_replace('{s}', $total_pages, $template_label))); |
||||||
} |
} |
||||||
|
|
||||||
// Страница ХХХ из ХХХ |
// Страница ХХХ из ХХХ |
||||||
if ($nav != '') |
if ($nav != '') |
||||||
{ |
{ |
||||||
if ($total_label != '') |
if ($total_label != '') |
||||||
$nav = sprintf($total_box, sprintf($total_label, $curent_page, $total_pages)) . $nav; |
$nav = sprintf($total_box, sprintf($total_label, $curent_page, $total_pages)) . $nav; |
||||||
|
|
||||||
// Оборачиваем в общий контейнер |
// Оборачиваем в общий контейнер |
||||||
if ($navi_box != '') |
if ($navi_box != '') |
||||||
$nav = sprintf($navi_box, $nav); |
$nav = sprintf($navi_box, $nav); |
||||||
} |
} |
||||||
|
|
||||||
return $nav; |
return $nav; |
||||||
} |
} |
||||||
|
|
||||||
?> |
?> |
Loading…
Reference in new issue