чиним работу пагинации
This commit is contained in:
@@ -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 = '<a class="page_nav" href="index.php?id=' . $AVE_Core->curentdoc->Id
|
||||
. '&doc=' . (empty($AVE_Core->curentdoc->document_alias) ? prepare_url($AVE_Core->curentdoc->document_title) : $AVE_Core->curentdoc->document_alias)
|
||||
. ((isset($artpage) && is_numeric($artpage)) ? '&artpage=' . $artpage : '')
|
||||
. ((isset($apage) && is_numeric($apage)) ? '&apage=' . $apage : '')
|
||||
. '&page={s}">{t}</a> ';
|
||||
$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 = '<a class="page_nav" href="index.php?id=' . $AVE_Core->curentdoc->Id
|
||||
. '&doc=' . (empty($AVE_Core->curentdoc->document_alias) ? prepare_url($AVE_Core->curentdoc->document_title) : $AVE_Core->curentdoc->document_alias)
|
||||
. ((isset($artpage) && is_numeric($artpage)) ? '&artpage=' . $artpage : '')
|
||||
. ((isset($apage) && is_numeric($apage)) ? '&apage=' . $apage : '')
|
||||
. '&page={s}">{t}</a> ';
|
||||
$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('/(?<!:)\/\//', '/', $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
|
||||
");
|
||||
$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 = '';
|
||||
}
|
||||
|
||||
|
||||
// Формируем ряд переменных для использования в шаблоне
|
||||
|
||||
@@ -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. Общий контейнер, который окружает <nav> */
|
||||
.page_navigation_box {
|
||||
padding: 15px 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* 2. Навигационный элемент <nav> */
|
||||
.page_navigation_box nav {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
/* 3. Стиль для списка <ul>. НОВОЕ: используем класс .page_nav, который есть в HTML */
|
||||
.page_navigation_box ul.page_nav {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
align-items: center; /* НОВОЕ: для выравнивания текста "Страница 1 из 2" */
|
||||
}
|
||||
|
||||
/* 4. Стиль для текста "Страница 1 из 2" */
|
||||
.page_navigation_box span.pages { /* НОВОЕ ПРАВИЛО */
|
||||
margin-right: 15px; /* Отступ от цифр */
|
||||
color: #6c757d;
|
||||
}
|
||||
|
||||
/* 5. Элемент списка (<li>) */
|
||||
.page_navigation_box li {
|
||||
margin: 0 4px;
|
||||
}
|
||||
|
||||
/* 6. Ссылки на страницы (<a>) */
|
||||
/* ВАЖНО: Мы удаляем старый .page_nav_active и добавляем СТИЛИ для ССЫЛОК и АКТИВНОГО SPAN */
|
||||
.page_navigation_box a.page_nav,
|
||||
.page_navigation_box span.active { /* ИЗМЕНЕНИЕ: стилизуем span.active */
|
||||
display: block;
|
||||
min-width: 36px;
|
||||
padding: 6px 10px;
|
||||
line-height: 1.5;
|
||||
text-decoration: none;
|
||||
color: #0d6efd; /* Цвет Bootstrap Primary */
|
||||
background-color: #fff;
|
||||
border: 1px solid #dee2e6; /* Легкая граница */
|
||||
border-radius: 4px;
|
||||
transition: all 0.2s;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* 7. Стили для текущей (активной) страницы */
|
||||
.page_navigation_box span.active { /* ТОЧНОЕ ПРАВИЛО ДЛЯ АКТИВНОГО ЭЛЕМЕНТА */
|
||||
background-color: #0d6efd;
|
||||
border-color: #0d6efd;
|
||||
color: #fff; /* Белый текст на синем фоне */
|
||||
font-weight: bold;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
/* 8. Ховер-эффект для ссылок */
|
||||
.page_navigation_box a.page_nav:hover {
|
||||
color: #fff;
|
||||
background-color: #0b5ed7;
|
||||
border-color: #0b5ed7;
|
||||
}
|
||||
Reference in New Issue
Block a user