переносим пагинацию только на родителей - для детей и внуков отключаем пагинацию вообще.

This commit is contained in:
2025-12-31 21:48:40 +05:00
parent 020da451b2
commit 596ff2db2b

View File

@@ -260,46 +260,49 @@ function commentListShow($tpl_dir)
$assign['comment_max_files'] = (int)($settings['comment_max_files'] ?? 5);
$comments = array();
if ($settings['comment_use_page_nav'] == 1)
if ($settings['comment_use_page_nav'] == 1)
{
$limit = $settings['comment_page_nav_count'];
$limit = (int)$settings['comment_page_nav_count'];
$start = get_current_page() * $limit - $limit;
$num = $AVE_DB->Query("SELECT COUNT(*) FROM " . PREFIX . "_module_comment_info WHERE document_id = '" . $document_id . "'")->GetCell();
// 1. Считаем только РОДИТЕЛЕЙ для пагинации
$num = $AVE_DB->Query("SELECT COUNT(*) FROM " . PREFIX . "_module_comment_info WHERE document_id = '" . $document_id . "' AND parent_id = '0'")->GetCell();
// 2. Основной запрос: выбираем ВСЮ ветку (родителя и всё, что под ним)
// Мы ищем записи, которые либо сами являются нужными родителями,
// либо имеют parent_id, указывающий на них (включая глубокую вложенность через логику дерева)
$sql = $AVE_DB->Query("
SELECT *
FROM " . PREFIX . "_module_comment_info
WHERE document_id = '" . $document_id . "'
SELECT * FROM " . PREFIX . "_module_comment_info
WHERE document_id = '" . $document_id . "'
AND (
id IN (SELECT id FROM (SELECT id FROM " . PREFIX . "_module_comment_info WHERE document_id = '" . $document_id . "' AND parent_id = '0' ORDER BY comment_published ASC LIMIT " . (int)$start . "," . (int)$limit . ") as tmp)
OR
parent_id != '0'
)
" . ($user_group == 1 ? '' : "AND comment_status = '1'") . "
ORDER BY comment_published ASC
LIMIT " . (int)$start . "," . (int)$limit . "
");
if ($num > $limit)
if ($num > $limit)
{
// 1. Формируем базовый шаблон ссылки
$page_nav = '<a class="page_nav" href="index.php?id=' . $AVE_Core->curentdoc->Id
. '&amp;doc=' . (empty($AVE_Core->curentdoc->document_alias) ? prepare_url($AVE_Core->curentdoc->document_title) : $AVE_Core->curentdoc->document_alias)
. ((isset($artpage) && is_numeric($artpage)) ? '&amp;artpage=' . $artpage : '')
. ((isset($apage) && is_numeric($apage)) ? '&amp;apage=' . $apage : '')
. '&amp;page={s}">{t}</a> ';
// 2. Генерируем стандартную пагинацию системы
$page_nav = get_pagination(ceil($num / $limit), 'page', $page_nav, get_settings('navi_box'));
// 3. ПРИМЕНЯЕМ КОСТЫЛИ ДЛЯ ЧПУ
// Прогоняем через rewrite_link и чистим двойные/тройные слеши
$page_nav = str_ireplace('"//"', '"/"', str_ireplace('///', '/', rewrite_link($page_nav)));
$page_nav = preg_replace('/(?<!:)\/\//', '/', $page_nav);
// 4. Регистрируем пагинацию в глобальном массиве системы (без этого на главной может не работать)
$GLOBALS['page_id'][$document_id]['page'] = ($GLOBALS['page_id'][$document_id]['page'] > ceil($num / $limit) ? $GLOBALS['page_id'][$document_id]['page'] : ceil($num / $limit));
}
else
{
$page_nav = '';
}
else { $page_nav = ''; }
}
else
{
@@ -307,6 +310,11 @@ function commentListShow($tpl_dir)
$page_nav = '';
}
$date_time_format = $AVE_Template->get_config_vars('COMMENT_DATE_TIME_FORMAT');
$now = time();