Jump to content

Joomla: Difference between revisions

From ZelocoreCMS Wiki
Publishing comprehensive CMS article
Β 
Full article
Β 
Line 1: Line 1:
{{Community_Page}}
{{CMS_Infobox
{{CMS_Infobox
| name Β  Β  Β  Β  = Joomla!
| name Β  Β  Β  Β  Β  = Joomla
| statusΒ  Β  Β  = Community
| developerΒ  Β  Β  = Open Source Matters Inc.
| type Β  Β  Β  Β  = Content Management System (CMS)
| type Β  Β  Β  Β  Β  = CMS / Web Application Framework
| license Β  Β  = GPL v2 or later
| license Β  Β  Β  = GNU General Public License v2
| language Β  Β  = PHP
| language Β  Β  Β  = PHP
| databaseΒ  Β  = MySQL / MariaDB / PostgreSQL
| releasedΒ  Β  Β  = 2005-08-17
| latest_verΒ  = 5.1
| latest_version = 5.x
| release_date = September 22, 2005
| website Β  Β  Β  = https://joomla.org
| website Β  Β  = https://www.joomla.org
| github Β  Β  Β  Β  = https://github.com/joomla/joomla-cms
| github Β  Β  Β  = https://github.com/joomla/joomla-cms
| starsΒ  Β  Β  Β  Β  = 4,500+
| demoΒ  Β  Β  Β  = https://launch.joomla.org
}}
}}


'''Joomla!''' (often stylized as '''Joomla''') is a free and [[Open Source CMS|open-source]] content management system ([[CMS]]) written in [[PHP]] and paired with a database engine such as [[MySQL]], [[MariaDB]], or [[PostgreSQL]]. Built on a model–view–controller ([[MVC]]) web application framework, Joomla can be used independently of the CMS to build powerful online applications. Joomla is maintained by a global community of volunteers and supported legally and financially by [[Open Source Matters, Inc.]]
'''Joomla''' is a free and open-source content management system written in [[PHP]].
Β 
As one of the most widely adopted open-source content management systems in web history, Joomla occupies a strategic middle ground between the user-friendly simplicity of [[WordPress]] and the high technical complexity of [[Drupal]]. It offers out-of-the-box native support for multilingual websites, advanced role-based access control ([[ACL]]), content workflows, and custom field structures without requiring third-party extensions.


