diff --git a/class/comment.php b/class/comment.php
index a42cb6f..ad05ec9 100644
--- a/class/comment.php
+++ b/class/comment.php
@@ -173,7 +173,7 @@ class Comment
* Следующие методы описывают работу модуля в Публичной части сайта.
*/
- /**
+/**
* Метод, предназначенный для получения из БД всех комментариев, относящихся к указанному
* документу с последующим выводом в Публичной части.
*
@@ -206,9 +206,9 @@ class Comment
if (!in_array($user_group, $read_groups))
{
// Устанавливаем флаг, что прав на чтение нет
- $assign['no_read_permission'] = 1;
+ $assign['no_read_permission'] = 1;
}
- // =================================================================================
+ // =================================================================================
$assign['display_comments'] = 1;
@@ -219,78 +219,91 @@ class Comment
{
$assign['cancomment'] = 1;
}
-
- // ЕСЛИ ЕСТЬ ПРАВА НА ЧТЕНИЕ, ПРОДОЛЖАЕМ ВЫБОРКУ И ВЫВОД
- if ($assign['no_read_permission'] == 0)
- {
- $assign['comment_max_chars'] = $this->_commentSettingsGet('comment_max_chars');
- $assign['im'] = $this->_commentSettingsGet('comment_use_antispam');
+
+ // ЕСЛИ ЕСТЬ ПРАВА НА ЧТЕНИЕ, ПРОДОЛЖАЕМ ВЫБОРКУ И ВЫВОД
+ if ($assign['no_read_permission'] == 0)
+ {
+ $assign['comment_max_chars'] = $this->_commentSettingsGet('comment_max_chars');
+ $assign['im'] = $this->_commentSettingsGet('comment_use_antispam');
- // Выполняем запрос к БД на получение количества комментариев для текущего документа
- $comments = array();
+ // Выполняем запрос к БД на получение количества комментариев для текущего документа
+ $comments = array();
- if ($this->_commentSettingsGet('comment_use_page_nav') == 1)
- {
- $limit = $this->_commentSettingsGet('comment_page_nav_count');
- $start = get_current_page() * $limit - $limit;
+ if ($this->_commentSettingsGet('comment_use_page_nav') == 1)
+ {
+ $limit = $this->_commentSettingsGet('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();
+ $num = $AVE_DB->Query("
+ SELECT COUNT(*)
+ FROM " . PREFIX . "_module_comment_info
+ WHERE document_id = '" . $document_id . "'
+ ")->GetCell();
- $sql = $AVE_DB->Query("
- SELECT *
- FROM " . PREFIX . "_module_comment_info
- WHERE document_id = '" . $document_id . "'
- " . ($user_group == 1 ? '' : "AND comment_status = '1'") . "
- ORDER BY comment_published ASC
- LIMIT " . $start . "," . $limit . "
- ");
+ $sql = $AVE_DB->Query("
+ SELECT *
+ FROM " . PREFIX . "_module_comment_info
+ WHERE document_id = '" . $document_id . "'
+ " . ($user_group == 1 ? '' : "AND comment_status = '1'") . "
+ ORDER BY comment_published ASC
+ LIMIT " . $start . "," . $limit . "
+ ");
- $pages = @ceil($num / $limit);
+ $pages = @ceil($num / $limit);
- if ($num > $limit)
- {
- $page_nav = '{t} ';
- $page_nav = get_pagination(ceil($num / $limit), 'page', $page_nav, get_settings('navi_box'));
- $page_nav = rewrite_link($page_nav);
- $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 = '';
- }
+ if ($num > $limit)
+ {
+ $page_nav = '{t} ';
+ $page_nav = get_pagination(ceil($num / $limit), 'page', $page_nav, get_settings('navi_box'));
+
+ // *** ПРИМЕНЯЕМ КОСТЫЛИ ИЗ РЕАЛИЗАЦИИ ЗАПРОСОВ ДЛЯ ЧПУ ***
+ // 1. Применяем rewrite_link и очищаем от тройных/двойных слешей
+ $page_nav = str_ireplace('"//"', '"/"', str_ireplace('///', '/', rewrite_link($page_nav)));
+
+ // 2. Очищаем от URL_SUFF, если он есть (хотя это, возможно, не нужно для комментариев)
+ // (Я опущу эту строку, так как она специфична для главной страницы.)
+ // $page_nav = str_ireplace('"//' . URL_SUFF . '"', '"/"', $page_nav);
+
+ // 3. Запускаем более общую очистку, если там есть Query (GET-параметры),
+ // что гарантирует удаление двойных слешей, которые могут появиться в пути
+ $page_nav = preg_replace('/(?Query("
- SELECT *
- FROM " . PREFIX . "_module_comment_info
- WHERE document_id = '" . $document_id . "'
- " . ($user_group == 1 ? '' : "AND comment_status = '1'") . "
- ORDER BY comment_published ASC
- ");
+ $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 = '';
+ }
- $page_nav = '';
- }
+ }
+ else
+ {
+ $sql = $AVE_DB->Query("
+ SELECT *
+ FROM " . PREFIX . "_module_comment_info
+ WHERE document_id = '" . $document_id . "'
+ " . ($user_group == 1 ? '' : "AND comment_status = '1'") . "
+ ORDER BY comment_published ASC
+ ");
- // Получаем формат даты, который указан в общих настройках системы и
- // приводим дату создания комментария и дату редактирования к этому формату
- $date_time_format = $AVE_Template->get_config_vars('COMMENT_DATE_TIME_FORMAT');
- while ($row = $sql->FetchAssocArray())
- {
+ $page_nav = '';
+ }
- // -----------------------------------------------------
+ // Получаем формат даты, который указан в общих настройках системы и
+ // приводим дату создания комментария и дату редактирования к этому формату
+ $date_time_format = $AVE_Template->get_config_vars('COMMENT_DATE_TIME_FORMAT');
+ while ($row = $sql->FetchAssocArray())
+ {
+
+ // -----------------------------------------------------
// !!! НАЧАЛО: ВНЕДРЕНИЕ АВАТАРА !!!
// -----------------------------------------------------
- if (isset($row['comment_author_id']) && $row['comment_author_id'] > 0)
+ if (isset($row['comment_author_id']) && $row['comment_author_id'] > 0)
{
// Вызываем глобальную функцию getAvatar с нужным размером (48px)
// и сохраняем результат в поле 'avatar' для Smarty:
@@ -305,19 +318,18 @@ class Comment
// -----------------------------------------------------
// !!! КОНЕЦ: ВНЕДРЕНИЕ АВАТАРА !!!
// -----------------------------------------------------
- $row['comment_published'] = ave_date_format($date_time_format, $row['comment_published']);
- $row['comment_changed'] = ave_date_format($date_time_format, $row['comment_changed']);
+ $row['comment_published'] = ave_date_format($date_time_format, $row['comment_published']);
+ $row['comment_changed'] = ave_date_format($date_time_format, $row['comment_changed']);
- $comments[$row['parent_id']][] = $row;
- }
-
- }
- else
- {
- // Если нет прав, то эти переменные остаются пустыми/неопределенными
- $comments = array();
- $page_nav = '';
- }
+ $comments[$row['parent_id']][] = $row;
+ }
+ }
+ else
+ {
+ // Если нет прав, то эти переменные остаются пустыми/неопределенными
+ $comments = array();
+ $page_nav = '';
+ }
// Формируем ряд переменных для использования в шаблоне
diff --git a/css/mod_comment_styles.css b/css/mod_comment_styles.css
index 840e7ed..0446f6f 100644
--- a/css/mod_comment_styles.css
+++ b/css/mod_comment_styles.css
@@ -14,7 +14,6 @@
width: 48px;
height: 48px;
margin-right: 20px !important;
-
/* Убедимся, что аватар имеет правильный отступ от метаданных/текста */
/* margin-right: 15px; */ /* Если вы используете me-3 в HTML, этот CSS не нужен */
}
@@ -31,14 +30,14 @@
/* 4. Стиль метаданных (Автор, Дата, IP) */
.mod_comment_meta {
/* Делаем блок метаданных компактнее и выравниваем по верхнему краю */
- line-height: 1.2;
+ line-height: 1.2;
margin-bottom: 5px !important; /* Чуть меньше отступ от текста */
}
/* 5. Стили текста комментария */
.mod_comment_text {
/* Увеличиваем межстрочный интервал для лучшей читабельности */
- line-height: 1.5;
+ line-height: 1.5;
}
/* 6. Стили панели действий (Редактировать, Удалить, Ответить) */
@@ -66,7 +65,7 @@
padding-left: 15px; /* Отступ между линией и контентом ответа */
/* Опционально: немного отличающийся фон */
- background-color: #f8f9fa;
+ background-color: #f8f9fa;
}
/* 2. Отдельно стилизуем рамку для вложенных карточек, чтобы они не выглядели
@@ -85,4 +84,75 @@
.mod_comment_comment .mod_comment_comment.ms-4 .mod_comment_comment.ms-4 {
border-color: #adb5bd; /* Чуть темнее линия для следующего уровня */
background-color: #fff; /* Возвращаем белый фон для контраста */
+}
+
+
+/* ====================================================================
+ !!! ФИНАЛЬНЫЕ СТИЛИ ДЛЯ ПАГИНАЦИИ !!!
+ ==================================================================== */
+
+/* 1. Общий контейнер, который окружает