Выпуск CMS «ГИРВАС» от 12 мая 2026 года на этапе разработки «Шуя».
Последние изменения
QueryBuilder: добавлена поддержка JOIN-ов, CASE-выражений и индексов
- добавлен Enum IndexType с типами индексов (BTREE, HASH, GIST, GIN, SPGIST, BRIN, FULLTEXT)
- добавлен класс ClauseJoin для поддержки JOIN-ов в SELECT-запросах (INNER, LEFT, RIGHT, FULL)
- реализована адаптивная генерация JOIN-условий для MySQL и PostgreSQL
- добавлен класс CaseExpression для построения CASE-выражений в SQL
- реализованы методы whenJsonLike() и whenJsonArrayContains() для JSON-поиска
- добавлен статический метод CaseExpression::sum() для суммирования CASE-выражений
- добавлен фабричный метод createCase() в QueryBuilder
- добавлен класс StatementCreateIndex для построения CREATE INDEX запросов
- добавлен класс StatementDropIndex для построения DROP INDEX запросов
- реализована поддержка UNIQUE, CONCURRENTLY, IF NOT EXISTS/IF EXISTS, частичных индексов с WHERE
- добавлены методы setStatementCreateIndex() и setStatementDropIndex() в QueryBuilder
- исправлено экранирование CASE-выражений в addSelections() для PostgreSQL
- в класс EntryCategory добавлено кеширование инициализированных данных (initData)
Добавлена встроенная поисковая система по записям
- в класс Entries добавлен метод search() для полнотекстового поиска с учётом локализации
- в класс Entries добавлен метод getCountBySearch() для пагинации результатов поиска
- реализовано ранжирование результатов поиска по релевантности с настраиваемыми весами полей
- реализован AND-поиск с разбиением запроса на слова и учётом знаков препинания
- добавлен класс PageSearch для отображения публичной страницы поиска
- исправлено URL-декодирование поискового запроса в PageSearch
Добавлена страница архива записей с навигацией по датам
- в класс Entries добавлены методы getByDateRange() и getCountByDateRange() для выборки за период
- в класс Entries добавлены методы getAvailableYears() и getAvailableMonths() для навигации по архиву
- добавлен класс PageArchive для отображения страницы архива записей
- реализована навигация по годам и месяцам с подсчётом количества записей
- метод getMonthName() изменён на публичный статический с получением названий из локали
- навигация архива buildArchiveNavigation() переписана на DOMDocument
- в Sitemap добавлены страницы архива (/archive, /archive?year=YYYY, /archive?year=YYYY&month=MM)
Добавлена поддержка дочерних категорий и иерархические хлебные крошки
- в класс Entries добавлены методы getByCategoriesIDs() и getCountByCategoriesIDs()
- в класс EntryCategory добавлен метод getChildCategoriesIDs() для рекурсивного получения дочерних категорий
- в класс EntryCategory добавлен метод getParentChain() для иерархии хлебных крошек
- обновлены методы getEntries() и getEntriesCount() с параметром includeChildren
- страница категории PageEntries отображает записи с учётом дочерних категорий
- хлебные крошки отображают полную иерархию от корня до текущей категории
Добавлено автоматическое создание индексов при установке CMS
- добавлен блок создания индексов на шаге 6 установки после генерации таблиц
- индексы для таблиц entries, entries_categories, entries_comments, pages_static
- индексы для таблиц users, users_sessions, forms_data, web_channels, metrics
- уникальные индексы на name, login, email
- для PostgreSQL добавлены GIN индексы на JSONB поля и частичный индекс для опубликованных записей
- все индексы создаются с IF NOT EXISTS, ошибки логируются без прерывания установки
Добавлен подраздел в разделе «Контент» в административной панели: «Контент-блоки»
- Внедрен новый подраздел «Контент-блоки» в раздел «Контент»
Добавлен встроенный seo-анализатор контента с поддержкой markdown
- реализован класс
SeoAnalyzerдля проверки пяти направлений: заголовок, мета-описание, ключевые слова, контент, url - анализатор проверяет вхождение ключевых слов в seo title, meta description, заголовки h2-h6, первый абзац и весь текст
- контроль дублирования: предупреждение, если seo-поля не заполнены и дублируют основные
- парсер markdown поддерживает json-атрибуты ссылок и изображений в синтаксисе cms «гирвас»
- поиск голых url с рекомендацией оформить как markdown-ссылки
- проверка alt-текста у изображений и rel=nofollow у внешних ссылок
- иерархия заголовков: h1 исключен из проверки контента, так как формируется темой
- цветовая индикация и полосы прогресса по каждому разделу
- блок рекомендаций с конкретными шагами для улучшения
- работа полностью на клиенте, без запросов к серверу
- локализация через _t() с php-совместимым форматом
%s,%d,%.nf - интерфейс интегрирован в боковую панель редактора страниц и записей;
Исправлены мелкие ошибки
Предыдущий выпуск: 0.2.9 «Воицы»
Комментарии