Добрый день!
Возникла проблема с отображением списка тем на форуме. В качестве примера страница: http://www.hot-hatch.ru/viewforum.php?f=23
На каждой странице отображается список из 50 тем. При переходе на вторую страницу со списком тем происходит следующее: список начинается с 16 темы первой страницы. Если посмотреть на адресную строку, то становится ясно почему темы отображаются с 16 номера:
viewforum.php?f=23&start=15
Как исправить это положение (что бы переход на 2 страницу вызывал viewforum.php?f=23&start=50) я не знаю :(
Форум на phpbb 3.0.9, прикручена мобильная версия, tapatalk, Центр управления Объявлениями 1.2.5, automod отсутствует.
Количество тем на странице
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
-
af-sergey
- phpBB 1.0.0
- Сообщения: 4
- Стаж: 16 лет 11 месяцев
-
Pazh
- Former team member
- Сообщения: 2317
- Стаж: 16 лет 10 месяцев
- Благодарил (а): 42 раза
- Поблагодарили: 506 раз
Re: Количество тем на странице
Проверяй на правильность вычисления переменной
$start в файле viewforum.php и правильность функции generate_pagination в файле includes/functions.phpПомощь в ЛС/email только за WM или ЮMoney
-
af-sergey
- phpBB 1.0.0
- Сообщения: 4
- Стаж: 16 лет 11 месяцев
Re: Количество тем на странице
Так, отлично! Вычисляется по формуле $start + $config['topics_per_page']
Я попробовал поменять в настройках количество тем на странице (ну мало ли в предыдущий раз чёта там не подцепилось), так вот, количество тем изменилось, а вот эта переменная так и осталась «15».
Подскажите, в каком файле хранится эта переменная? Я вручную перебью цифру «15» на «50».
Я попробовал поменять в настройках количество тем на странице (ну мало ли в предыдущий раз чёта там не подцепилось), так вот, количество тем изменилось, а вот эта переменная так и осталась «15».
Подскажите, в каком файле хранится эта переменная? Я вручную перебью цифру «15» на «50».
-
Pazh
- Former team member
- Сообщения: 2317
- Стаж: 16 лет 10 месяцев
- Благодарил (а): 42 раза
- Поблагодарили: 506 раз
Re: Количество тем на странице
af-sergey тебе уже написали:
Pazh писал(а):функция generate_pagination в файле includes/functions.php
Помощь в ЛС/email только за WM или ЮMoney
-
af-sergey
- phpBB 1.0.0
- Сообщения: 4
- Стаж: 16 лет 11 месяцев
Re: Количество тем на странице
Так, понял где найти эту таблицу в mysql.
Но странная штука. Провёл эксперимент и выяснилось, что это злополучное число «15» является «Сообщений на странице».
Теперь вопрос: по какой-то причине форум плюсует не количество «Тем на странице», а количество «Сообщений на странице», хотя в коде файла, что вы подсказали, формула именно
Как с этим быть?
P.S. значения в таблицах mysql записаны верно (в ходе эксперимента через админку форума поменял значения приведённых выше параметров на 41 и 22, что бы увидеть где засада).
Добавлено спустя 12 минут 20 секунд:
Теперь наверное разобрался.
Получается что в файле
потому как
Всё верно? Все значения нужно заменить?
Но странная штука. Провёл эксперимент и выяснилось, что это злополучное число «15» является «Сообщений на странице».
Теперь вопрос: по какой-то причине форум плюсует не количество «Тем на странице», а количество «Сообщений на странице», хотя в коде файла
Код: Выделить всё
viewforum.phpКод: Выделить всё
$start + $config['topics_per_page']P.S. значения
Код: Выделить всё
topics_per_pageДобавлено спустя 12 минут 20 секунд:
Теперь наверное разобрался.
Получается что в файле
includes/functions.php в коде нужно заменить per_page на topics_per_pageпотому как
per_page в таблицах является «Сообщениями на странице», а topics_per_page «Темы на странице».Всё верно? Все значения нужно заменить?
Код: Выделить всё
// Pagination functions
/**
* Pagination routine, generates page number sequence
* tpl_prefix is for using different pagination blocks at one page
*/
function generate_pagination($base_url, $num_items, $per_page, $start_item, $add_prevnext_text = false, $tpl_prefix = '')
{
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;
}
$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 . '">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) . '">' . $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) . '">' . $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) . '">' . $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) . '">' . $user->lang['PREVIOUS'] . '</a> ' . $page_string;
}
if ($on_page != $total_pages)
{
$page_string .= ' <a href="' . $base_url . "{$url_delim}start=" . ($on_page * $per_page) . '">' . $user->lang['NEXT'] . '</a>';
}
}
$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;
}
/**
* Return current page (pagination)
*/
function on_page($num_items, $per_page, $start)
{
global $template, $user;
// Make sure $per_page is a valid value
$per_page = ($per_page <= 0) ? 1 : $per_page;
$on_page = floor($start / $per_page) + 1;
$template->assign_vars(array(
'ON_PAGE' => $on_page)
);
return sprintf($user->lang['PAGE_OF'], $on_page, max(ceil($num_items / $per_page), 1));
}
-
af-sergey
- phpBB 1.0.0
- Сообщения: 4
- Стаж: 16 лет 11 месяцев
Re: Количество тем на странице
Гостевой вид нормально отображается (глобальное правило количества топиков и постов внутри топика), а вот личные настройки хромают, хоть я и сделал замену по предыдущему посту, тут осталось равенство количество «Тем на странице» как количество «Сообщений на странице» :(
Не знаю что делать.
Не знаю что делать.

