Skip to main content
Joomla explained
On this page
# Topics

Joomla explained

07 June 2026

Joomla is a free, open source content management system that powers everything from small business websites to large multilingual portals. It looks like "just a website tool" at first, but underneath it is a complete application framework with users, permissions, multilingual support, and a REST API.

This article explains what Joomla really is and how it fits together. It covers the basics for website owners and editors, the daily setup for administrators, and the technical details for developers. You will learn how a Joomla site is built, how the backend and frontend relate, how extensions work, and how Joomla 6 exposes content through the Web Services API.

Joomla is not one program. It is a framework that runs many small parts together.

The goal is simple: help you understand Joomla well enough to plan, run, and grow a site with confidence.

1. The Basics

1.1 What is Joomla?

Joomla is a content management system (CMS). A CMS lets you create and manage a website without writing HTML by hand. You log in, type your content, click save, and the system builds the public pages for you.

Three facts define Joomla:

  • It is free and open source, released under the GNU GPL license.
  • It is written in PHP and stores its data in a database such as MySQL or MariaDB.
  • It is maintained by a global volunteer community, not a single company.

1.2 What Can You Build With It?

Joomla is a general-purpose CMS. People use it for many kinds of sites:

Type of siteExample
Business website Company pages, services, contact forms.
News or magazine Many authors, categories, and tags.
Membership site Restricted content for logged-in users.
Multilingual portal One site in several languages.
Web application Custom components for bookings, catalogues, and more.

1.3 Joomla, WordPress, and Drupal

People often compare the three big open source systems. A short, fair summary:

  • WordPress is the simplest to start with and dominates blogs and small sites.
  • Drupal is the most flexible for very large, custom projects, but has a steeper learning curve.
  • Joomla sits in the middle. It gives you strong built-in features (multilingual, access control, custom fields) without needing many extra plugins.

The big advantage of Joomla is that a lot of power is already in the core. You do not need a long list of add-ons just to build a serious site.

Back to top

2. A Short History and the Version Cycle

2.1 Where Joomla Comes From

Joomla started in 2005 as a fork of an older CMS called Mambo. The name comes from the Swahili word Jumla, which means "all together". That idea still fits: Joomla brings many parts together into one system.

2.2 Major Versions

Joomla moves forward in major releases. Each major version may change how extensions and templates work:

YearVersionWhat changed
2005 Joomla 1.0 Fork of Mambo CMS.
2008-2012 Joomla 1.5 - 2.5 The classic era, very long-lived.
2012 Joomla 3.x Bootstrap front end, long support, very widely used.
2021 Joomla 4.x A big modern rewrite: new backend, Web Services API, namespaced code.
2023 Joomla 5.x Refinement, performance, and cleaner code.
2025 Joomla 6.x The current generation, building on the 4 and 5 architecture.

2.3 Why Versions Matter

Two practical rules follow from the version cycle:

  • Keep your site on a supported version. Old versions stop receiving security fixes.
  • Plan for major upgrades in advance, because some extensions need an update to keep working.

Minor updates (for example 6.0 to 6.1) are usually safe and quick. Major upgrades need a test run on a copy of your site first.

Back to top

3. The Building Blocks of a Joomla Site

Almost everything you do in Joomla uses the same small set of building blocks. Once you know these seven words, the rest of the system makes sense.

3.1 The Seven Core Concepts

ConceptWhat it is
Article A single piece of content, one page of text and images.
Category A container that groups articles and other items.
Menu A list of links that decides which pages exist and how visitors reach them.
Module A small block of content placed around the main page (login box, menu, latest news).
Component The main application that fills the central part of a page.
Plugin Background code that reacts to events and changes how Joomla behaves.
Template The design layer that controls how everything looks.

3.2 How a Page Comes Together

When a visitor opens a page, Joomla assembles it from these parts:

Menu item        decides which component and view to load
   |
Component        builds the main content (for example an article)
   |
Modules          add blocks around it (menu, search, login)
   |
Plugins          run during the process and can change the output
   |
Template         wraps everything in the site design

This is the single most important idea in Joomla: a menu item chooses a component, the template draws the frame, and modules fill the spaces around the content.

