Where Older Books and Tutorials Are Outdated

This content was generated with the assistance of AI and should be verified against the official Joomla documentation before being relied on in production.

This sub-section’s Joomla bibliography lists the reference material consulted while preparing these pages.

Joomla follows a two-year major cycle with four minor releases, and its backward-compatibility policy removes deprecated code in the second major after the deprecation. A book that was correct when it was printed therefore describes a platform that has since moved on, sometimes by two majors. This page was checked on 2026-10-30 against Joomla 6.2, which was released on 13 October 2026, with 5.x in its security-only period and 4.x and 3.x end of life. It lists, area by area, what older material says, what is true now, since which version, and where the official source is. It covers two books published by Packt in 2023: Developing Extensions for Joomla! 5 by Carlos M. Cámara Mora and Joomla! 4 Masterclass by Luca Marzo, and the advice that recurs in wiki pages, blog posts and forum answers from the Joomla 3 and 4 era. In the tables they are shortened to Developing Extensions and Masterclass. The books are cited only to show where they differ from current documentation; none of their text, figures or screenshots is reproduced, and the book structure is described in our own words. Their explanations of concepts such as the namespaced MVC layout, the Web Services API, access control, custom fields, menus and overrides remain a good introduction, and Developing Extensions is the best single book on extension development. Where any older source and the official documentation disagree, the official documentation wins.

Developing Extensions targets Joomla 5.0 and PHP 8.2; Masterclass targets Joomla 4.x (4.1 child templates and Scheduled Tasks, 4.2 multi-factor authentication) and states no PHP or database versions. Joomla 4.x reached end of life in October 2025. The timeline behind most rows is on Versions, Release Cycle and Support, and the code-level consequences of the 6.0 removals are on Upgrading Joomla 5 to 6 and Deprecations and Preparing for Joomla 7.

Versions and requirements

Older advice Current state Since Official source and site page

Masterclass treats Joomla 4 as the current release; Developing Extensions treats 5.0 as the current release.

Joomla 6.2 is the current release. Joomla 5.x is security-only (5.4.10 was the last bugfix release, security fixes continue until 2027-10-12), and 4.x and 3.x are end of life. A new project starts on 6.x.

6.0

Joomla Project Roadmap; Versions, Release Cycle and Support

Developing Extensions builds on PHP 8.2 and an update XML with the database minimums of Joomla 4.

Joomla 6 needs PHP 8.3.0 at minimum and recommends 8.4. The database table has three columns (minimum, supported, recommended): MySQL 8.0.13 and 8.4, MariaDB 10.4 minimum, 10.6 supported and 12.0 recommended, PostgreSQL 12.0 minimum, 14.0 supported and 17.6 recommended. The upgrade guide gives 10.6 and 14 as minimums, so check both pages before choosing a server. Microsoft SQL Server has not been supported since 4.0.

6.0

Joomla Manual: Technical requirements; Requirements and Hosting

Masterclass gives a market share of about 2.7 percent for Joomla.

W3Techs reported about 1.1 percent of all websites in October 2026. Cross-CMS figures are kept on one page so that they have one date.

n/a

CMS Comparison

Releases are unpredictable; a minor may raise the PHP minimum.

A major ships every two years in October of odd years with four minors, one every six months. The x.4 release is a bridge with no new features and the only start point for the next major. Minimum requirements rise only in the first release of a major, so no 6.x minor raises the PHP minimum, but 7.0 will. Downgrades and MySQL to PostgreSQL migrations are not supported.

n/a

Joomla Manual: Backward compatibility policy and Joomla Manual: Software release cycle

Installation

Older advice Current state Since Official source and site page

Installation is described for 3.x or 4.x: upload the files into the document root, run the installer, delete the installation folder.

The installer still runs from the web or the command line, but Joomla can also be served from a public folder that keeps configuration.php, libraries and the administrator code outside the web root. The installer shows an opt-out for Automated Core Updates.

5.0 and 5.4

Joomla User Guide: Hosting and Installation; Installation and the Public Folder

Masterclass and Developing Extensions cover requirements and installation in little detail and use docs.joomla.org/J4.x links.

