Сам блок с пагинацией находится ниже других блоков, вывести его в первый раз не сложно, добавив в ссылку хэштег #blabla
Но при переходе по страницам, в браузере прыгаем вверх, что не есть хорошо, каждый раз приходится листать вниз.
Ну и вытекающий вопрос, как добавить хэштег при использовании функции generate_pagination?
PS Не в тот раздел, сорри, прошу перенести Для авторов (phpBB 3.0.x)
Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.
Хэштег в функции generate_pagination
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ).
-
- phpBB 2.0.1
- Сообщения: 252
- Стаж: 16 лет 6 месяцев
- Благодарил (а): 10 раз
- Поблагодарили: 26 раз
- Контактная информация:
Хэштег в функции generate_pagination
WORK: phpBB3 3.0.8 + Portal XL 5.0 + MODs + Custom,
PHP Version 5.3.3-7+squeeze25, Apache/2.2.9 (Debian), MySQL(i) 5.1.73-1+deb6u1-log
PHP Version 5.3.3-7+squeeze25, Apache/2.2.9 (Debian), MySQL(i) 5.1.73-1+deb6u1-log
- xisp
- phpBB 3.0.0 RC7
- Сообщения: 1798
- Стаж: 11 лет 10 месяцев
- Благодарил (а): 152 раза
- Поблагодарили: 215 раз
- Забанен: Бессрочно
Re: Хэштег в функции generate_pagination
Пагинация внизу, но когда жмёшь на какую- либо страницу, браузер показывает новую страницу с начала, сверху. А ему хочется, чтобы страница отобразилась снизу.rxu писал(а):Изложите вопрос яснее, ничего не понял.
Странное желание, если честно. Придётся мотать страницу вверх, чтобы читать сообщения подряд.
phpBBex
- rxu
- phpBB Guru
- Сообщения: 16313
- Стаж: 17 лет 10 месяцев
- Откуда: Красноярск
- Благодарил (а): 533 раза
- Поблагодарили: 2119 раз
- Контактная информация:
Re: Хэштег в функции generate_pagination
Она и сверху, и снизу.xisp писал(а):Пагинация внизу
На последнее сообщение страницы переносила? Или к футеру? Т.е. начинать просмотр страницы снизу? К чему это?xisp писал(а):А ему хочется, чтобы страница отобразилась снизу.
Потому и попросил прояснить вопрос.
-
- phpBB 2.0.1
- Сообщения: 252
- Стаж: 16 лет 6 месяцев
- Благодарил (а): 10 раз
- Поблагодарили: 26 раз
- Контактная информация:
Re: Хэштег в функции generate_pagination
Попробую поподробнее
На странице есть 2 блока, друг над другом, размер ну практически в размер просмотра страницы в браузере.
Второй блок многостраничный, используется ф-ция generate_pagination для переключения страниц.
Перейти при первом входе на страницу просто: page.php#list
просмотр у пользователя начинается сразу со второго(нижнего) блока, именно там и располагается якорь list
Однако, если пользователь начинает переходить по страницам, браузер перекидывает на просмотр страницы вверх, тем самым приходится каждый раз проматывать страницу в браузере вниз.
Если добавить в ссылку #list перед отправкой в функцию, получаем ссылку вида: page.php#list&start=20
что при наличии аргументов в строке не переводит обзор на якорь, а при их отсутствии делает ссылку неработоспособной.
Собственно нужно привести переключение страниц к виду: page.php?start20#list
Можно конечно изменить саму функцию, добавив в неё необязательный аргумент, и прибавлять, при его наличии в конец генерируемой ссылки этот хэштег, но может быть есть способ сделать это не ковыряя саму generate_pagination ?
Добавлено спустя 7 минут 9 секунд:
Так как раздел закрыт для гостей, приложу скрин, для понимания моего вопроса:
На странице есть 2 блока, друг над другом, размер ну практически в размер просмотра страницы в браузере.
Второй блок многостраничный, используется ф-ция generate_pagination для переключения страниц.
Перейти при первом входе на страницу просто: page.php#list
просмотр у пользователя начинается сразу со второго(нижнего) блока, именно там и располагается якорь list
Однако, если пользователь начинает переходить по страницам, браузер перекидывает на просмотр страницы вверх, тем самым приходится каждый раз проматывать страницу в браузере вниз.
Если добавить в ссылку #list перед отправкой в функцию, получаем ссылку вида: page.php#list&start=20
что при наличии аргументов в строке не переводит обзор на якорь, а при их отсутствии делает ссылку неработоспособной.
Собственно нужно привести переключение страниц к виду: page.php?start20#list
Можно конечно изменить саму функцию, добавив в неё необязательный аргумент, и прибавлять, при его наличии в конец генерируемой ссылки этот хэштег, но может быть есть способ сделать это не ковыряя саму generate_pagination ?
Добавлено спустя 7 минут 9 секунд:
Так как раздел закрыт для гостей, приложу скрин, для понимания моего вопроса:
WORK: phpBB3 3.0.8 + Portal XL 5.0 + MODs + Custom,
PHP Version 5.3.3-7+squeeze25, Apache/2.2.9 (Debian), MySQL(i) 5.1.73-1+deb6u1-log
PHP Version 5.3.3-7+squeeze25, Apache/2.2.9 (Debian), MySQL(i) 5.1.73-1+deb6u1-log
- rxu
- phpBB Guru
- Сообщения: 16313
- Стаж: 17 лет 10 месяцев
- Откуда: Красноярск
- Благодарил (а): 533 раза
- Поблагодарили: 2119 раз
- Контактная информация:
Re: Хэштег в функции generate_pagination
Боюсь, что без правки generate_pagination() не обойтись. Ссылки на страницы генерируются только там.
-
- phpBB 2.0.1
- Сообщения: 252
- Стаж: 16 лет 6 месяцев
- Благодарил (а): 10 раз
- Поблагодарили: 26 раз
- Контактная информация:
Re: Хэштег в функции generate_pagination
Собственно, оказалось всё достаточно просто
Если кому понадобится, вот новый код ф-ции generate_pagination()
(аргумент при вызове ф-ции можно добавлять с хэшем или без, т.е. '#anchor' и 'anchor' одинаково добавят #anchor в конец строки).
Если кому понадобится, вот новый код ф-ции generate_pagination()
(аргумент при вызове ф-ции можно добавлять с хэшем или без, т.е. '#anchor' и 'anchor' одинаково добавят #anchor в конец строки).
Код: Выделить всё
function generate_pagination($base_url, $num_items, $per_page, $start_item, $add_prevnext_text = false, $tpl_prefix = '', $hashtag = '')
{
global $template, $user;
// Make sure $per_page is a valid value
$per_page = ($per_page <= 0) ? 1 : $per_page;
$seperator = '<span class="page-sep">' . $user->lang['COMMA_SEPARATOR'] . '</span>';
$total_pages = ceil($num_items / $per_page);
if ($total_pages == 1 || !$num_items)
{
return false;
}
if ($hashtag != '')
{
$hashtag = (strpos($hashtag, '#') === false) ? '#' . $hashtag : $hashtag;
}
$on_page = floor($start_item / $per_page) + 1;
$url_delim = (strpos($base_url, '?') === false) ? '?' : ((strpos($base_url, '?') === strlen($base_url) - 1) ? '' : '&');
$page_string = ($on_page == 1) ? '<strong>1</strong>' : '<a href="' . $base_url . $hashtag .'">1</a>';
if ($total_pages > 5)
{
$start_cnt = min(max(1, $on_page - 4), $total_pages - 5);
$end_cnt = max(min($total_pages, $on_page + 4), 6);
$page_string .= ($start_cnt > 1) ? ' ... ' : $seperator;
for ($i = $start_cnt + 1; $i < $end_cnt; $i++)
{
$page_string .= ($i == $on_page) ? '<strong>' . $i . '</strong>' : '<a href="' . $base_url . "{$url_delim}start=" . (($i - 1) * $per_page) . $hashtag .'">' . $i . '</a>';
if ($i < $end_cnt - 1)
{
$page_string .= $seperator;
}
}
$page_string .= ($end_cnt < $total_pages) ? ' ... ' : $seperator;
}
else
{
$page_string .= $seperator;
for ($i = 2; $i < $total_pages; $i++)
{
$page_string .= ($i == $on_page) ? '<strong>' . $i . '</strong>' : '<a href="' . $base_url . "{$url_delim}start=" . (($i - 1) * $per_page) . $hashtag .'">' . $i . '</a>';
if ($i < $total_pages)
{
$page_string .= $seperator;
}
}
}
$page_string .= ($on_page == $total_pages) ? '<strong>' . $total_pages . '</strong>' : '<a href="' . $base_url . "{$url_delim}start=" . (($total_pages - 1) * $per_page) . $hashtag .'">' . $total_pages . '</a>';
if ($add_prevnext_text)
{
if ($on_page != 1)
{
$page_string = '<a href="' . $base_url . "{$url_delim}start=" . (($on_page - 2) * $per_page) . $hashtag .'">' . $user->lang['PREVIOUS'] . '</a> ' . $page_string;
}
if ($on_page != $total_pages)
{
$page_string .= ' <a href="' . $base_url . "{$url_delim}start=" . ($on_page * $per_page) . $hashtag .'">' . $user->lang['NEXT'] . '</a>';
}
}
if ($hashtag != '')
{
$template->assign_vars(array(
$tpl_prefix . 'BASE_URL' => $base_url . $hashtag,
'A_' . $tpl_prefix . 'BASE_URL' => addslashes($base_url . $hashtag),
$tpl_prefix . 'PER_PAGE' => $per_page,
$tpl_prefix . 'PREVIOUS_PAGE' => ($on_page == 1) ? '' : $base_url . "{$url_delim}start=" . (($on_page - 2) * $per_page) . $hashtag,
$tpl_prefix . 'NEXT_PAGE' => ($on_page == $total_pages) ? '' : $base_url . "{$url_delim}start=" . ($on_page * $per_page) . $hashtag,
$tpl_prefix . 'TOTAL_PAGES' => $total_pages,
));
}
else
{
$template->assign_vars(array(
$tpl_prefix . 'BASE_URL' => $base_url,
'A_' . $tpl_prefix . 'BASE_URL' => addslashes($base_url),
$tpl_prefix . 'PER_PAGE' => $per_page,
$tpl_prefix . 'PREVIOUS_PAGE' => ($on_page == 1) ? '' : $base_url . "{$url_delim}start=" . (($on_page - 2) * $per_page),
$tpl_prefix . 'NEXT_PAGE' => ($on_page == $total_pages) ? '' : $base_url . "{$url_delim}start=" . ($on_page * $per_page),
$tpl_prefix . 'TOTAL_PAGES' => $total_pages,
));
}
return $page_string;
}
WORK: phpBB3 3.0.8 + Portal XL 5.0 + MODs + Custom,
PHP Version 5.3.3-7+squeeze25, Apache/2.2.9 (Debian), MySQL(i) 5.1.73-1+deb6u1-log
PHP Version 5.3.3-7+squeeze25, Apache/2.2.9 (Debian), MySQL(i) 5.1.73-1+deb6u1-log