для виджета Последние комментарии добавлен в тег второй параметр - количество символов комментария [mod_comment:X:Y] , где X - число комментариев выводимых на страницу, а Y - число символов в тексте выводимого комментария.

This commit is contained in:
2026-01-19 13:43:39 +05:00
parent 81493320e6
commit 43ba68eea8
4 changed files with 30 additions and 22 deletions

View File

@@ -36,8 +36,20 @@
* Если Анонимный пользователь, в течении жизни куки, сменит имя под которым он опубликовал свой первый комментарий, рядом с именем появится плашка с тултипом в котором будут перечислены все его имена.
* Пагинация
* Пагинация работает только для родительских комментариев, количество ответов (дети и внуки) на родительский комментарий - задается в Админпанели отдельно. Если общее количество ответов превышает лимит ответов установленный из Админки, будет выведена кнопка Показать еще N ответов, при клике по которой AJAX подгрузит и выведет оставшиеся комментарии на страницу.
* Система тегов
* Для создания и вывода комментариев используйте тег [mod_comment], для вывода N-го количества последних комментариев используйте этот же тег но с числом - [mod_comment:X], где X = кол-ву выводимых комментариев на страницу.
* Система тегов:
* Тег [mod_comment] (Без параметров) - Это основной системный тег для вывода полноценного функционала на странице документа, выводит форму создания нового комментария + сами комментарии.
* Тег [mod_comment:X] (Один параметр) - Выводит виджет последних комментариев, где X - количество выводимых комментариев, количество символов текста комментария равно 150 по умолчанию.
* Тег [mod_comment:X:Y] (Два параметра) - Выводит виджет последних комментариев, где X - количество выводимых комментариев, а Y - количество символов в тексте комментария.
#### Сводная таблица параметров по умолчанию
| Тег | Лимит (X) | Обрезка текста (Y) | Режим вывода |
| --- | --- | --- | --- |
| [mod_comment] | — | 1000 | Полный список + Форма |
| [mod_comment:10] | 10 | 150 | Виджет (last_comments.tpl) |
| [mod_comment:5:200] | 5 | 200 | Виджет (last_comments.tpl) |
, для вывода N-го количества последних комментариев используйте этот же тег но с числом - [mod_comment:X], где X = кол-ву выводимых комментариев на страницу.
### Для AJAX работы модуля не забудьте подключить:
#### JS:

View File

@@ -1820,7 +1820,7 @@ function commentAdminSettingsEdit($tpl_dir)
/**
* Метод для получения последних X комментариев
*/
function getLatestComments($limit = 10)
function getLatestComments($limit = 10, $chars = 150)
{
global $AVE_DB;
@@ -1845,7 +1845,7 @@ function getLatestComments($limit = 10)
$row = array_change_key_case($res, CASE_LOWER);
// Обработка текста комментария
$row['comment_text'] = mb_strimwidth(strip_tags($row['comment_text'] ?? ''), 0, 150, "...");
$row['comment_text'] = mb_strimwidth(strip_tags($row['comment_text'] ?? ''), 0, (int)$chars, "...");
$row['date'] = ave_date_format(get_settings('date_format'), $row['comment_published']);
// Логика аватара (системный или буквенный)

View File

@@ -13,7 +13,7 @@ $module = array(
'ModuleFunction' => 'mod_comment',
'ModuleTag' => '[mod_comment]',
'ModuleTagLink' => null,
'ModuleAveTag' => '#\\\[mod_comment(:[\\\d]+)?]#',
'ModulePHPTag' => '<?php mod_comment("$1"); ?>'
'ModuleAveTag' => '#\\\[mod_comment(:[\\\d:]+)?]#',
'ModulePHPTag' => '<?php mod_comment("$1"); ?>'
);
?>

View File

@@ -10,41 +10,37 @@
if(!defined('BASE_DIR')) exit;
/**
* Функция, предназначенная для вывода списка комментариев к данному документу.
* Она будет выполнена при парсинге шаблона вместо системного тега [mod_comment].
*/
function mod_comment($param = '')
{
global $AVE_Template;
// 1. Подключаем класс
require_once(BASE_DIR . '/modules/comment/class/comment.php');
$comment = new Comment;
// 2. Проверяем: если в теге передана цифра [mod_comment:5]
// $param может прийти в виде ":5" или просто "5" в зависимости от парсера
$limit = (int)str_replace(':', '', $param);
// Разбиваем строку (например, ":1:100") по двоеточию
$p = explode(':', ltrim($param, ':'));
// X - количество комментариев
$limit = (isset($p[0]) && $p[0] > 0) ? (int)$p[0] : 0;
// Y - количество символов (по умолчанию 150)
$chars = (isset($p[1]) && $p[1] > 0) ? (int)$p[1] : 150;
if ($limit > 0) {
// --- РЕЖИМ "ПОСЛЕДНИЕ ОТЗЫВЫ" ---
$tpl_dir = BASE_DIR . '/modules/comment/templates/';
// Загружаем переводы (даты, заголовки)
$lang_file = BASE_DIR . '/modules/comment/lang/' . ($_SESSION['user_language'] ?? 'ru') . '.txt';
if (file_exists($lang_file)) $AVE_Template->config_load($lang_file, 'module');
// Берем данные из метода
$items = $comment->getLatestComments($limit);
// Передаем в метод ДВА значения: лимит и обрезку
$items = $comment->getLatestComments($limit, $chars);
$AVE_Template->assign('last_comments_items', $items);
// Выводим специальный шаблон для виджета
echo $AVE_Template->fetch($tpl_dir . 'last_comments.tpl');
return; // Выходим, чтобы под виджетом не вылез список комментов статьи
return;
}
// --- СТАНДАРТНЫЙ РЕЖИМ (список под статьей) ---
// Если параметров нет или это обычный [mod_comment]
// --- СТАНДАРТНЫЙ РЕЖИМ ---
$tpl_dir = BASE_DIR . '/modules/comment/templates/';
$lang_file = BASE_DIR . '/modules/comment/lang/' . ($_SESSION['user_language'] ?? 'ru') . '.txt';
if (file_exists($lang_file)) $AVE_Template->config_load($lang_file, 'module');