3.3 A Quick Example

Imagine a "News" page:

  • A menu item of type "Category Blog" points to the News category.
  • The component com_content reads the articles in that category.
  • A module shows the main menu on the left, another shows a search box.
  • The template decides colours, fonts, and the position of each block.
Back to top

4. Installing Joomla

4.1 What You Need

Joomla runs on a normal web server. The typical requirements are:

  • A web server: ApacheNGINX or OpenLiteSpeed
  • PHP in a supported version (Joomla 6 uses a recent PHP release).
  • A database: MySQL, MariaDB or PostgreSQL.
  • HTTPS, so that the website traffic of visitors and logins is encrypted.

This combination is often called a LAMP stack (Linux, Apache, MySQL, PHP).

4.2 The Installation Steps

A fresh install follows a short, guided process:

1. Download Joomla and upload the files to your server.
2. Create an empty database and a database user.
3. Open the site in your browser to start the web installer.
4. Enter the site name, the admin account, and the database details.
5. Joomla creates the tables and finishes the setup.

After install, Joomla asks you to delete the installation folder. This is a safety step, so nobody can run the installer again.

4.3 Sample Data

During install you can load sample data. This fills the site with example articles, menus, and modules. It is a good way to learn, because you can see how a working site is wired together. On a real project, install a blank site instead.

Back to top

5. The Backend: the Administrator Area

5.1 Two Sides of Every Joomla Site

Every Joomla website has two parts:

  • The frontend: the public website your visitors see.
  • The backend: the private control panel where you manage the site.

You reach the backend by adding /administrator to your site address:

https://example.test/administrator

5.2 The Main Menus

The backend top menu groups every task into a few clear areas:

MenuWhat you manage there
System Global settings, cache, users, templates, maintenance.
Content Articles, categories, custom fields, and the media library.
Menus The site menus and their menu items.
Components The larger built-in tools (contacts, banners, smart search, and more).
Users User accounts, groups, and access levels.

5.3 The Home Dashboard

After login you land on the Home Dashboard. It shows quick links, sample widgets, and important notices such as available updates. Treat the update notice as a job to do, not a message to ignore.

Back to top

6. The Frontend and Templates

6.1 What a Template Does

A template controls the look of your site: colours, fonts, spacing, and where each block goes. The same content can look completely different under two templates, because the content and the design are kept separate.

6.2 Module Positions

Templates define named module positions, such as sidebar-right or top-a. You then assign modules to these positions. This is how you decide, for example, that the login box appears top right and the menu appears on the left.

Template position "menu"     → Main Menu module
Template position "sidebar"  → Latest Articles module
Template position "footer"   → Copyright module

6.3 Site and Administrator Templates

Joomla has separate templates for the two sides of the site:

  • A site template for the public frontend.
  • An administrator template for the backend.

You can install several templates and switch the active one, or assign a different template to specific menu items.

6.4 Overrides

Templates can include overrides: copies of Joomla's default layout files placed inside the template. Overrides let you change how a component looks without editing Joomla's core files, so your changes survive updates. We return to this in the developer section.

Back to top

7. Extensions: How to extend Joomla's functionality

You extend Joomla by installing extensions. An extension is a package you upload in the backend. Knowing the different types saves a lot of confusion.

7.1 The Five Main Extension Types

TypeRolePrefix
Component A full application; fills the main page area. com_
Module A small block placed in a template position. mod_
Plugin Background code that reacts to events. plg_
Template The design layer of the site or backend. tpl_
Language A translation pack for the interface. lang

Two more types exist for developers and packagers:

  • Library: shared PHP code that several extensions can reuse, instead of each one shipping its own copy.
  • Package: a bundle that installs many extensions at once. A shop, for example, often arrives as one package that contains its component, modules, and plugins together.

7.2 How They Work Together

A real feature often uses several types at once. A shop, for example, might ship as:

  • A component for the product catalogue and checkout.
  • A module for the "shopping cart" block.
  • A plugin that adds product search results to Smart Search.

7.3 Installing Extensions Safely

