JohnCMS 9.9

Мы рады представить JohnCMS 9.9 — один из самых насыщенных релизов ветки 9.x. В этой версии появились четыре новых модуля, визуальный редактор CKEditor пришёл на смену BB-кодам во всех разделах сайта, а внутренняя архитектура сделала большой шаг вперёд: новый компонент пагинации, именованные маршруты и продолжение перевода модулей на более современную архитектуру.

Новые модули

Коллекции

Модуль «Коллекции» позволяет создавать произвольные каталоги: разделы, настраиваемые поля и элементы. Структуру данных вы определяете сами, а управление полностью выполняется через админ-панель. Это универсальный инструмент для каталогов организаций, справочников, портфолио и любых других структурированных списков. Модуль пока довольно новый и ещё многое в нем не реализовано. Постепенно он будет развиваться.

Согласия на обработку персональных данных

Модуль «Согласия» помогает привести сайт в соответствие с требованиями законодательства о персональных данных в разных странах:

  • справочник согласий с поддержкой контекста, языка, версии, флагов обязательности и активности;
  • журнал принятых согласий с фиксацией пользователя, версии, IP-адреса и даты;
  • чекбоксы активных согласий на форме регистрации — без отметки обязательных пунктов регистрация не пройдёт;
  • публичная страница с текстом каждого согласия;
  • программный сервис ConsentService для интеграции согласий в собственные модули.

В заголовках согласий разрешены ссылки на другие страницы — например, «Ознакомлен с Публичной офертой и даю Согласие на обработку персональных данных».

Cookie-баннер и согласие на аналитику

В связке с модулем «Согласия» появился настраиваемый cookie-баннер: включение, мультиязычный текст и версия для повторного показа настраиваются в админке. Счётчики аналитики получили флаг «Загружать только после согласия на cookie» — такие счётчики не выполняются, пока посетитель не согласится на принятие cookies (это сделано для соблюдения законодательства различных стран).

Контакты

Новый модуль «Контакты» — это публичная страница с контактной информацией (email, телефон, адрес, часы работы, соцсети и мессенджеры), микроразметкой Schema.org и формой обратной связи. Обращения сохраняются в базе и доступны в админке со списком, фильтром по статусу и уведомлениями на e-mail. Форма защищена капчей для гостей, honeypot-полем, проверками CSRF, флуда и бана, а также интегрирована с модулем «Согласия».

 

CKEditor вместо BB-кодов

В версии 9.8 полноценный визуальный редактор появился на форуме, а теперь он доступен везде:

  • Загрузки — формы добавления, редактирования и импорта файлов;
  • Библиотека — создание и редактирование статей;
  • Личные сообщения — форма отправки;
  • Комментарии — в загрузках, библиотеке и фотоальбомах.

Для перевода существующих текстов из BB-кодов в HTML добавлены одноразовые консольные команды: downloads:convert-bbcode, library:convert-bbcode, mail:convert-bbcode, а также downloads:convert-comments, library:convert-comments и album:convert-comments.
 

Загрузки и Библиотека: ЧПУ и глубокая переработка

Модули «Загрузки» и «Библиотека» значительно переписаны с полноценной интеграцией в роутер:

  • человекопонятные URL на основе slug-ов для разделов, файлов и статей;
  • 301-редиректы со старых адресов вида ?id= — позиции в поисковых системах не пострадают;
  • улучшенный полнотекстовый поиск в библиотеке с защитой от XSS и операторных инъекций;
  • команды downloads:generate-slugs и library:generate-slugs для генерации slug-ов из существующих названий.

 

Обслуживание из админ-панели

В админке появилась страница «Обслуживание»: теперь консольные команды можно запускать прямо из панели управления. Быстрые команды (например, очистка кэша) выполняются сразу, а долгие (например, генерация sitemap) ставятся в очередь и выполняются планировщиком в фоне.

 

Для разработчиков

  • Именованные маршруты в формате module.action и автоматическое обнаружение маршрутов модулей из modules/*/config/routes.php. Файл config/routes.local.php объявлен устаревшим.
  • Новый компонент пагинации Johncms\Http\Pagination с канонизацией URL страниц: редиректы с ?page=1, некорректных и выходящих за диапазон номеров. На него переведены все постраничные списки системы, а устаревший форк johncms/johncms-pagination удалён.
  • Value-object PageMeta для формирования title и meta description с автоматической подстановкой номера страницы при пагинации.
  • Продолжается перевод модулей на новую архитектуру: личные сообщения, авторизация и регистрация, гостевая, уведомления, редиректы, смена языка, «Кто на сайте», страницы помощи. Гостевая покрыта юнит-тестами.
  • Для форума добавлена команда forum:normalize-message-links, которая переписывает устаревшие ссылки в текстах постов на канонические адреса.
  • Удалён неиспользуемый модуль RSS.

 

Исправления

  • Загрузки: исправлена обработка путей при сканировании директорий и очистке осиротевших файлов.
  • Админка: настройки теперь применяются сразу после сохранения — кэш DI-контейнера сбрасывается автоматически.
  • Страница 404: текст ошибки и заголовок теперь корректно переводятся на язык сайта.


Обновление с предыдущей версии

При обновлении с 9.8 выполните скрипты создания таблиц новых модулей:

  • install/install_collections.php — модуль «Коллекции»;
  • install/install_consent.php — модуль «Согласия»;
  • install/install_contacts.php — модуль «Контакты»;
  • install/update_counters_cookie_consent.php — флаг cookie-согласия для счётчиков.

Затем при необходимости запустите одноразовые команды миграции: генерацию slug-ов для загрузок и библиотеки и конвертацию BB-кодов в HTML (список команд — в разделах выше). Названия языков в переключателе обновятся после обновления списка языков в админке.

Полная инструкция по обновлению доступна здесь: https://docs.johncms.com/nachalo-raboty/obnovlenie-s-versii-9.8

Полный список изменений можно посмотреть здесь: CHANGELOG

Инструкция по установке и архив для скачивания доступны здесь: JohnCMS 9.9 скачать
Опубликовано: 14 июл 2026 г., 18:55
Автор: Simba
Теги: johncms, cms, php, johncms 9.9
Рейтинг:
31
Вы не вошли в систему. Вы должны авторизоваться для комментирования.