Глава 7. Встроенные плагины (Core Plugins)

07-07-26 10:37

В этой главе подробно рассматриваются встроенные плагины Seditio CMS, входящие в официальный дистрибутив системы. Вы изучите их назначение, структуру используемых таблиц в базе данных, особенности интеграции через систему хуков (Hooks), а также ЧПУ-адреса и параметры конфигурации.


7.1. Роль встроенных плагинов в экосистеме Seditio

В отличие от модулей (таких как page или forums), плагины в Seditio служат для точечного расширения функционала и кастомизации вывода без изменения исходного кода ядра. Плагины подключаются динамически в точках вызова хуков (подробнее о механизме работы хуков и манифестах см. в Главе 8. Архитектура и разработка плагинов).

Ядро автоматически управляет правами доступа к плагинам (ACL), их конфигурацией и локализацией (подробнее о локализации плагинов см. в Главе 11. Локализация и интернационализация).


7.2. comments (Система комментариев)

Плагин comments добавляет функционал комментирования страниц и тем форума.

  • Таблица в БД (sed_com):
    • com_id (INT, Primary Key) — уникальный ID комментария.
    • com_code (VARCHAR) — уникальный код комментируемого ресурса (например, p123 для страницы ID 123 или f456 для темы форума ID 456).
    • com_author (VARCHAR) — имя автора (или ник гостя).
    • com_authorid (INT) — ID пользователя в таблице sed_users (0 для гостей).
    • com_text (TEXT) — текст комментария.
    • com_date (INT) — UNIX-timestamp времени добавления.
    • com_ip (VARCHAR) — IP-адрес автора.
  • Используемые хуки:
    • page.tags — вывод комментариев и формы добавления на странице.
    • forums.posts.tags — вывод комментариев в темах форума.
    • ajax — асинхронная отправка и загрузка списка комментариев без перезагрузки страницы (вызов /plug?ajx=comments или index.php?module=plug&ajx=comments).
  • Адреса ЧПУ:
    • Управление комментариями в админке: /admin/comments или index.php?module=admin&m=comments.
    • Конфигурация плагина: /admin/config?n=edit&o=plug&p=comments или index.php?module=admin&m=config&n=edit&o=plug&p=comments.

7.3. ratings (Рейтинги контента)

Плагин ratings реализует возможность пятибалльной оценки страниц пользователями сайта.

  • Таблицы в БД:
    • sed_ratings — хранит суммарную статистику оценок страниц:
      • rating_code (VARCHAR, Primary Key) — код оцениваемого ресурса (например, p123).
      • rating_average (DECIMAL) — средний балл оценки контента.
      • rating_repeats (INT) — количество проголосовавших пользователей.
    • sed_rated — лог голосов для предотвращения повторного голосования:
      • rated_code (VARCHAR) — код ресурса.
      • rated_userid (INT) — ID проголосовавшего пользователя.
      • rated_value (INT) — поставленная оценка (от 1 до 5).
      • rated_ip (VARCHAR) — IP-адрес проголосовавшего (используется для ограничения накруток гостей).
  • Используемые хуки:
    • page.tags — рендеринг виджета оценки и звезд рейтинга в шаблонах страниц.
    • ajax — асинхронная фиксация голоса (вызов /plug?ajx=ratings или index.php?module=plug&ajx=ratings).

7.4. tags (Облако тегов)

Плагин tags организует механизм ключевых слов (тегов) для классификации страниц и тем форума.

  • Таблица в БД (sed_tags):
    • tag_id (INT, Primary Key) — ID записи.
    • tag_code (VARCHAR) — код связанного объекта (например, p123).
    • tag_text (VARCHAR) — текстовое значение тега в нижнем регистре (индексируется для быстрого поиска).
  • Логика работы:
    • При сохранении страницы плагин парсит поле ввода тегов, разбивает строку по разделителю (запятая) и обновляет таблицу sed_tags.
    • Облако тегов генерируется путем расчета логарифмического веса популярности каждого тега и выводится глобальным тегом {PHP.out.tags_cloud}.
  • Адреса ЧПУ:
    • Список материалов по конкретному тегу: /tags/имя_тега или index.php?module=tags&t=имя_тега.

7.5. recentitems (Последние публикации)

