Joomla! is a well-established, open source Content Management System based on PHP. It is the second most used content management system on the Internet, after WordPress. Joomla! was first published in 2005 as an offshoot of a trademark called  "mambo." The project experienced massive growth and, today, there are several million websites built with Joomla! The community encompasses more than 600,000 active users. Similar to WordPress, Joomla! provides a self-hosted version for download and a hosted version for immediate website creation. The hosted version is free for 90 days. After that, you have to pay for the hosting.

For Content Managers

Joomla! provides a feature-rich and pretty complex control panel for content managers and administrators. The control panel provides a head navigation with deep control of components, modules, content, and users. For immediate content creation, you can use the sidebar on the left with buttons for articles, page structure, and configurations.

There is no differentiation between static pages and posts in Joomla! Instead, everything is an article. Depending on your template, there are two ways to give your page a more static character.

  1. You can mark an article as "featured" with a simple click. A featured article sticks on the start page or somewhere else, depending on your template logic.
  2. You can create a menu and assign an article as a menu item.

Another (secondary) content type can be created with modules. Modules are similar to extensions or plugins and they help you to create new content items. For instance, if you want to create a new sidebar item, then you can use the menu module. With that module, you can create a new menu item and assign it to a position within the template.

The concept of articles, menus, and modules is pretty flexible. And in theory, you can build a complex website without the help of a developer. But, on the other side, the concept is not very intuitive or self-explanatory. Compared to other content management systems, it can be a bit hard to find, create, and edit content in the backend without understanding the philosophy of the system. So be prepared to read some tutorials or to get some training before you create your first website or content with Joomla!

To make things a bit easier, Joomla! provides some kind of frontend editing feature. The frontend editing feature does not provide a real inline editing experience. Instead, you will find edit buttons for each content element that will direct you to a form field set that is embedded in the frontend design. But it is still nice and helpful to provide this kind of quick editing possibility for content managers.

For Developers

Joomla! is written in object oriented PHP and runs with MySQL, MS SQL, or PostgreSQL databases. The CMS is built upon the Joomla! MVC framework. For templating, Joomla! provides its own, including statements called "jdoc".

Joomla! provides a relatively easy installation routine that runs smoothly on live servers and on localhost. You can choose, if you want, to set your website offline after the installation, which is a pretty neat feature. In this case, you will see a login screen with a maintenance notice.

If you want to develop templates for Joomla!, you will mostly work with pure PHP, HTML, XML and some Joomla! specific tags, called jdoc statements.

The XML file holds all the basic information about the template, lists the files of the template, defines the modules, and contains other parameters.

With jdoc-statements, you can include modules and components into your template. The navigation is a typical module, the article is a typical component. You can develop these modules on your own or install existing modules with the module manager in the control panel.

PHP and HTML are the basic template languages. In PHP, you will mainly work with methods and properties of the global template object that you can reference with $this.

A typical snippet of a Joomla! template might look like this:

<?php if($this->countModules(&showcase&) : ?>
 <div class=&someclass&>
   <jdoc:include type=&modules& style=&none& name=&showcase& />
<?php endif; ?>
 <jdoc:include type=&component& />

The documentation looked a bit confusing to me because it does not seem to provide a quick and structured introduction to the basics of template development. But it is still helpful and you will find a lot of independent resources and tutorials for Joomla! on websites, YouTube, and elsewhere.

For Non-Coders

Due to its flexible concept, Joomla! can be used to create individual websites without any technical skills. But it can be pretty time consuming to familiarize yourself with the philosophy and the possibilities of the system.


The Joomla! core CMS is completely open source and free. Most of the additional resources for Joomla! are free, but you will also find many commercial resources and extensions in the Joomla! marketplace.

Recommendation: When to use it?

Joomla! is best used for flexible business websites of mid-range complexity. Joomla! does not support multi-site installations by default, so if your concept relies on that feature, you should look for another CMS. There are millions of websites powered by Joomla! Most of them are small brands and organizations, but there are also some better known brands, like Lipton Ice Tea or Fratelli. Just browse the official showcase website of Joomla! to get an impression.