diff --git a/class/comment.php b/class/comment.php index 97056c4..33bfb51 100644 --- a/class/comment.php +++ b/class/comment.php @@ -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 = '{t} '; - // 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('/(? 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();