Плагин recentitems формирует списки последних добавленных страниц сайта и тем форума для вывода на главной странице или в виджетах.

  • Особенности настройки:
    • В конфигурации плагина задается лимит количества выводимых элементов, временной интервал актуальности и перечень исключаемых из показа категорий страниц.
  • Используемые хуки:
    • index.tags — интеграция списков в шаблон главной страницы сайта index.tpl.
  • Адреса ЧПУ:
    • Настройка виджета: /admin/config?n=edit&o=plug&p=recentitems или index.php?module=admin&m=config&n=edit&o=plug&p=recentitems.

7.6. search (Полнотекстовый поиск)

Плагин search предоставляет форму и логику полнотекстового поиска по страницам и форумам.

  • Особенности поиска:
    • Поиск по страницам проверяет поля page_title, page_text, page_desc, а также значения кастомных экстраполей (CCK).
    • Поиск по форумам анализирует заголовки тем (ft_title) и тексты сообщений (fp_text).
    • Результаты выводятся постранично с подсветкой искомых слов.
  • Адреса ЧПУ:
    • Страница поиска и вывод результатов: /search или index.php?module=search.

7.7. trashcan (Корзина удаленных объектов)

Плагин trashcan обеспечивает временное хранение удаленных страниц, комментариев и сообщений форума для возможности их быстрого восстановления.

  • Таблица в БД (sed_trash):
    • tr_id (INT, Primary Key) — ID записи в корзине.
    • tr_type (VARCHAR) — тип объекта (page, comment, forum_topic, forum_post).
    • tr_title (VARCHAR) — название или заголовок объекта на момент удаления.
    • tr_info (TEXT) — служебная информация (ID автора удаления, дата операции).
    • tr_datas (LONGTEXT) — сериализованный массив данных объекта, извлеченный из СУБД перед физическим удалением.
  • Адреса ЧПУ:
    • Просмотр корзины и восстановление данных в админке: /admin/trashcan или index.php?module=admin&m=trashcan.

7.8. sedcaptcha (Защита капчей)

Плагин sedcaptcha отвечает за генерацию графического кода подтверждения для защиты форм от автоматического спама и парсинга.

  • Логика работы:
    • Генерирует случайную строку из латинских букв и цифр, записывает её хэш в сессию пользователя.
    • Использует встроенные функции PHP расширения GD для рендеринга изображения с добавлением шума (точек, линий) и искажением шрифта.
    • Перед обработкой формы сверяет отправленное значение с сохраненным в сессии.
  • Адреса ЧПУ:
    • Ссылка генерации изображения: /plug?r=sedcaptcha или index.php?module=plug&r=sedcaptcha.

7.9. ckeditor (Визуальный редактор)

Плагин ckeditor интегрирует полнофункциональный визуальный редактор CKEditor в текстовые поля форм Seditio.

  • Интеграция с PFS (Персональная файловая система):
    • Плагин подключает JS-драйверы для интеграции с загрузчиком PFS. При клике на иконку «Вставить изображение» открывается окно PFS, позволяющее загрузить файл и в один клик вставить его в текст страницы (подробнее о PFS см. в Главе 12. Персональная файловая система (PFS) и обработка медиа).
  • Кастомизация панели инструментов:
    • Панель инструментов редактора настраивается в файле plugins/ckeditor/ckeditor.config.js в зависимости от группы пользователя (минимальная панель для обычных пользователей на форуме, расширенная — для администраторов).

7.10. jevix (Фильтр-типограф пользовательского контента)

Плагин jevix осуществляет глубокую фильтрацию и автоматическое форматирование HTML-кода (типографику) в текстах, отправляемых пользователями.

  • Основные возможности:
    • Парсинг текста и очистка от нежелательных тегов, XSS-инъекций и вредоносных JS-скриптов.
    • Автоматическая замена дефисов на тире, исправление кавычек («елочки»/“лапки”), авторасстановка неразрывных пробелов после предлогов.
    • Настройка разрешенных HTML-тегов и их атрибутов отдельно для страниц и комментариев.
  • Используемые хуки:
    • page.add.parse — обработка текста при сохранении страницы.
    • comments.new.parse — обработка текста перед записью комментария в БД.

7.11. news (Вывод новостных лент)

