для виджета Последние комментарии добавлен в тег второй параметр - количество символов комментария [mod_comment:X:Y] , где X - число комментариев выводимых на страницу, а Y - число символов в тексте выводимого комментария.
This commit is contained in:
16
README.md
16
README.md
@@ -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:
|
||||
|
||||
@@ -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']);
|
||||
|
||||
// Логика аватара (системный или буквенный)
|
||||
|
||||
4
info.php
4
info.php
@@ -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"); ?>'
|
||||
);
|
||||
?>
|
||||
28
module.php
28
module.php
@@ -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');
|
||||
|
||||
Reference in New Issue
Block a user