The end-user documentation is the Joomla! User Guide at guide.joomla.org and the developer documentation is the Joomla! Developer Manual at manual.joomla.org. docs.joomla.org is a legacy wiki whose pages mark themselves obsolete, and launch.joomla.org links are dead.

n/a

Joomla User Guide; Joomla Manual

Using Joomla: content and site building

Older advice Current state Since Official source and site page

Masterclass describes the Joomla 4 article editor, with an image button that opens its own modal.

The image picker opens the Media Manager, the Article, Contact and Menu buttons share one link picker and Read More is also a toolbar button. The editor is TinyMCE 8 in the 6.2 source tree.

6.2

Joomla 6.2 release announcement; Articles

Masterclass describes the Media Manager as in 4.x with both the image path and the file path pointing to the images folder.

On a new installation the file path defaults to files and there is a per-root thumbnail switch. Media custom fields gained Audio, Video and Documents types in 6.1, and the accessiblemedia field and types attribute arrived in 6.1.

5.3 and 6.1

Joomla 6.1 release announcement; Media Manager

Masterclass lists the custom-field types of Joomla 4, with no Note or Number type.

Joomla 6.1 adds Audio, Video and Documents field types on top of the current set, so the field-type list of the book is incomplete.

6.1

Custom Fields

Masterclass describes child templates as new in Joomla 4.1 and Cassiopeia as the new default.

Child templates are the established way to customise Cassiopeia, and 6.0 ships cassiopeia_extended as a core child template.

4.1 and 6.0

Joomla User Guide: Child Templates; Child Templates

Masterclass refers to jQuery as a core library that tutorials may depend on.

Joomla core does not rely on jQuery for its own behaviour; script dependencies are declared in the Web Asset Manager, and ES5 assets were removed in 5.0.

5.0

Joomla Manual: Web Asset Manager; Web Asset Manager

Administration

Older advice Current state Since Official source and site page

Manual core updates: download the update package, upload it, run the update; or check for updates by hand each month. Masterclass stops at the notification panel of Joomla 4.

Core updates are TUF-verified from 5.1. Automated Core Updates (5.4 and 6.0) cover minor, patch and security releases: a joomla.org server triggers the site through the Joomla Update web-service endpoints, and the site does the work. They are on by default for new installs with an opt-out in the installer, and off for upgraded sites. They need a publicly reachable site, the Default update channel, Stable minimum stability and 5.4 or later. Major-version upgrades remain manual.

5.1 and 5.4

Joomla User Guide: Version Update; Updating Joomla and Automated Core Updates

Masterclass presents Akeeba Backup and CMigrator as part of the standard workflow.

Core ships no backup and no multisite feature. Akeeba and similar tools are useful third-party options, one choice among host tools, mysqldump and phpMyAdmin.

n/a

Joomla User Guide: Security best practices; Backups and Recovery

Masterclass describes the Atum dashboard and Guided Tours of 4.x and child templates as new; the colour scheme switch and Joomla 6 are not covered.

Atum is inheritable, so it can have child templates; it supports a colour scheme and dark mode, and a Joomla 6 administrator has a redesigned Help page (6.2).

4.1 and 6.2

Administrator Template Atum

Masterclass describes the TinyMCE plugin’s own valid and prohibited element settings as the place to control markup.

TinyMCE follows the Joomla text filter of the user’s groups by default. Begin with the Text Filters tab and use the plugin settings only for editor behaviour.

6.2

Joomla 6.2 release announcement; Global Configuration

Mail settings offer only the password methods.

SMTP can authenticate with OAuth 2.0 (XOAuth2) for Microsoft 365 and Google Workspace.

6.2

Joomla User Guide: Sending Email Using OAuth 2.0; Mail Templates and Email Settings

Security

Older advice Current state Since Official source and site page

Enable two-factor authentication (TFA) with the Google Authenticator or YubiKey plugin.

Multi-factor authentication has been core since 4.2 and replaced the TFA plugins. Methods include email, TOTP, WebAuthn, YubiKey and backup codes, and passkeys log in without a password.

4.2