Плагин news предназначен для организации структуры новостной ленты на главной странице или в подразделах сайта.

  • Логика работы:
    • Извлекает публикации из указанных в конфигурации категорий страниц.
    • Генерирует TPL-теги новостей с поддержкой пагинации (постраничной навигации) и выводит их в шаблон index.tpl.
  • Адреса ЧПУ:
    • Главная страница с пагинацией новостей: /news/список-новостей?d=страница или index.php?d=страница.

7.12. rss (Экспорт в XML RSS 2.0)

Плагин rss осуществляет экспорт контента страниц и сообщений форума в стандартный XML-формат RSS 2.0 для чтения через внешние агрегаторы.

  • Особенности экспорта:
    • Экспорт последних страниц из выбранных категорий с сохранением HTML-разметки (или чистым текстом по выбору в конфигурации).
    • Экспорт свежих тем форума.
  • Адреса ЧПУ:
    • RSS-лента страниц: /rss или index.php?module=rss.
    • RSS-лента выбранной категории: /rss/news или index.php?module=rss&c=news.
    • RSS-лента форумов: /rss/forums или index.php?module=rss&m=forums.

7.13. contact (Форма обратной связи)

Плагин contact выводит страницу обратной связи с возможностью отправки сообщений посетителями сайта.

  • Особенности:
    • Проверка заполнения полей, защита формы капчей (sedcaptcha).
    • Отправка сообщений на указанные в настройках Email-адреса администраторов.
    • Запись истории входящих сообщений в базу данных.
  • Адреса ЧПУ:
    • Страница контактов: /contact или index.php?module=contact.

7.14. smtp (Отправка почты через SMTP)

Плагин smtp заменяет стандартную отправку писем PHP-функцией mail() на отправку через защищенный внешний SMTP-сервер.

  • Особенности работы:
    • Интегрирует библиотеку PHPMailer в ядро CMS.
    • Настройки авторизации (SMTP Auth, логин, пароль), шифрования (SSL/TLS) и порта указываются в панели конфигурации плагина.
    • Позволяет обойти ограничения хостинга на отправку почты и снижает риск попадания писем в спам.

7.15. sitemap (XML Карта сайта)

Плагин sitemap автоматически генерирует динамический файл карты сайта sitemap.xml для индексации поисковыми системами.

  • Логика работы:
    • Сканирует структуру категорий, список активных страниц и разделов форума.
    • Формирует XML-структуру с учетом приоритета (priority) и даты последнего изменения страниц (lastmod).
  • Адреса ЧПУ:
    • Ссылка на карту сайта: /sitemap.xml или index.php?module=sitemap.

7.16. similarpages (Похожие публикации)

Плагин similarpages подбирает и выводит список похожих страниц для улучшения внутренней перелинковки.

  • Принципы подбора:
    • Поиск похожих материалов осуществляется на основе совпадения тегов (tags) или по нахождению страниц в той же категории.
    • Вывод результатов кэшируется для минимизации нагрузки на базу данных.
  • Используемые хуки:
    • page.tags — встраивание виджета похожих страниц в шаблон page.tpl.

7.17. thanks (Система благодарностей)

Плагин thanks позволяет пользователям благодарить авторов за полезные сообщения на форуме или публикации.

  • Таблица в БД (sed_thanks):
    • th_id (INT, Primary Key) — ID благодарности.
    • th_touser (INT) — ID пользователя, которого благодарят.
    • th_fromuser (INT) — ID пользователя, который благодарит.
    • th_date (INT) — UNIX-timestamp даты события.
    • th_item (INT) — ID сообщения на форуме (или страницы).
  • Используемые хуки:
    • forums.posts.tags — вывод кнопки «Спасибо» и списка поблагодаривших под сообщением.
    • ajax — асинхронное добавление благодарности (вызов /plug?ajx=thanks или index.php?module=plug&ajx=thanks).

7.18. uploader (Асинхронный загрузчик)

Плагин uploader расширяет Персональную файловую систему (PFS) возможностью асинхронной загрузки файлов перетаскиванием (Drag & Drop).

  • Особенности:
    • Реализован на базе AJAX-загрузки файлов, интегрирован с системным Upload API (подробнее об асинхронной загрузке см. в Главе 12. Персональная файловая система (PFS) и обработка медиа).
    • Отображает прогресс-бар загрузки каждого файла, автоматически генерирует превью для картинок.
  • Используемые хуки:
    • pfs.tags — вывод виджета Drag & Drop в окне управления файлами PFS.