== Overview ==
== Overview ==
Joomla is designed to power a wide variety of web publishing applications, ranging from small business websites and personal blogs to enterprise corporate portals, intranets, e-commerce stores, and community networks. Its architecture balances accessibility for non-technical content editors with structural modularity for developers and web architects.
Joomla was created in August 2005. It occupies a unique position in the CMS landscape β€” more flexible and powerful than a pure blogging platform, yet more accessible than a full enterprise framework. It is popular for community portals, social networking sites, and complex corporate websites.
Β 
Unlike basic blogging engines, Joomla organizes content using a structured paradigm composed of '''Articles''', '''Categories''', '''Tags''', and custom '''Fields'''. Content elements can be assigned to hierarchical multi-level category trees and presented across flexible front-end menu structures. Joomla's native routing engine allows site administrators to map specific menu items directly to component views, modules, or external application endpoints.
Β 
Key capabilities of Joomla include:
* '''Native Multilingual Support:''' Core support for translating articles, menu systems, modules, and administrative interfaces into over 70 languages natively.
* '''Granular Access Control (ACL):''' Comprehensive access control management allowing administrators to define precise permissions for viewing, creating, editing, and deleting content at global, component, category, or article levels.
* '''Modular Extension System:''' A multi-tiered architecture divided into Components, Modules, Plugins, Templates, and Languages.
* '''Headless Capabilities:''' Integrated OpenAPI-compliant JSON REST Web Services for headless CMS deployments and front-end framework integration.
Β 
== History ==
Joomla was created as a result of a fork of the '''Mambo''' CMS on August 17, 2005. At the time, the core development team of Mambo parted ways with Miro International Pty Ltd, which owned the Mambo trademark, due to disagreements regarding the governance and commercial steering of the open-source project.
Β 
The development community established a non-profit organization named '''Open Source Matters, Inc. (OSM)''' to manage the project's legal, financial, and organizational assets. The community held a name selection process, resulting in the choice of "Joomla!", which is derived from the Swahili word ''jumla'', meaning "all together" or "as a whole."
Β 
=== Major Release Timeline ===
* '''2005 (Joomla 1.0):''' Released on September 22, 2005, as a re-branded and patch-secured fork of Mambo 4.5.2.8.
* '''2008 (Joomla 1.5):''' A major ground-up refactoring that introduced modern PHP 5 object-oriented programming concepts, UTF-8 internationalization, a dedicated template override system, and the decoupled Joomla Framework (JFramework).
* '''2011 (Joomla 1.6 & 1.7):''' Introduced an upgraded Access Control List (ACL) system, unlimited nested category hierarchies, redirect management, and automated extension update notifications.
* '''2012 (Joomla 2.5):''' Established a long-term support (LTS) release cycle, introducing multi-database abstraction (support for PostgreSQL and Microsoft SQL Server), native search engine components, and automatic background updates.
* '''2012–2014 (Joomla 3.0 – 3.4):''' A landmark generation that introduced a mobile-responsive user interface for both the front-end and back-end administrative dashboard using the Bootstrap framework. Subsequent point releases added two-factor authentication (2FA), microdata structured data insertion, and tag management.
* '''2021 (Joomla 4.0):''' A comprehensive modern architectural overhaul featuring a rewritten codebase built on PHP 7.2+, Bootstrap 5, native Web Services REST API, workflow management engines, a revamped Media Manager with image manipulation, enhanced WCAG 2.1 AA accessibility compliance, and strict code optimization.
* '''2023–2024 (Joomla 5.0 & 5.1):''' Released with native support for PHP 8.2+, removal of legacy backward-compatibility code paths, dark mode administrative theme enhancement, native Schema.org integration, Font Awesome 6 support, asset pipeline performance improvements, and automated database schema validation.


== Key Features ==
== Key Features ==
* '''Joomla API Framework''' β€” Full API built into the core for headless use
* '''Access Control List (ACL)''' β€” Highly granular permission system
* '''Multilingual Support''' β€” Built-in multi-language content support
* '''Extension Architecture''' β€” Components, Modules, and Plugins


