Top.Mail.Ru
  • CMS «GIRVAS»

    A flexible and free content management system that allows you to create a website of any direction.

    It's easier with us!

  • Absolutely free

    Stop using old and paid management systems! The era of new solutions has come - choose «GIRVAS»!

  • Karelian solution

    CMS "GIRVAS" was developed in the Republic of Karelia and is also included in the Register of Russian software by the Ministry of Digital Development of the Russian Federation (registry entry No. 25012 dated 11/27/2024).

0.3.0 "Shuya"

CMS "GIRVAS" Release dated May 12, 2026 at the "Shuya" development stage.

Latest Changes

QueryBuilder: added support for JOINs, CASE expressions, and indexes

  • added Enum IndexType with index types (BTREE, HASH, GIST, GIN, SPGIST, BRIN, FULLTEXT)
  • added ClauseJoin class for JOIN support in SELECT queries (INNER, LEFT, RIGHT, FULL)
  • implemented adaptive JOIN condition generation for MySQL and PostgreSQL
  • added CaseExpression class for building CASE expressions in SQL
  • implemented whenJsonLike() and whenJsonArrayContains() methods for JSON search
  • added static method CaseExpression::sum() for summing CASE expressions
  • added factory method createCase() to QueryBuilder
  • added StatementCreateIndex class for building CREATE INDEX queries
  • added StatementDropIndex class for building DROP INDEX queries
  • implemented support for UNIQUE, CONCURRENTLY, IF NOT EXISTS/IF EXISTS, partial indexes with WHERE
  • added setStatementCreateIndex() and setStatementDropIndex() methods to QueryBuilder
  • fixed CASE expression escaping in addSelections() for PostgreSQL
  • added caching of initialized data (initData) to EntryCategory class

Added built-in search engine for entries

  • added search() method to Entries class for full-text search with localization support
  • added getCountBySearch() method to Entries class for search results pagination
  • implemented search result ranking by relevance with configurable field weights
  • implemented AND-search with query splitting into words and punctuation handling
  • added PageSearch class for displaying the public search page
  • fixed URL decoding of search query in PageSearch

Added entries archive page with date navigation

  • added getByDateRange() and getCountByDateRange() methods to Entries class for period selection
  • added getAvailableYears() and getAvailableMonths() methods to Entries class for archive navigation
  • added PageArchive class for displaying the archive page
  • implemented year and month navigation with entry count
  • getMonthName() changed to public static method with names retrieved from localization
  • archive navigation buildArchiveNavigation() rewritten using DOMDocument
  • added archive pages to Sitemap (/archive, /archive?year=YYYY, /archive?year=YYYY&month=MM)

Added support for child categories and hierarchical breadcrumbs

  • added getByCategoriesIDs() and getCountByCategoriesIDs() methods to Entries class
  • added getChildCategoriesIDs() method to EntryCategory class for recursive retrieval of child categories
  • added getParentChain() method to EntryCategory class for breadcrumb hierarchy
  • updated getEntries() and getEntriesCount() methods with includeChildren parameter
  • category page PageEntries displays entries considering child categories
  • breadcrumbs display full hierarchy from root to current category

Added automatic index creation during CMS installation

  • added index creation block at installation step 6 after table generation
  • indexes for tables entries, entries_categories, entries_comments, pages_static
  • indexes for tables users, users_sessions, forms_data, web_channels, metrics
  • unique indexes on name, login, email
  • for PostgreSQL added GIN indexes on JSONB fields and partial index for published entries
  • all indexes are created with IF NOT EXISTS, errors are logged without interrupting installation

Added a subsection in the "Content" section of the admin panel: "Content Blocks"

  • Introduced a new subsection "Content Blocks" in the "Content" section

Added built-in SEO content analyzer with markdown support

  • implemented SeoAnalyzer class for checking five areas: title, meta description, keywords, content, url
  • the analyzer checks for keyword occurrence in SEO title, meta description, h2-h6 headings, first paragraph, and entire text
  • duplication control: warning if SEO fields are empty and duplicate the main fields
  • markdown parser supports json attributes of links and images in the CMS "GIRVAS" syntax
  • search for bare URLs with recommendation to format them as markdown links
  • check for image alt text and external links" rel=nofollow
  • heading hierarchy: h1 is excluded from content check as it is generated by the theme
  • color coding and progress bars for each section
  • recommendation block with specific steps for improvement
  • works entirely client-side, without server requests
  • localization via _t() with PHP-compatible format %s, %d, %.nf
  • interface integrated into the sidebar of the page and entry editor

Minor bugs fixed

Previous release: 0.2.9 "Voitsy"

Translations

Comments

There are no comments for this entry.