Joomla User Guide: Multi-factor Authentication; Security Hardening, MFA and Passkeys

Protect forms with the Google reCAPTCHA plugin.

The core reCAPTCHA plugin was removed in 5.0. The core captcha in 6.1 is a Proof-of-Work plugin that needs no account or API and solves puzzles silently; third-party captcha extensions are also available.

5.0 and 6.1

Joomla 6.1 release announcement; Security Hardening, MFA and Passkeys

Web Services API access with a Basic Auth plugin.

On fresh 6.2 installs the API token plugin is enabled and the Basic Auth API plugin is disabled.

6.2

Web Services API

Extension updates all look the same in the list.

Developers can flag a release as a security update with a severity from None to Critical; flagged updates show on the Extensions update page and on the dashboard.

6.2

Joomla 6.2 release announcement; Update Servers and the JED

Wiki security tutorials call JRequest::getVar(), JFactory::getDbo(), $db->quote() and JSession::checkToken().

JRequest was removed long ago, the J* names work only through BC6, and the replacements are Input with a filter, getDatabase() with bind(), and Session::checkToken().

3.x to 6.0

Joomla Manual: Removed and Backward Incompatibility (5.4 to 6.0); Security in Extensions

SEO

Older advice Current state Since Official source and site page

Masterclass recommends keyword lists and keyword density in the Metadata tab.

Search engines have ignored the keywords tag for many years and Joomla core does not use the field. Write a short, unique meta description per item and use Robots (noindex, follow) for pages such as hidden search results.

n/a

Menus and Menu Items

Templates

Older advice Current state Since Official source and site page

Template examples use JFactory, JHtml, JText and $doc->addScript(), often with jQuery.

Use namespaced classes and the Web Asset Manager. The aliases are no longer defined on a new Joomla 6 install.

6.0

Joomla Manual: Web Asset Manager; Templates and Template Styles

A single type="head" jdoc include is shown in every template.

It still works, but a new template declares the assets in joomla.asset.json and loads them through the Web Asset Manager.

4.0

Building a Template from Scratch

Edit templates/cassiopeia/css/template.css or copy Cassiopeia under a new name.

Both are lost on update or create a copy to maintain. Put overrides in the media folder of a child template.

4.1

Child Templates

Third-party frameworks and page builders are the usual way to design a site.

Their Joomla 6 support arrived at different times and must be checked one by one. A release that supports only Joomla 4 or 3 is obsolete.

n/a

Template Frameworks and Page Builders

The books do not describe colour schemes and dark mode.

Templates read the data-color-scheme attribute and the joomla:color-scheme-change event.

5.1

Joomla Manual: Color scheme support; Colour Modes, RTL and Accessibility

Extension development

Older advice Current state Since Official source and site page

Developing Extensions shows a web services plugin that extends CMSPlugin, registers routes in onBeforeApiRoute(&$router) and is not namespaced.

Plugins use services/provider.php and an Extension class that extends CMSPlugin and implements SubscriberInterface; routes are registered with the concrete BeforeApiRouteEvent.

5.0

Joomla Manual: How plugins work; Extending the Web Services API

Event handlers read Event::getArgument() arrays.

Use the concrete event classes with getters, for example ContentPrepareEvent. Captcha, editor and editors-xtd plugins use the setup events.

5.0

Joomla Manual: Plugin events; Plugin Development and Events

Plugins read $this->db and $this->app as if they were declared properties.

Use getApplication(), getDatabase() and the Aware traits. Joomla 7.0 removes the auto-detection of the $app and $db plugin properties.

5.x

Deprecations and Preparing for Joomla 7

Factory::getLanguage() and get('DatabaseDriver') retrieve services.

Take the language from the application and the database from the container or DatabaseAwareTrait. Prepared statements use bind() and whereIn().

4.0

Joomla Manual: Database; Database API

The query builder translates one query for every database, so install SQL is portable.

The builder does not make raw install SQL portable: MySQL and PostgreSQL still need their own files.

n/a

Installer Scripts and SQL Updates

An installer script is a plain class that extends nothing.

Use InstallerScriptInterface with InstallerScriptTrait, optionally returned from services/provider.php.

