18 KiB
18 KiB
Модуль Комментарии.
Функционал:
- Возможность создавать комментарии как зарегистрированным Пользователям, так и Анонимам
- Разрешения задаются в Админ панели
- Аватар Пользователя
- если есть в системе - выведет его изображение, если нет выведет аватар с первой буквой имени пользователя или анонима
- Авторская оценка
- При создании комментария, Автор может поставить оценку материалу (документу) - звезды 1...5 баллов
- Права для Анонимов (разрешено/нет), настраиваются в Админ панели
- Разрешать Авторскую оценку в ответах настраивается в Админ панели
- Редактирование Авторской оценки Администратором в публичной заблокировано. Однако, если в порыве гнева, вы все таки решили изменить Авторскую оценку, несмотря на возможную потерю после такого вашего действия желания у Авторов в дальнейшем ставить хоть какие то оценки вашим супер интересным статьям, то сделать это возможно из Админ панели, но при условии, что ваше самолюбие заставит вас открыть файл /class/comment.php и сменить значение в переменной $_edit_avtor_rating = 0; на $_edit_avtor_rating = 1; (находится в самом начале файла).
- Рейтинг комментариев
- Пользователи и Анонимы могут ставить оценки комментариям других Авторов
- На выбор два варианта или пять звезд или лайк (сердечко)
- Права для Анонимов (разрешено участвовать/нет), настраиваются в Админ панели
- Таймер времени, при котором доступно редактирование или удаление комментария Автором
- Время задается в Админ панели, после истечении времени редактирование или удаление комментария будет сделать невозможно, за исключением Администратора
- Время жизни куки для Анонимов
- Задается в Админ панели, в течении этого времени Аноним будет считаться Автором своих комментариев
- Файлы
- Авторы могут загружать в свои комментарии разрешенные в Админ панели файлы.
- Размер и тип файла задаются в Админ панели. Отдельные права для Анонимов. Для изображений выводятся их превью, для остальных превью с именем расширения этого файла.
- Важно! Разрешив загрузку файлов, особенно Анонимам - вы подвергаете свой сайт дополнительным рискам! Относитесь к этой функции с максимальной острожностью.
- Дополнительные поля
- Два дополнительных поля, их названия и обязательные или нет, настраиваются в Админ панели
- Валидация обязательных полей на заполненность + проверка на разрешения для файлов
- Комментарий - родитель (ветка комментариев)
- Если на комментарий Автора другие Пользователи сделали ответ, то удалить такой комментарий Автору или Администратору в публичной части сайта будет невозможно, вместо этого будет произведено мягкое удаление, - удалится все, что относится к данному комментарию (Рейтинги, файлы, текст) и вместо этого будет выводится специальный аватар и текст: Комментарий удален автором либо Комментарий удален администратором. Восстановить данные такого комментария невозможно.
- Удаление комментариев в Админке
- Одиночные комментарии (не имеющие ответов) удаляются сразу и навсегда.
- Комментарии родители (имеющие ответы/ветку ответов) получают два варианта одиночного удаления:
- Мягкое удаление (удалится все, что относится к данному комментарию (Рейтинги, файлы, текст) и вместо этого будет выводится специальный аватар и текст: Комментарий удален администратором. Восстановить данные такого комментария невозможно,
- Жесткое удаление самого комментария и всей ветки ответов на этот комментарий. Администратор выбирает сам какой вариант ему необходим.
- Массовое удаление - одиночные комментарии удаляются сразу, комментарии-родители удаляются Мягким вариантом (с подстановкой текста Комментарий удален Администратором).
- Статус Скрыт/Опубликован (иконка глаз)
- Если комментарий родитель и на него есть ответы:
- При клике по иконке Скрыть, как в публичной части сайта, так и в Админке, - автоматически будет скрыт как сам комментарий так и все ответы на него (ветка комментариев), при этом у ответов возможность скрытия/публикации будет заблокирована до тех пор, пока родительский комментарий не будет разблокирован (опубликован). Восстановление в ветке статусов - опубликован, происходит персонально кликом - Опубликовать по каждому комментарию в ветке.
- Если комментарий одиночный (на него нет ответов):
- При клике по иконке Скрыть - комментарий будет скрыт. При клике опубликовать - будет опубликован.
- Если комментарий родитель и на него есть ответы:
- Видимость скрытых комментариев:
- Если комментарий родитель, и на него есть ответы, но Администратор решит его скрыть - будут также скрыты все ответы на него, включая ответы на ответы (все потомки). Такой комментарий (скрытые комментарии в ветке) будут видеть только Администратор и Автор комментария с пометкой "На модерации", однако если этот комментарий будет в свою очередь потомком вышестоящего в иерархии комментария-родителя другого Автора и тот в свою очередь будет скрыт - такой комментарий будет виден только Администратору.
- Если комментарий одиночный и на него нет ответов и он, в свою очередь, сам не является ответом: если статус Скрыт - то его видит только Администратор и сам Автор с пометкой "На модерации". Другие посетители его не видят.
- Порядок разблокировки скрытых комментариев в ветке (для Администратора). В публичной части у всех потомков будут отключены кнопки "Показать комментарий" до тех пор, пока не будет разблокирован родительский комментарий, т.е. сначала нужно разблокировать (клик по иконке "перечеркнутый красный глаз - Показать комментарий") главного родителя (если в ветке есть ответы на ответы), после этого станут доступными иконки ("перечеркнутый красный глаз - Показать комментарий") у следующих родителей (если они есть) и так по иерархии - спускаться нужно сверху вниз и до последнего потомка. В админ панели проще работать с скрытыми ветками. В ней есть два типа иконок-замочков - родительские и для потомков. При наведении мыши на иконку потомков - будет выведена подсказка - Id комментария, который является родителям для данного комментария. Действия аналогичны публичной части - разблокируйте сначала родителей, затем потомков. Используйте фильтр в Админке - вывести скрытые комментарии и далее работайте с ними, так будет удобнее.
- Контроль Имен Анонима
- Если Анонимный пользователь, в течении жизни куки, сменит имя, под которым он опубликовал свой первый комментарий, рядом с именем появится плашка с тултипом в котором будут перечислены все его имена.
- Пагинация
- Пагинация работает только для родительских комментариев, количество ответов (дети и внуки) на родительский комментарий - задается в Админ панели отдельно. Если общее количество ответов превышает лимит ответов, установленный в Админке, будет выведена кнопка Показать еще N ответов, при клике по которой AJAX подгрузит и выведет оставшиеся комментарии на страницу.
- Сортировка
- В админ панели доступен поиск комментария по следующим параметрам: по Имени, IP адресу, по тексту комментария. Сортировка: сначала новые, сначала старые, популярные (согласно Рейтингу пользователей), обсуждаемые - по количеству ответов на комментарий-родитель, оценки Автора (у кого больше всех звезд). Фильтрация: выводить все сообщения, только с файлами, только скрытые. Вывод комментариев по умолчанию - плоский список, но для удобства есть и древовидный список, что позволяет видеть сразу всю ветку. Количество на странице: выводит желаемое количество комментариев на страницу. Период: вам доступен календарь, в котором вы сами выбираете нужный вам период для просмотра - от и до.
- В публичной части также можно менять вывод комментариев (выбирается в Настройках модуля):
- Сначала старые (новые внизу)
- Сначала новые (старые внизу)
- По общему рейтингу (лучшие вверху)
- По оценке Автора (кол-ву звезд)
- Важно! В ветках потомки выводятся по принципу сначала старые (новые внизу), что-бы не рушить визуальную иерархию ответов.
- Эмодзи
- Модуль использует кодировку utf8mb4, что позволяет использовать в тексте комментариев эмодзи, например такие: 😀 😁 😂 🤣 😃 😄 😅 😆 😉 😊 😋 😎 😍 😘 😗 😙 😚 🙂 🤗 🤩
- Шаблоны (файлы .tpl) отвечающие за вывод в публичную часть:
- comments_tree.tpl - выводит на страницу форму "Написать комментарий"
- comments_tree_sub.tpl - выводит на страницу кооментарий (ветку комментариев)
- last_comments.tpl - выводит на страницу виджет "Последние комментарии"
- Лог загрузки опасных файлов:
- Вы можете вкл/выкл запись лога загрузки опасных файлов. При включенном режиме в Админ панели в списке комментариев появится ссылка "Просмотреть логи безопасности", при новых записях будет включен оранжевый индикатор и текст ссылки будет изменен на "Есть новые записи в логах!". Основные типы записи в лог:
- Обнаружена подмена (Fake Image)
- Вредоносный тип контента (MIME)
- Опасный формат файла
- Файл слишком большой: Превышение лимита
- Пустой файл: Попытка загрузки файла нулевого размера.
- Запрещенное расширение: Файл не прошел по списку разрешенных расширений.
- Вы можете вкл/выкл запись лога загрузки опасных файлов. При включенном режиме в Админ панели в списке комментариев появится ссылка "Просмотреть логи безопасности", при новых записях будет включен оранжевый индикатор и текст ссылки будет изменен на "Есть новые записи в логах!". Основные типы записи в лог:
- Система тегов:
- Тег [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) |
Для AJAX работы модуля не забудьте подключить:
JS:
https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js
https://cdnjs.cloudflare.com/ajax/libs/jquery.form/4.3.0/jquery.form.min.js
https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js
Стили:
https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css
https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css