=== Native Multilingual Management ===
== Installation ==
Unlike many other CMS platforms that require external paid plugins or complex third-party extensions to serve multilingual content, Joomla provides built-in internationalization. Site administrators can install language packs, enable language filter plugins, assign content items and menu entries to specific languages, and associate equivalent pages across multiple languages for seamless language switching.
Joomla can be installed by downloading the official release package and uploading it to a standard web server with PHP and a database. A web-based wizard guides you through the setup process.
Β 
=== Advanced Access Control List (ACL) ===
Joomla features one of the most flexible native Access Control List systems among open-source CMS platforms. It distinguishes between '''User Groups''' (defining what actions users can perform, such as ''Create'', ''Delete'', ''Edit'', ''Edit State'', ''Edit Own'') and '''Viewing Access Levels''' (defining what content items, menu items, or modules users can see). Permissions inherit down category trees and can be customized per component, category, or individual item.
Β 
=== Integrated Content Workflows ===
Introduced in Joomla 4, the native Workflow component replaces basic binary state management (Published / Unpublished) with customizable execution pipelines. Organizations can establish multi-step review stages (e.g., ''Draft'' $\rightarrow$ ''Editorial Review'' $\rightarrow$ ''Legal Approval'' $\rightarrow$ ''Published'') and assign specific user roles and automated notifications to each stage transition.
Β 
=== Custom Fields System ===
Joomla core contains over 25 native field types (including text, list, media, color, SQL queries, radio buttons, gallery, user, and calendar). Custom fields can be attached to Articles, Categories, Users, and Contact forms, enabling rich structured content modeling directly inside the administrator interface without writing custom database code.
Β 
=== Native Web Services API ===
Joomla provides an OpenAPI-compliant REST API implementation. Core components (such as content articles, categories, users, tags, banners, and contact forms) automatically expose CRUD endpoints returning standard JSON payloads. This enables developers to use Joomla as a headless backend for mobile applications or modern Jamstack front-ends (built with React, Vue, Next.js, or Nuxt).
Β 
=== Media Manager & Asset Management ===
The integrated Media Manager supports drag-and-drop file management, directory organization, client-side image editing (crop, resize, rotate), automatic WebP image format generation, and cloud storage adapters (such as AWS S3 or OpenStack).
Β 
== Architecture ==
Β 
=== MVC Design Pattern ===
Joomla's codebase follows strict Object-Oriented Programming (OOP) paradigms and the Model-View-Controller (MVC) architectural pattern:
* '''Model:''' Encapsulates the application's data layer, business logic, and database queries. It manages state transitions and communicates with the database abstraction layer.
* '''View:''' Formats and presents the data retrieved from the Model. Views use layout files (typically `.php` templates) to generate HTML, JSON, or XML outputs.
* '''Controller:''' Intercepts user requests, processes inputs, instantiates Models, and invokes appropriate Views for rendering.
Β 
=== Dependency Injection & PSR Standards ===
Modern Joomla (versions 4 and 5) heavily utilizes Dependency Injection (DI) through a service container (`Joomla\CMS\Factory::getContainer()`). The core architecture adheres strictly to PHP Framework Interoperability Group (PHP-FIG) standards:
* '''PSR-4:''' Autoloading standard for class namespaces (`Joomla\CMS\...`).
* '''PSR-7 & PSR-17:''' HTTP message and factory interfaces for managing HTTP requests and responses.
* '''PSR-11:''' Container interfaces for object dependency resolution.
* '''PSR-14:''' Event dispatcher standards for lifecycle event hooks.
Β 
=== Database Abstraction Layer (Database API) ===
Joomla abstracts database interactions through its Database API, supporting MySQL, MariaDB, and PostgreSQL. Developers construct queries programmatically using dynamic query builders:
Β 
<source lang="php">
$db = Factory::getContainer()->get('DatabaseDriver');
$query = $db->getQuery(true);
Β 
$query->select($db->quoteName(['id', 'title', 'introtext']))
Β  Β  Β  ->from($db->quoteName('#__content'))
Β  Β  Β  ->where($db->quoteName('state') . ' = 1')
Β  Β  Β  ->order($db->quoteName('created') . ' DESC');
Β 
$db->setQuery($query);
$results = $db->loadObjectList();
</source>
Β 
This abstraction ensures cross-database compatibility, parameter sanitization, and protection against SQL injection vulnerabilities.
Β 
=== Event Dispatcher & Plugin System ===
Extensibility in Joomla relies on an event-driven architecture powered by the `EventDispatcher`. Plugins register event listener methods that trigger at specific points in the execution lifecycle, such as:
* `onContentBeforeSave`: Triggered before an article or content item is saved to the database.
* `onUserLogin`: Executed upon user authentication.
* `onAfterRender`: Fired after the application finishes rendering the complete page HTML.
Β 
== Extensions ==
Joomla's functionality is extended through five distinct types of extensions, each serving a specific structural role within the framework:
Β 
{| class="wikitable" style="width:100%;"
! Extension Type !! Structural Purpose !! Examples / Core Usage
|-
| '''Components''' || Large functional applications that render main body content. Includes front-end views and backend management interfaces. || `com_content` (Articles), `com_users` (User Management), `com_contact`, VirtueMart.
|-
| '''Modules''' || Light, flexible block extensions rendered in specific template positions around the main component output. || `mod_menu` (Navigation), `mod_breadcrumbs`, `mod_articles_latest`, `mod_login`.
|-
| '''Plugins''' || Background event handlers that intercept execution lifecycle events to modify data or add system capabilities. || Content filters, two-factor authentication, SEO canonical tag generators, Search indexers.
|-
| '''Templates''' || Presentation skins that define visual layout structure, responsive grids, CSS typography, and HTML positions. || Cassiopeia (Front-end default), Atum (Back-end default), third-party frameworks.
|-
| '''Languages''' || Translation packs containing INI language strings for localized front-end rendering and administration. || English (en-GB), Spanish (es-ES), German (de-DE), French (fr-FR).
|}
Β 
=== Notable Third-Party Extensions ===
* '''Akeeba Backup:''' The standard site backup, restoration, and disaster recovery solution for Joomla.
* '''VirtueMart / Hikashop:''' Complete e-commerce engines offering product catalog management, cart workflows, tax handling, and payment gateway integrations.
* '''RSForm! Pro / ChronoForms:''' Advanced form builders supporting multi-page forms, calculations, conditional logic, and CRM connections.
* '''JCE Editor (Joomla Content Editor):''' Enhanced WYSIWYG content editor providing advanced image handling, table management, and code editing features.
* '''Admin Tools:''' Security firewall suite offering IP blocking, file integrity checks, and administrative hardening.
Β 
== Templates ==
Β 
=== Layout Overrides System ===
One of Joomla's most praised architectural strengths is its native '''HTML Override System'''. Developers can override any core component or module HTML output without altering core source code.
Β 
By placing customized template view files within the active template directory:
<code>templates/YOUR_TEMPLATE/html/com_content/article/default.php</code>
Β 
Joomla automatically renders the template override instead of the default core file (`components/com_content/tmpl/article/default.php`), preserving layout customizations across core software upgrades.
Β 
=== Core Templates ===
* '''Cassiopeia:''' The default front-end template shipped with Joomla 4 and 5. Built using Bootstrap 5, CSS Grid, and Flexbox layouts, offering high performance, responsive design, and WCAG accessibility standards.
* '''Atum:''' The default back-end administration template. Designed with accessibility (WCAG 2.1 AA) as a top priority, featuring accessible color contrasts, keyboard navigation, responsive touch points, and dark mode theme switching.
Β 
=== Template Frameworks ===
Third-party developers frequently utilize template frameworks to construct complex responsive layouts with drag-and-drop page builders:
* '''Helix Ultimate / SP Page Builder:''' Developed by JoomShaper, offering layout builders, megamenu managers, and Google Fonts integration.
* '''Gantry 5:''' Developed by RocketTheme, featuring a flexible particle-based layout engine.
* '''YOOtheme Pro:''' Powerful visual page builder and theme engine providing dynamic content mapping and modern UI utility classes.
Β 
== Security ==
Security is a core focus of the Joomla project. The community maintains a dedicated organization called the '''Joomla Security Task Force (JSST)''', responsible for monitoring security reports, performing code audits, and releasing security patches.


=== Built-In Security Features ===
== API Reference ==
* '''Multi-Factor Authentication (MFA):''' Native support for Two-Factor Authentication using TOTP applications (Google Authenticator, Authy), YubiKey hardware tokens, and WebAuthn / Passkeys.
Joomla 4 and newer versions ship with a built-in API, allowing external applications to interface with Joomla content, users, and menus programmatically.
* '''HTTP Security Headers Manager:''' Built-in administration panel for configuring HTTP security headers, including Content Security Policy (CSP), Strict-Transport-Security (HSTS), X-Frame-Options, and Referrer-Policy.
* '''Strict Parameter Filtering:''' Centralized input filtering class (`JInput` / `Input`) enforcing strict type sanitization on all GET, POST, and COOKIE parameters.
* '''Prepared Database Statements:''' Database driver enforces parameterized queries to mitigate SQL injection vectors.
* '''Bcrypt & Argon2 Hashing:''' Password hashing utilizes modern cryptographic algorithms (Bcrypt and Argon2id) for secure password storage.


=== Recommended Hardening Practices ===
== Pricing ==
* Applying core and extension updates promptly via the automated administrative update notification system.
Joomla is '''completely free and open source'''.
* Setting server file permissions strictly (`755` for directories, `644` for files).
* Renaming or restricting access to the `/administrator` backend path using IP whitelisting or secondary HTTP authentication.
* Installing Web Application Firewalls (WAF) such as Akeeba Admin Tools.


== Comparison ==
== Pros & Cons ==
The table below compares Joomla with other major open-source content management systems:
{| class="wikitable"
Β 
! βœ… Pros !! ❌ Cons
{| class="wikitable sortable" style="width:100%;"
! CMS Platform !! Primary Focus !! Technical Complexity !! Native Multilingual !! Access Control (ACL) !! Global Market Share !! Core Language
|-
|-
| '''[[Joomla]]''' || Structured Portals & Web Apps || Medium || Native Core Support || Highly Granular (Native) || ~2.5% CMS market share || PHP
| Excellent ACL (access control) system || Steeper learning curve than some alternatives
|-
|-
| '''[[WordPress]]''' || General CMS & Blogging || Low to Medium || Via Extensions (WPML/Polylang) || Basic Roles (Expandable) || ~62% CMS market share || PHP
| Multilingual out of the box || Smaller extension ecosystem than WordPress
|-
|-
| '''[[Drupal]]''' || Enterprise & Complex Frameworks || High || Native Core Support || Highly Granular (Native) || ~2.0% CMS market share || PHP
| Built-in API capabilities || Some older extensions are unmaintained
|-
| '''[[Ghost]]''' || Modern Publishing & Newsletters || Low || Via Custom Themes || Basic Roles || <1% CMS market share || Node.js / JavaScript
|}
|}
== Community ==
The Joomla ecosystem is powered entirely by a worldwide community of volunteers, developers, designers, translators, and site managers:
* '''Open Source Matters, Inc. (OSM):''' The official non-profit entity providing legal, financial, and organizational oversight for the Joomla project.
* '''Joomla! Extensions Directory (JED):''' The official directory hosting thousands of community-verified free and commercial extensions.
* '''Joomla Community Magazine (JCM):''' Monthly online publication featuring articles, tutorials, case studies, and release updates from community contributors.
* '''JoomDays & User Groups (JUGs):''' Regional conferences and local meetup groups held globally to share knowledge, host workshops, and discuss platform development.


== External Links ==
== External Links ==
* [https://www.joomla.org Official Joomla! Website]
* [https://joomla.org Official Website]
* [https://docs.joomla.org Official Joomla! Documentation (JDocs)]
* [https://docs.joomla.org Documentation]
* [https://extensions.joomla.org Joomla! Extensions Directory (JED)]
* [https://github.com/joomla/joomla-cms Official Joomla! GitHub Repository]
* [https://launch.joomla.org Official Joomla! Free Demo Site]


[[Category:CMS_Platforms]]
[[Category:CMS_Platforms]]
[[Category:Open_Source_CMS]]
[[Category:Open_Source_CMS]]
[[Category:PHP_CMS]]
[[Category:Enterprise_CMS]]

Latest revision as of 22:22, 29 July 2026


Joomla
Status 🀝 Community
Type CMS / Web Application Framework
License GNU General Public License v2
Language PHP
Database
Latest Version
Release Date
Website Official Site
GitHub Repository

Joomla is a free and open-source content management system written in PHP.

Overview

Joomla was created in August 2005. It occupies a unique position in the CMS landscape β€” more flexible and powerful than a pure blogging platform, yet more accessible than a full enterprise framework. It is popular for community portals, social networking sites, and complex corporate websites.

Key Features

  • Joomla API Framework β€” Full API built into the core for headless use
  • Access Control List (ACL) β€” Highly granular permission system
  • Multilingual Support β€” Built-in multi-language content support
  • Extension Architecture β€” Components, Modules, and Plugins

Installation

Joomla can be installed by downloading the official release package and uploading it to a standard web server with PHP and a database. A web-based wizard guides you through the setup process.

API Reference

Joomla 4 and newer versions ship with a built-in API, allowing external applications to interface with Joomla content, users, and menus programmatically.

Pricing

Joomla is completely free and open source.

Pros & Cons

βœ… Pros ❌ Cons
Excellent ACL (access control) system Steeper learning curve than some alternatives
Multilingual out of the box Smaller extension ecosystem than WordPress
Built-in API capabilities Some older extensions are unmaintained