6.0

Installer Scripts and SQL Updates

Entry files begin with defined('JPATH_PLATFORM') or die; and use \Joomla\CMS\Input.

JPATH_PLATFORM is no longer defined; use defined('_JEXEC') or die;. Use \Joomla\Input. \Joomla\CMS\Filesystem is moved to BC6 for removal in 7.0. AdminModel::getItem() returns stdClass, and views lose $this->db.

6.0

Joomla Manual: Removed and Backward Incompatibility; Error Handling and Legacy APIs

Errors are reported through setError().

Use exceptions. setUseExceptions(true) has been the default since 5.4, core drops setError() calls in 7.0 and the trait goes in 8.0.

5.4

Error Handling and Legacy APIs

Console commands are CLI application scripts built on CliApplication.

The CMS BaseApplication and CliApplication are gone; write a console plugin.

6.0

Joomla Manual: Removed and Backward Incompatibility; Console Command Plugins

Testing

Older advice Current state Since Official source and site page

Developing Extensions says Joomla core uses Codeception for its acceptance tests.

Core system tests are Cypress specs, and the Manual’s setup page uses npx cypress open. Do not run vendor/bin/codecept run against a checkout.

4.x

Joomla Manual: Setup your testing environment (System Testing); Testing Extensions

Test code calls JFactory::getDbo().

Those APIs are covered by BC6 only and are removed in 7.0.

6.0

Deprecations and Preparing for Joomla 7

Code samples follow the older Joomla coding style.

The coding style has been PSR-12 since 4.2.

4.2

Coding Standards and Static Analysis

Distribution

Older advice Current state Since Official source and site page

Developing Extensions shows an update XML whose targetplatform pattern stops at 5.0.

The pattern is a regular expression matched against the running version, so such a file hides every update from 5.1 and from 6. Cover the supported range and state <php_minimum>8.3</php_minimum>.

5.1 and 6.0

Joomla Manual: Update server; Update Servers and the JED

Docker tutorials start from joomla:3.9-php7.4-apache or joomla:4 images.

Joomla 6 needs PHP 8.3 or later and uses the php8.x-apache tag structure.

6.0

Local Development with Docker; Build and CI for Extensions

Changed since older tutorials

The books and wiki pages above share a short list of changes that account for most of what no longer works.

You may read Do this now

JFactory, JText and other J* aliases

Namespaced classes (Factory, Text). On 6.x the aliases exist only in the Behaviour - Backward Compatibility 6 plugin, which is off by default on new installs and is removed with Joomla 7.

Generic Event objects and Event::getArgument()

Concrete event classes in a SubscriberInterface plugin (5.0 and later)

$this->app and $this->db in a plugin

getApplication() and getDatabase() with the Aware traits

Codeception

Cypress for system tests

docs.joomla.org

The Joomla! User Guide (guide.joomla.org) and the Developer Manual (manual.joomla.org)

Two-factor authentication (TFA)

Multi-factor authentication (MFA, 4.2) and passkeys

TinyMCE 6 with its own element lists

TinyMCE 8, following the Joomla text filter by default (6.2)

reCAPTCHA

The Proof-of-Work captcha (6.1)

Download and upload a core update by hand

Automated Core Updates (5.4 and later), with TUF verification since 5.1

Joomla 4

Joomla 5.4 as a bridge and Joomla 6.x as the target

Generic warning signs in older tutorials

A tutorial is probably out of date when it:

  • targets Joomla 2.5, 3 or 4, or PHP below 8.3;

  • links to docs.joomla.org, docs.joomla.org/J4.x or launch.joomla.org pages;

  • uses JFactory::getDbo(), JRequest, JLoader::register() or JPATH_PLATFORM;

  • shows a plugin that extends CMSPlugin with no SubscriberInterface, or reads getArgument();

  • mentions Codeception, TFA, the reCAPTCHA plugin or the Joomla 4 pre-update check as the safe way to upgrade;

  • recommends a template framework or page builder without a Joomla 6 release.

When in doubt, check the date of the source against the timeline on Versions, Release Cycle and Support and confirm the fact in the official documentation below.