Seditio 185 — это релиз, в котором движок получил чёткую и последовательную модульную архитектуру. Ядро теперь явно различает полноценные модули, их отдельные части и обычные плагины; пути к файлам модулей хранятся в базе и реально используются при загрузке кода; значительная часть функциональности, которая раньше была «вшита» в ядро, вынесена в подключаемые расширения. Всё это сделано не ради красоты архитектуры, а чтобы сайтом было проще управлять, дополнять и обновлять.
Архитектура ядра и база данных
Динамические пути модулей. В таблице sed_core появились два новых поля: ct_path — путь к каталогу модуля относительно корня сайта, и ct_admin — признак того, что модуль относится к административному сегменту. ct_path — это не просто пометка: именно по этому полю движок в system/common.php находит и подключает API-файл модуля (inc/{code}.functions.php) при каждом запросе. ct_admin используется в административной панели для построения меню модулей и маршрутизации внутри админки. При обновлении с 180 эти поля заполняются автоматически через патч и апгрейд-скрипт.
Чёткое разделение модулей и плагинов. В таблицу sed_plugins добавлены: pl_module — признак того, что строка относится к части модуля, а не к отдельному плагину; pl_version — версия расширения; pl_dependencies — JSON с зависимостями (какие модули и плагины должны быть активны); pl_lock — запрет на отключение критичных частей. На основе этих данных работают функции sed_module_active(), sed_module_part_active(), sed_plug_active() и разбор зависимостей — единый слой проверки того, что нужная часть системы реально доступна, прежде чем использовать её.
Производительность. На sed_config добавлен индекс по (config_owner, config_cat) — это ускоряет выборку настроек при каждом запросе к сайту. Аналогичный индекс добавлен на sed_plugins по полю pl_module.
Меню. В таблице меню появилось поле menu_cssclass: CSS-класс пункта меню теперь задаётся прямо из админки, без правки шаблонов.
Патчи версий. Функция sed_apply_patches() в functions.php последовательно применяет файлы из system/upgrade/patch/ при переходе между версиями — если в datas/config.php включён $cfg['patchmode']. Для перехода 180 → 185 это patch_180_185_01.php: новые столбцы, индексы, первичное заполнение ct_path и ct_admin.
Кэш. Внутренний кэш теперь восстанавливается до подключения API модулей — это значит, что закешированные структуры (например, списки секций форума) уже доступны в памяти, когда к ним обращаются файлы функций. Отдельно в апгрейд-скрипте: поле c_value в таблице кэша расширяется до MEDIUMTEXT, чтобы в неё помещались объёмные сериализованные блоки. После паузы или включения модуля автоматически пересобираются правила ЧПУ и сбрасывается кэш.
Маршрутизация. Старые ссылки вида module=list автоматически перенаправляются на module=page — отдельная точка входа для списков устранена, они объединены с модулем страниц.
Администрирование и конфигурация
Настройки модулей в конфигурации (owner=module) работают по тем же правилам, что и настройки ядра: есть загрузка языков через sed_langfile(), сброс к умолчаниям из *.setup.php и добавление в БД отсутствующих ключей конфигурации из файла установки — удобно после обновления, если в новой версии модуля появились новые опции.
Управление модулями стало точнее: пауза и включение (sed_module_pause()), при необходимости — блокировка полной паузы через ct_lock (задаётся в *.setup.php полем Lock_module). Отдельные части модуля можно включать и отключать независимо — если конкретная часть не помечена pl_lock.
Модуль пользователей — особый случай. Он отмечен Lock_module=1: его нельзя деинсталлировать и нельзя целиком поставить на паузу. Зато отдельные некритичные части модуля переключаются. Часть авторизации (users.auth) дополнительно помечена Lock=1 — она не отключается никогда, чтобы вход и контроль прав всегда оставались рабочими.
Дополнительно в админке: иконки модулей, меню расширений в шапке панели, точечные доработки referer и редиректов, синхронизация «осиротевших» прав, выравнивание дефолтов прав доступа между форумами и страницами.
Плагины: что вынесено из монолита
- RSS и XML sitemap стали отдельными плагинами с собственными
*.setup.phpи конфигурацией: можно выборочно включать ленты по типам контента (страницы, комментарии, форумы), настраивать лимиты, приоритеты иchangefreqдля карты сайта. - Комментарии — плагин с деревом ответов: настраивается максимальная глубина вложенности и лимит веток на страницу, оптимизированы SQL-выборки и шаблоны.
- Теги — полноценная подсистема: работает для страниц и форумов, есть облако с сортировкой и лимитами, автодополнение при вводе, вывод облака на главной, в категориях, под материалом и в форуме, параметры noindex для страницы поиска по тегам.
- Корзина (trashcan) — логика вынесена в плагин, связанные функции убраны из ядра.
- Рейтинги, Captcha, thanks и ряд других расширений обновлены под общую модель хуков, включая хуки на удаление страниц, опросов и другого контента — чтобы внешние расширения корректно реагировали на события ядра.
- Языковые файлы плагинов подключаются единообразно через
sed_langfile()— меньше дублирования путей.
Модули контента и форумов
- Страницы (
page): улучшены фильтры и сортировки в менеджере, поддержкаreadmoreв листингах, доработаны шаблоны, SEO/мета, версия для печати; аккуратная обработка хвостового слэша в URL страниц. - Форумы: настраиваемая максимальная глубина вложенности подфорумов (
maxforumdepth), теги в темах, доработки шаблонов, оптимизация работы со списками (батч-обработка тегов, хуки в листингах). - PFS (личная файловая зона): добавлена поддержка аудиофайлов.
- Медиа: более единый подход к генерации и выводу миниатюр в разных модулях.
Пользователи, безопасность и формы
- Регистрация и профиль: строгая проверка формата email при регистрации и изменении, корректная работа настройки
useremailchange, улучшена обработка дополнительных полей анкеты. - Пароли: подсказки по надёжности пароля при вводе; новая опция
strictpasschangeв настройках модуля — требует подтверждения текущего пароля перед установкой нового. - Безопасность: нормализация IP-адресов в банлистах, CSRF-токен в метатегах страницы, доработки проверки referer в критичных точках.
- Даты: формат
d.m.Yприведён к единому виду в настройках и выводе.
Интерфейс, скины и активы
- jQuery 1.x удалён из дистрибутива как устаревшая тяжёлая зависимость; логика автодополнения перенесена в общий
app.js. - Доработки JS и CSS в административной панели и фронтенде: приоритеты подключения CSS, улучшения загрузчика файлов (uploader, drag-and-drop), окружение CKEditor.
- Обновлены шаблоны форумов, страниц, опросов, меню (с учётом
menu_cssclass), административных инструментов syscheck и skineditor.
Обновление с Seditio 180
- Сделайте резервную копию базы данных и каталога
datas/(включаяdatas/config.php). - В админке отключите плагины — включать будете потом по одному, проверяя сайт.
- Замените файлы движка: при чистой установке удалите всё кроме
datas/, залейте архив 185. Кастомные скины вskins/и правки вplugins/— сохраните отдельно заранее, они не вdatas/. - В
datas/config.phpвыставьте$cfg['patchmode'] = TRUE. Это нужно дляsed_apply_patches(): патчpatch_180_185_01.phpдобавит новые столбцы, индексы и заполнит пути модулей. Редактироватьsystem/functions.phpдля этого не нужно. - Откройте сайт, войдите как администратор, перейдите в Admin → Upgrade и запустите апгрейд базы 180 → 185. Скрипт последовательно обработает таблицы: кэш, форумы, комментарии, меню, справочники, пути модулей и связанные данные.
- После успешного апгрейда очистите кэш, проверьте активные модули и плагины (особенно RSS, Sitemap, Comments, Tags, Trashcan), включите расширения.
- Проверьте скины: перенос списков на
module=page, новые блоки тегов и комментариев могут потребовать правок в TPL.
После стабилизации patchmode можно вернуть в FALSE.
Итог
Seditio 185 выстраивает последовательную связку ядро ↔ модули ↔ плагины: каждый уровень теперь имеет явное место в БД, понятные правила загрузки и контроль зависимостей. Крупные возможности — RSS, sitemap, комментарии, теги, корзина — живут как самостоятельные расширения. Форумы, страницы и пользовательский модуль получили точечные улучшения. Переход с 180 поддержан через patchmode и Admin → Upgrade в панели.
Size: 5712KB, downloaded 6 times
Комментарии: (0)