You install extensions under System → Install → Extensions. Two safety rules matter:

  • Only install extensions from sources you trust. An extension runs with full access to your site.
  • Prefer extensions that are actively maintained and support your Joomla version.
Back to top

8. Users, Groups, and Access Control

8.1 The Three ACL Concepts

Joomla has a powerful Access Control List (ACL) system. It is built from three ideas that work together:

ConceptQuestion it answers
User Group Which group does this user belong to?
Access Level Which groups can see this item?
Permissions What can a group do (create, edit, delete)?

8.2 Default User Groups

Joomla ships with a ready-made set of groups, arranged as a tree. Each group inherits from its parent:

Public
 +-- Registered
 |    +-- Author
 |         +-- Editor
 |              +-- Publisher
 +-- Manager
      +-- Administrator
           +-- Super Users

A Super User can do everything. A Registered user can only see content reserved for logged-in visitors. You can add your own groups for any situation, such as "Paid Members" or "Staff".

8.3 Permissions Inherit From the Top

Permissions flow downward, from global settings to the single item:

Global Configuration
   +-- Component (for example com_content)
         +-- Category
               +-- Article

At each level a permission can be Inherit, Allowed, or Denied. A "Denied" high up cannot be overridden lower down. A useful rule: deny at the highest level you can, allow at the lowest level you must.

Back to top

9. Multilingual Joomla

9.1 Built Into the Core

One of Joomla's strongest features is that multilingual support is built in. You do not need a paid extension to run a site in several languages.

9.2 How It Works

A multilingual site uses a few connected parts:

  • Install one language pack per language.
  • Enable the Language Filter plugin.
  • Create content languages and tag each article, category, and menu with a language.
  • Add associations so Joomla knows that the English and Dutch versions of a page belong together.

9.3 The Language Switcher

A small Language Switcher module lets visitors jump between languages. Thanks to associations, it sends them to the matching translated page instead of back to the home page.

Back to top

10. Under the Hood (Developer View)

10.1 The Directory Layout

A Joomla install has a clear folder structure. The most important folders are:

administrator/   the backend application and admin parts of components
api/             the Web Services (REST) application
components/      the frontend part of each component
modules/         site modules
plugins/         all plugins, grouped by type
templates/       site templates
libraries/       the Joomla and Framework core code
language/        installed language packs
media/           public CSS, JavaScript, and images
images/          your uploaded media
cache/, tmp/, logs/   working folders

10.2 The Database

Joomla stores almost everything in the database. Table names use a configurable prefix, written as #__ in code (for example #__content for articles). The prefix lets several Joomla sites share one database safely.

A few core tables show the pattern:

TableStores
#__content Articles.
#__categories Categories for every component.
#__menu Menu items.
#__modules Modules and their settings.
#__extensions Every installed extension.
#__users User accounts (passwords are stored as hashes, never plain text).
#__user_usergroup_map Which user belongs to which group.
#__assets The ACL rules; this is the table behind every permission.

The #__assets table is the quiet engine of Joomla's access control. Every component, category, and article has a matching asset row that stores its permission rules as JSON, arranged as a nested tree so permissions can inherit from parent to child. When ACL "does not behave", the cause is almost always here.

10.3 The MVC Pattern

Joomla components follow the Model-View-Controller (MVC) pattern. This separates the work into three roles:

  • The Model talks to the database and holds the data.
  • The View turns that data into HTML, JSON, or another format.
  • The Controller reacts to the request and ties the two together.

Modern Joomla code is fully namespaced and uses a factory to load components. A typical example:

use Joomla\CMS\Factory;

$app     = Factory::getApplication();
$factory = $app->bootComponent('com_content')->getMVCFactory();
$model   = $factory->createModel('Articles', 'Site', ['ignore_request' => true]);
$items   = $model->getItems();

10.4 Service Providers and Dependency Injection

Modern Joomla extensions no longer rely on global access to build their objects. Each extension ships a service provider that registers its classes in a Dependency Injection (DI) container. Joomla then asks the container for what it needs, and the container wires the parts together.

For a component the entry point is one file:

com_example/
   services/
      provider.php      registers the component in the DI container
   src/
      Controller/
      Model/
      View/

The benefit is cleaner, testable code: classes declare what they depend on instead of reaching out for it. This is also why modern Joomla code follows PSR standards and can use Composer for third-party libraries.

10.5 The Database Abstraction Layer

Developers rarely write raw SQL strings in Joomla. Instead they use the Database Abstraction Layer and its query builder, which produces safe, portable queries:

$db    = $this->getDatabase();
$query = $db->getQuery(true)
    ->select($db->quoteName(['id', 'title']))
    ->from($db->quoteName('#__content'))
    ->where($db->quoteName('state') . ' = :state')
    ->bind(':state', 1, ParameterType::INTEGER);

$db->setQuery($query);
$rows = $db->loadObjectList();

The query builder quotes names, binds parameters, and adapts to the database in use. This prevents SQL injection and keeps the same code working on MySQL and MariaDB.

10.6 Events and Plugins

Joomla uses an event system driven by an event dispatcher. At key moments it fires an event, and plugins listen for it. For example, onContentPrepare fires before content is shown, so a plugin can change the text. This is how Joomla stays flexible without anyone editing the core.

10.7 Performance and Caching

Joomla can cache rendered output to make pages faster. It offers page cache, view cache, and module cache. Remember to clear the cache after you change content or settings.

On busy sites you combine Joomla's own cache with server-level tuning:

  • OPcache: a PHP setting that keeps compiled code in memory, so PHP does not recompile on every request.
  • Redis or Memcached: fast in-memory storage that Joomla can use for its cache and sessions instead of files.
  • A CDN: serves images, CSS, and JavaScript from servers close to the visitor.
  • Image optimization: smaller images mean faster pages and better scores.
  • Database indexing: on large sites, good indexes keep queries fast.
Back to top

11. The Web Services API (Headless Joomla)

11.1 Joomla as a Backend for Other Apps

Since Joomla 4, the core includes a Web Services API. This is a REST interface that lets other programs read and write Joomla data. You can use Joomla purely as a content backend for a mobile app or a separate frontend.

11.2 Authentication With a Token

API calls use a token instead of a normal login. You create a token for a user in the backend, then send it in a header:

curl -H "X-Joomla-Token: <your-token>" \
  https://example.test/api/index.php/v1/content/articles

11.3 Common Endpoints

The API mirrors the structure of the core components:

EndpointReturns
/v1/content/articles A list of articles.
/v1/content/articles/42 One article by id.
/v1/content/categories Content categories.
/v1/users User accounts.
/v1/menus Menus and menu items.

11.4 The Joomla CLI

Joomla also ships a command line tool for server tasks, such as clearing the cache or running scheduled jobs:

php cli/joomla.php core:check-updates
php cli/joomla.php cache:clean

This is useful for automation and for running tasks without opening the backend.

Back to top

12. Security and Maintenance

12.1 Updates Are Your First Defence

The single most important security task is to keep Joomla and all extensions up to date. Most hacked Joomla sites run outdated software with known holes. Joomla shows updates on the dashboard and can update itself with one click.

12.2 A Simple Maintenance Routine

How oftenTask
Weekly Check for Joomla and extension updates; apply them.
Weekly Confirm that a recent backup exists and works.
Monthly Review users, especially Super Users, and remove unused accounts.
Monthly Check the Action Logs for unusual activity.

12.3 Backups

A backup is a full copy of your files and database that you can restore after a problem. Always test that a backup actually restores; an untested backup is not a backup. Keep at least one copy at another location off the server.

12.4 Extra Protection

  • Use strong passwords and enable two-factor authentication for backend users.
  • Serve the whole site over HTTPS.
  • Add security headers (Joomla has a built-in HTTP Headers plugin).
  • Remove extensions you no longer use; unused code is still a risk.

12.5 What Joomla Protects You With by Default

A lot of security is already built into the core, so well-written extensions get it for free:

MechanismWhat it does
CSRF tokens Every form carries a one-time token, so attackers cannot forge requests on a user's behalf.
Input filtering Joomla cleans incoming request data through its input class instead of trusting it raw.
Password hashing Passwords are stored as strong one-way hashes, never as readable text.
Session protection Sessions are validated to reduce hijacking and fixation.