7.19. whosonline (Мониторинг активности «Кто онлайн»)

Плагин whosonline фиксирует и отображает список пользователей и гостей, находящихся в данный момент на страницах сайта.

  • Таблица в БД (sed_online):
    • online_ip (VARCHAR) — IP-адрес посетителя.
    • online_user (VARCHAR) — никнейм (или «Гость»).
    • online_userid (INT) — ID пользователя (0 для гостей).
    • online_lastactive (INT) — UNIX-timestamp последнего действия.
    • online_location (VARCHAR) — текущий раздел сайта (определяется по GET-параметрам URL).
    • online_sublocation (VARCHAR) — дополнительная информация о нахождении (например, название темы форума).
  • Адреса ЧПУ:
    • Страница списка активных пользователей: /plug/whosonline или index.php?module=plug&e=whosonline.

7.20. skineditor (Редактор скинов в панели управления)

Плагин skineditor предоставляет администраторам инструмент для просмотра и редактирования файлов оформления скина непосредственно из панели управления.

  • Возможности:
    • Просмотр дерева файлов активного скина в каталоге skins/.
    • Редактирование HTML-разметки шаблонов (.tpl), стилей (.css) и JS-скриптов с подсветкой синтаксиса.
    • Автоматическое создание резервных копий редактируемых файлов перед сохранением.
  • Адреса ЧПУ:
    • Панель редактора: /admin/skineditor или index.php?module=admin&m=skineditor.

7.21. cleaner (Автоматическая очистка БД)

Плагин cleaner выполняет регламентные работы по поддержанию чистоты базы данных в фоновом режиме.

  • Особенности работы:
    • Запускается по хуку common.main с вероятностью, заданной в конфигурации (например, 1 раз на 100 просмотров страниц).
    • Удаляет устаревшие сессии гостей из таблицы sed_online.
    • Вычищает старые логи системного журнала sed_log старше установленного срока.
    • Очищает временные файлы кэша в директории datas/cache/.

7.22. Прочие встроенные плагины

  • adminqv (Quick View) — выводит виджеты сводной статистики сайта, последних логов системного журнала и быстрых настроек на главной странице панели управления.
  • letteravatar (Буквенные аватары) — автоматически генерирует аватары с первой буквой имени пользователя (для зарегистрированных участников, не загрузивших персональный аватар в профиле).
  • massmovetopics (Массовый перенос тем) — предоставляет модераторам форума инструмент пакетного переноса тем из одного раздела форума в другой в один клик.
  • otherpages (Другие страницы) — формирует список случайных или наиболее просматриваемых публикаций из выбранных категорий для вывода в сайдбаре шаблонов.
  • passrecover (Восстановление доступа) — обрабатывает запросы пользователей на восстановление забытых паролей с отправкой одноразового ключа подтверждения на привязанную почту.
  • robots (Редактор robots.txt) — позволяет динамически изменять содержимое файла robots.txt непосредственно из панели конфигурации плагина в админке.
  • slider (Слайдер изображений) — выводит адаптивный слайдер картинок на главной странице сайта на основе загруженных в PFS медиафайлов.
  • statistics (Статистика сайта) — собирает и выводит подробную общую статистику CMS (общее количество страниц, тем и сообщений форума, комментариев, пользователей, размер вложенных файлов).
  • syntaxhighlight (Подсветка синтаксиса) — подключает JavaScript библиотеку подсветки кода для красивого отображения тегов [code] в публикациях на страницах и форуме.
  • syscheck (Диагностика окружения) — выводит отчет о соответствии сервера системным требованиям Seditio (версия PHP, СУБД, наличие расширений mbstring, gd, права доступа на запись в каталоги datas/ и skins/).
  • ipsearch (Поиск по IP) — инструмент для администраторов в панели управления, позволяющий быстро определить страну, провайдера и другие данные пользователя по его IP-адресу с использованием внешних API-сервисов.

Оценка:
(0.00)

Пока комментариев нет