Such is its popularity and usefulness over the last decade that Joomla! is considered one of the top-ranked open-source CMSs across the globe at the moment. Since its inception from the Mambo CMS, over the last ten plus years, it has improved so much that it’s no wonder that there are plenty of awards in its kitty already and still counting.
Specifically, if you’re in the field of web development, no matter the technology you’re dealing with, it’s impossible to get away from the word Joomla! If it’s so, I’m sure that you belong to some other planet! It may sound a bit overwhelming, but I can assure you that it’s something more than worth looking at if you haven’t done that yet for your next content management solution. In fact, it’s more than just a CMS—we’ll discuss later in this article what Joomla! is capable of.
In this article, we’ll thoroughly discuss what Joomla! is and how it could be useful for your web-based projects. Starting with a glimpse of the basic CMS, we’ll go through the features of Joomla! throughout the article, and in the last section I’ll leave you with some useful resources with references.
What Is a CMS?
A content management system, referred to as a CMS, is a system that allows you to manage information easily and effectively. The information could be anything, whether it’s a simple article or a complex media management system. The goal of a CMS is to provide an effective workflow which depicts the clear state of an entity at any given point in time. In simple terms, it allows information to pass through different states like draft, review, editing and publish.
Specifically, it’s non-technical users who love to have such a system at their disposal that allows them organize content easily and makes the whole process joyful rather than hectic. In any web-based application, there are three basic operations, which most of the time the administrators find themselves doing, performed on any given entity—add, edit and delete. And that’s what a CMS is designed for. Whether it allows you to do that by providing a WYSIWYG editor, inline editing or some other fancy goodies, the idea is to make the whole process effortless.
It’s not just the organization and management of content, but how good it is at providing granular access control to different groups of users, that's considered as one of the premium features of any CMS. It’s obvious that you would like to split up the responsibilities across different roles like author, editor and publisher. The provision of content versioning is also something you would like to keep your eyes on as it allows you roll back articles if things don’t go as expected.
In its most basic form, the typical workflow of any CMS could be something like:
The author starts a conversation by creating an article, and the default status of an article is draft at this point in time. Usually, it takes a couple of iterations for an article to get switched from draft to review status.
The Reviewer is granted permission to access all the articles having status set to review. Again, it takes a conscious effort from the reviewer to go through them and forward them to editors if they meet certain guidelines that are a must for an article to switch from review to editing status. Of course, the reviewer could send them back to draft status by leaving appropriate comments if an improvement is expected from the author.
Going through all the articles in editing status and beautifying them with final touches is something expected from the Editor in their day-to-day routine. Also, they are responsible for pushing content from editing to the publish queue.
Finally, it's the job of the Publisher to make sure that the content sitting in the publish queue gets the proper treatment by scheduling their publishing in the front-end.
Generally speaking, what we've listed above is one of the most simple yet effective use-cases one could adhere to. Not to mention that in the real world you'll witness more complex workflows accompanied with rich features like tagging, social sharing, and commenting, to name a few.
So, that's a quick and hopefully useful introduction of what a CMS system could look like. From the next section onwards, we'll focus on the main subject of this article, Joomla!, which is something I promised we'll explore throughout this article.
Joomla!—an Award-Winning CMS
Since its inception back in 2005, Joomla! has evolved over the years, and the end result is one of the most powerful and feature-rich CMSs, downloaded by millions of users. As they say, it's truly a community-based CMS, run by and for the community! For any open-source project, as with Joomla!, the support from community members is an important factor in the persistence and sustainability of the project.
Joomla! is built using some of the most widely used web technologies like PHP, MySQL and Apache. Having said that, it's not just limited to the aforementioned technologies—it also supports other popular databases and web servers. You could choose from either SQL Server or PostgreSQL instead of MySQL database engine if you prefer to do so. On the other hand, Microsoft IIS and NGINX are candidates for the choice of web server along with Apache.
For developers, Joomla! is built using the MVC design pattern, a popular pattern used by plenty of other frameworks already. Although discussion of the MVC design pattern is something out of the scope of this tutorial, it provides a separation of concerns, thus allowing the developer to concentrate more on development rather than worrying about how it would look in the front-end.
It's no surprise that the latest major version of Joomla! is responsive out-of-the-box and mobile-first, as it's impossible nowadays to ignore that, and it could be costly for any framework that did so. As of writing this, Joomla! 3.4.x supports PHP 5.5+ version but not PHP 7. However, the release of the much-awaited version Joomla! 3.5 is around the corner, and it claims to support PHP 7, which will be a huge performance boost natively, if experts are to be believed.
So, if that was a high-level overview of what Joomla! is all about, the following list highlights some of the concrete features you've been waiting for, which ship with the Joomla! core itself.
out-of-the-box content management features
content organization using nested level of categories
content versioning and tagging
media management
user management
powerful ACL (Access Control Lists) system
smart search feature for site wide free-text search
RSS Feeds
multilingual features
responsive and mobile-friendly interface
Of course, it's impossible to discuss each and every feature in detail in a single article, so for those curious users I'll leave some useful resources at the end of this article.
Joomla!—Beyond the CMS World
You’re on the wrong side of the table if you believe that Joomla! is only useful for content management, as you’ll be surprised to hear that there are more than 7,000 extensions available on the official JED (Joomla Extensions Directory) site, providing features that range from a simple image gallery solution to a full-fledged booking and reservation management system. In fact, there is a strong possibility that the extension you’re looking to develop on your own is already available on the JED!
The extensible architecture of Joomla! makes custom extension development a breeze. Are you looking for a system that serves as a blog? Maybe your new venture requires that you build a new YouTube kind of system, or you’re trying to build the next Facebook! The JED provides extensions for each of the aforementioned requirements.
Let’s have a glimpse of the luxury you could have if you choose Joomla! as your solution:
a full-fledged media management system
e-commerce solutions
portals with community features like social sharing, commenting, tagging and the like
online reservation and booking systems
classifieds solutions
event calendar and RSVP kind of systems
business directories
educational and government websites
portfolio systems
That’s just to name a few, as it’s very difficult to list each and every possibility. As they say, the limitation is your imagination—so true for Joomla!
Joomla! as a Web Framework
In day-to-day Joomla! development, there are times when you feel that you would have wanted to pull a certain part of the framework, the routing API for example, rather than a whole bunch of CMS features that are obsolete for that particular project. For a simple PHP-based application, it would be nice to have those selected features from the framework that are most suited to your application, rather than a whole CMS.
For example, say you want to build a service that exposes Joomla! data to a third-party mobile application. To achieve that, it's completely fine to make a custom extension that fulfills the desired functionality, but with the additional baggage of those unwanted CMS features in your case. Instead, what you would have loved to do is to select the APIs of your need by avoiding the rest of the features, and the end product is a super-light web application.
That's the purpose of Joomla! Framework, earlier known as Joomla! Platform. It allows you to build an application using a familiar set of APIs, if you're coming from the Joomla! CMS background. It provides a common set of APIs, as with the other PHP frameworks, allowing you to concentrate more on the application-specific features rather than reinventing the wheel for features like input handling, database abstraction layer, routing and the like.
It's by no means to be confused with the Joomla! CMS, as there's a separate line of development for both pieces of software. The main idea is to decouple the software packages into separate modules, rather than tying them into a single package, allowing them to evolve on their own. In fact, you could think of the Joomla! CMS as a combination of the Joomla! Framework and CMS modules.
One promising example of the Joomla! Framework is the Issue Tracker application of the Joomla! CMS itself. In the same way, you could build any web application with it that you would have built with any other PHP-based framework. Explore it and I'm sure there's something it has to offer for everyone.
Joomla!—a Quick Glance at the Major Elements
In this section, we'll discuss the important elements of the Joomla! architecture that serve as basic building blocks in any application.
Components
This is one of the most important and a must-have element in the stack that provides the complete functionality of any specific section. It allows you to create a base that deals with the business logic of an application. Also, it's one of the elements that extends Joomla!, should you like to introduce any new features.
For example, if you want to build a business directory application, one should be able to add, edit and delete the entries from the back-end. On the other hand, in the front-end it should display a nice listing along with advanced search, pager and sorting features. So it's the component you would like to build to wrap the aforementioned functionality.
As a rule of thumb, whenever you want to build any new functionality in Joomla!, it's the component that comes to the rescue.
Modules
Before I go ahead and explain what a module is in Joomla!, I would like to give you a couple of examples to make things easier. If you've ever visited Joomla! front-end, you'll see lots of blocks like Login, Latest Articles, Latest Feeds, etc. To your surprise, they are Joomla! modules assigned to different positions in the template! A Joomla! module is a movable block that builds the output by fetching the data from the component, most of the time, and displays the output.
Plugins
More often than not you’ll need to change the core framework behavior to fulfill your custom needs, and that’s where plugins come into the picture. A Joomla! plugin allows you to catch certain system-defined events, opening the door for customization of some of the important workflows.
As an example, say you would like to notify a third-party application in the event of new user registration on your website. Of course, there’s a provision to alter the data that transits back and forth between the event calls.
Templates
As the name suggests, it deals with the presentation layer of your website and helps structure your website layout. Sometimes, it’s also referred as a Joomla! theme as it allows you to change the look and feel of your website. To change the default look of the Joomla! core, you need to make a custom theme as per the Joomla! theme structure, and that’s something you’ll come across frequently if you’re a Joomla! developer.
Not to mention that the latest version of Joomla! comes with a responsive theme in the front-end and back-end. Also, it’s something expected from theme designers as well during the course of custom theme development.
What Is the Joomla! Extensions Directory (JED)?
The JED is something that you should make yourself familiar with, as you'll probably spend quite a bit of time there searching for an extension for your purpose. It's an official Joomla! site that offers plenty of extensions to choose from in the form of components, modules and plugins.
Extensions at JED are released under two kinds of license—free and commercial. As you may have guessed, the commercial extensions are paid goodies, available either on a subscription model or by paying a one-time fee. As a developer, it's an area you would like to get the benefit of, by developing quality extensions and releasing those under commercial license.
In fact, most of the time it works in this way: the free version of an extension is available with basic features, and the paid version of the same extension is boosted with power features, in the form of add-ons in some cases. Not to mention that the luxury of technical support from the extension service provider comes with the commercial version. Hence, it's a successful and proven business model for many commercial extension providers.
Having said that, I won't take any credit away from those quality free extensions that serve the purpose as well as any paid extension. In fact, it's a set of strict standards and rules each extension has to go through that makes sure that the extensions listed on JED meet the desired quality standards.
So, that's the JED at your disposal—make yourself comfortable with it and you'll be glad you did that.
Where Should I Start?
For first-time users, it’s always recommended to install Joomla! on your local system and explore the features in the front-end and back-end to get yourself used to the system. Here are some important resources for newbies:
Beginners Guide to Joomla!
Getting Started With Joomla!
Joomla! for Administrators
Joomla! How to’s
For experienced PHP developers:
Set Up Your Joomla! Workstation
Joomla! for Developers
Joomla! Best Practices
It’s such a wide subject that you’ll find plenty of online tutorials and videos at your disposal. Also, the members of Joomla! community forum are friendly enough to help you sort out any issues.
Conclusion
It was my pleasure to introduce one of the most popular open-source CMSs in the field of web development—Joomla! Although we’ve barely scratched the surface of the Joomla! world, I hope that I was able to do justice to the subject.
Starting with an introduction to CMSs, we’ve gone through the different aspects of Joomla!, followed by a discussion of important architectural elements. We also looked at the JED, and I provided some useful resources in the later part of this article.
Don’t hesitate to see what we have available for sale and for study in the marketplace, and don't hesitate to ask any queries and provide your valuable feedback using the feed below.