The key point for developers: use Joomla's input, form, and database tools. They apply these protections automatically. Hand-written shortcuts around them are where most extension vulnerabilities come from.

Back to top

13. SEO and Metadata

13.1 Search Engine Friendly URLs

Joomla can produce clean, readable URLs. In System → Global Configuration → Site you enable:

  • Search Engine Friendly URLs: turns index.php?option=com_content&id=42 into /news/joomla-6-released.
  • URL Rewriting: removes index.php from the address (needs server rewrite rules).

13.2 Metadata

Every article, category, and menu item can carry a meta title and meta description. Joomla also supports a global metadata setting and lets you control the robots directive per page (for example index, follow or noindex).

13.3 Built-in SEO Helpers

  • Categories and Tags create natural topic clusters and clean URL paths.
  • The Redirect component catches broken links and sends visitors to the right page.
  • Sitemap support is available through extensions, so search engines find every page.

Good URLs and honest metadata do most of the SEO work. The rest is good content.

Back to top

14. Common Mistakes and Pitfalls

14.1 Treating Joomla Like a Static Site

Symptom: an editor tries to build every page as one long article and pastes raw HTML for layout.

Fix: use menus, categories, and modules. Let Joomla assemble pages so the design stays consistent and easy to change.

14.2 Skipping Updates

Symptom: the site runs an old version for years, then gets hacked or breaks on a server upgrade.

Fix: update on a schedule. Test major upgrades on a copy first, then apply them to the live site.

14.3 Editing Core Files

Symptom: someone changes a Joomla core file to tweak a layout (called "core hack"), and the next update wipes the change.

Fix: use template overrides and plugins. Never edit core files directly.

14.4 Installing Too Many Extensions

Symptom: the site is slow, and every update is risky because dozens of add-ons might break.

Fix: use the core where you can. Each extra extension is more code to trust, update, and secure.

14.5 No Backup Before Changes

Symptom: an update or edit goes wrong and there is no way back.

Fix: take a tested backup before every update or large change.

Back to top

15. Best Practices

If you only remember a few things from this article, remember these:

  • Learn the seven building blocks first; the rest of Joomla follows from them.
  • Keep Joomla and every extension on a supported, updated version.
  • Build pages with menus, components, and modules, not with hand-written HTML.
  • Use template overrides instead of editing core files.
  • Prefer the strong core features over piling on extensions.
  • Take a tested backup before any update or major change.
  • Plan your categories, menus, and languages before you fill the site with content.
Back to top

16. Quick Reference

BACKEND       https://yoursite/administrator
NEW ARTICLE   Content → Articles → New
NEW MENU      Menus → Manage → Add Menu
ADD MODULE    System → Site Modules → New
INSTALL EXT   System → Install → Extensions
USERS & ACL   Users → Manage / Groups / Access Levels
TEMPLATE      System → Site Templates
SEF URLS      System → Global Configuration → Site
UPDATES       System → Update → Joomla / Extensions
API           /api/index.php/v1/...  with X-Joomla-Token
CLI           php cli/joomla.php <command>
Back to top

17. Summary

Joomla is far more than a tool for typing web pages. It is a complete system that brings many parts together:

  • Content: articles, categories, and tags.
  • Structure: menus and components that decide what each page does.
  • Design: templates, module positions, and overrides.
  • People: users, groups, and a deep access control system.
  • Reach: built-in multilingual support and an SEO-friendly router.
  • Integration: a REST API and a CLI for headless and automated use.

Because so much power lives in the core, a well-set-up Joomla site stays maintainable for years. The key is to learn how the parts fit together, keep everything updated, and let Joomla assemble your pages instead of fighting the system.

If you are planning a new Joomla site, migrating from an older version, or you suspect that your current setup holds you back, it pays to get the foundation right early. A clear structure today saves a lot of repair work later.

Back to top
Joomla explained
Peter Martin
Peter Martin

Joomla specialist and Linux admin for fast, secure and scalable websites.