Introduction to Joomla
Joomla is one of the most popular open source content management systems that has been around for a long time. It is currently in 5th place in terms of usage according to W3Techs. It lost some ground with the rise of cloud based website builders, like Wix and Squarespace, but it’s still above Drupal. In comparison to WordPress and Drupal and some of its other close competitors, it has the fewest number of main versions. Since version 1.0 debuted in 2005, Joomla has progressed to version 4.0 as of August this year. Although it only has 4 main releases, the CMS is certainly appearing to stay current with its updates, such as support for PHP v8. Free and paid templates are widely available at your favorite repos, like Template Monster or Theme Forest.
Experience with the Joomla CMS From the Perspective of a Website Developer
Initial Impression: Not Only a Blogging Platform
The first Joomla project I was involved in was a simple eCommerce site with a few dozen products and PayPal checkout. I remember considering WordPress and Drupal at the time, but for some reason Joomla seemed like a better fit for doing online stores. Compared to WordPress I felt Joomla had a higher learning curve, and the website content seemed divided into smaller pieces. That implementation was a bit bumpy, as some of the checkout functionality from the modules was buggy, but overall the experience wasn’t bad.
Shifted Towards Other Web Content Management Systems
Over the past couple of years I just drifted towards other CMSs for one reason or another. I think the overwhelmingly higher popularity of WordPress resulted in me working with that CMS more. Nevertheless, I was surprised to see Joomla’s popularity currently actually above Drupal, which I actually really enjoy working with, so I look forward to doing this Joomla review. Let’s dive right in!
Objective of This Joomla CMS Review
In this review we’ll do a fresh install of Joomla and try to create a basic home page leveraging core Joomla functionality where possible. Any free Joomla extensions will be utilized. We want to avoid doing any web site customization but still end up with a professional website.
Joomla Core Installation
Initial Environment Setup
I created an empty site on my Ubuntu 18.04 SkySilk pico server with Nginx and PHP 8.1. I should note that I haven’t done much on this server for a while, so it was actually still using PHP 7.3, and I just installed 8.1. I’m most likely going to need to add PHP modules, but let’s see what Joomla does with what we got now.
Download Install Package
I proceeded to https://downloads.joomla.org/us/ to download the latest package to my server. I used
wget to pull the file, which ended up being this:
I ended up re-downloading by manually removing the
?format=zip from the URL. I’m not sure why their download page puts that format query string there when the filename is already a zip file.
At least we got some sign of life. Unfortunately, it was short lived. So, I clicked that “Help me…” button and got the following tip from their help page:
There was no
configuration.php in the site root, so I created one with the
$debug = true. Nope, that didn’t change anything. Let’s take a look at the php and nginx logs. Nothing useful showed up. The only thing was the following 500 error in the nginx access log, which didn’t tell me anything I didn’t already know:
[04/Dec/2021:22:56:21 +0000] "GET /installation/index.php HTTP/1.1" 500 15733 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"
I found an INSTALL file in the installation directory, which listed the following requirements for installing Joomla:
- PHP zlib
So, I ran
php —modules to get a list of modules and see zlib but not mysql. I ran
apt install php8.1-mysql and got the mysql extension added. I restarted php-fpm and nginx and tried to open the site in my browser again. Same error.
Ok, that INSTALL file did mention creating the database. I’d be surprised if Joomla can’t do that automatically during the web install. It says to create a database called
Joomla and a user
db_user. This doesn’t sound right. Those just seem like example names. I’m going to see if the Joomla site had any more detailed instructions.
After like half an hour of Googling around and browsing Joomla’s documentation I arrived at the installation page https://docs.joomla.org/Special:MyLanguage/J3.x:Installing_Joomla, which only appears to be for v3. I’ll try and follow through this hoping this will apply to v4 also.
Ok, back to the DB creation, and I think I’m on the right track now, because this statement on their help page really makes me think I need to create that database first:
Regardless of the requirements of the version, in order to install Joomla! you must have a working database, database user, database password and proper privileges for the database user. You will need to complete these tasks before you begin the installation.
And, at the bottom of that article showing me how to create a database and user it ends with:
You now have a database, a user and a password and are all set to install Joomla!
So, it still doesn’t tell me where I need to input this, so Joomla can install. I’m assuming it’s that configuration.php file, but that file didn’t seem to do anything when I added the debug flag earlier.
And, I made my way to some installation reference page. Of course, there’s no mention of version 4.0 anywhere:
So, just to clarify, on the Joomla download page they recommend downloading v4.0, so that’s why I downloaded that and not v3. At this point, I’m wondering if I should just get v3 instead.
I took a break for an hour and came back to this and decided since this was a fresh PHP 8.1 install I know I’d need at least some extensions. (I always did for WordPress.) So, I ran the following:
apt install php8.1-apcu php8.1-cgi php8.1-curl php8.1-gd php8.1-common php8.1-tidy php8.1-zip php8.1-xml php8.1-mbstring php8.1-xmlrpc
I restarted php-fpm and nginx and boom!
The install screen came up. This was pretty bad that nowhere in the Joomla documentation did I stumble upon a list of extensions that were needed. Maybe I just had back luck and missed a help article that mentioned what extensions were needed, but the several installation instructions I did go through on their site as well as that INSTALL text file had nothing mentioned about required php extensions, except zlib and mysql, the former of which is included by default apparently. I would have expected those listed on the following reference page on Joomla.org:
Oh well, let’s move on.
So, before I get thru that install, let’s go back and create that empty database and user. I followed the steps in the INSTALL file, and this worked pretty painlessly. I then proceeded with the web install adding the site name and language, the main user and password, and the database credentials I just setup. And, finally we’re at the end with some recommended PHP setting changes:
I choose to go to the admin side, and right off the bat, I get the following warning:
Doesn’t seem serious, but this is a fresh install without any addons throwing warnings. In all the years I’ve installed and managed WordPress sites, I don’t think I’ve ever gotten a PHP warning with just core running, unless I was missing some PHP extension. I think we took care of that already here, though. Well, not a show stopper, so let’s see what’s next!
Initial Impressions Running Joomla
After logging in with my new user, I arrived at the admin overview page:
So, my first impression from the above screen and from some quick browsing thru the admin panels is that there is a lot more functionality in core Joomla than WordPress. Maybe there isn’t as much as in Drupal, but the UI/UX seems like it might be nicer than Drupal’s.
Uh oh. After clicking on the Menus tab and trying to edit the existing menu “Main Menu”, I get the following error:
So, I’m not going to report every error and warning from now on, because they keep happening as I’m navigating around. I’ll try and ignore these for now just as I try and familiarize myself with the functionality on the admin side, but I’ll summarize my findings later in this article.
Here is the frontend of the site without the title I actually gave it anywhere, except this CASSIEOPEIA, which I’m guessing is the default theme name, but that’s OK. I’m glad there’s no errors or warnings showing up here :)
When I try to login again (even though I don’t remember ever logging out) from that frontend form in the right sidebar, it appears to trip up my Bit Defender security:
I wonder if it’s because I’m on http and not https. I’ll just type the /administrator path manually in my browser to get to the admin side. Ok, that worked, and I did have to login again, but no Bitdefender error there, even though I’m still on non-ssl http.. hmm. It might have just been an issue with that particular login form that made it seem insecure.
So, there seems to be a lot of features to explore, and I’ll just make a note of a couple that caught my attention:
- Smart search indexing
- Media with media folders
- Check-in/out of content
- Custom field and field group creation and management
- User groups, fields, mass mailing and private messaging
Let’s actually try and create some content!
Fixing Warnings and Errors
I couldn’t really do a whole lot on the backend due to the errors that kept coming up, so I did a bit of research and found a thread on github where someone else was having random errors coming up with PHP 8.1, so I decided to install 8.0, since that approach would probably be the quickest way to resolve this, if that is in fact the issue. Here’s what I ended up running on my Ubuntu server, which includes PHP 8.0 and all the extensions I had previously installed for 8.1 that allowed me to run the Joomla install:
apt install php8.0-apcu php8.0-cgi php8.0-curl php8.0-gd php8.0-common php8.0-tidy php8.0-zip php8.0-xml php8.0-mbstring php8.0-xmlrpc php8.0-fpm php8.0-mysql
After those got installed, I shut off my 8.1 FPM service and started 8.0. I restarted NGINX, and now when I navigated to the /administrator URL and logged in, no errors!
I navigated over to the
system tab and then clicked
warnings, as I noticed a couple items were noted. All of these were just PHP parameters (i.e. upload and post max file size too low and no upload temp directory set) that I was able to quickly address by editing my php.ini file.
Creating a Home Page with Content
Since the home page seems almost entirely empty, let’s see what steps we’d take to get some structure and content on there.
Utilizing Core Joomla Templates
First, I wanted some structure, so I navigated over to the
Site Modules section under the
Content tab and noticed quite a few site modules available that may give us some layout options:
Ok, maybe not. I couldn’t find anything I wanted to use. When I navigated to
Site Templates, I noticed this default theme that comes with Joomla 4 has a screenshot showing a home page with a large banner image and some columns. So, I would think if that’s included in the screenshot, it shouldn’t be a lot of effort to make my home page look like that:
I did see an option to override the theme, but that would involve editing the files, and I don’t want to go that far. Let’s see if there are any options and theme components we can utilize without overriding things.
As far as the content editing experience, you get the typical WYSIWYG editor, however, I was surprised to not see any standard website content builder, like Gutenburg in WordPress, or panels in Drupal.
Articles are used to represent the main page content in Joomla, so I’ll start by creating one for the home page. So, under Content - Articles I created a new article called “Home” and just added some placeholder content. I then clicked the “Featured” option, which now makes it show up on the home URL of the site:
Three Featured Articles
To get the three article previews to show up, I need to edit the Main Menu and setup the layout for the Home item.
On the Blog Layout tab I set it to display 3 articles in 3 columns horizontally. I changed a few items on the Options tab to hide things such as Hits, Author, etc. You can hide/show whatever you want here.
Finally, Save and Close.
You also want to create three featured articles, which I did, so you should then have a list of articles as follows:
The featured ones have the yellow star next to them.
Next, I want to get that banner image like in the screenshot, so I figured Components - Banners would be the place to go. I clicked the new banner option and created a new banner with the image that I saw in the Cassiopeia template screenshot, which was already included with the core install:
So, this actually let me put a banner on my home page, but it wouldn’t allow overlaying text. I ended up doing the following things to get a custom banner:
- Create a custom module
- On the Module tab, switch the title off and change placement to “banner”
- Add the text into the wysiwyg. Below is what I added:
<h2><span style="font-size: 36px;">Welcome to Joomla on Cassiopeia!</span></h2> <p><strong>You have chosen one of the most powerful CMS Systems in the world.</strong></p> <p>Cassiopeia is the multi purpose frontend template for Joomla 4.</p> <p><a class="btn btn-secondary" href="#readmore">Read more</a></p>
- Switch to the Menu Assignment tab and set it to only appear on the Home page
- Switch to the Options tab and add the banner image as a background image
- Switch to the Advanced tab, and change the layout to “banner”
- Save and close
I want the site name, a tagline, a menu, and maybe a search field on the top of all pages, so I start by editing the main menu and adding all the links: Home, Article One, Article Two, and Article Three as single articles. Everything else can be left default, except change the position to be in the Menu spot.
The template has a default logo, but I want to disable that under the Template Styles under System.
Next, I create a Custom Module for the site name and tagline and enter the following html, which is a copy of what the template displays by default when enabled:
<div class="navbar-brand"><a class="brand-logo" href="http://joomla.optimalcms.com/"> <img class="logo d-inline-block" src="templates/cassiopeia/images/logo.svg" alt="Joomla Demo Site for OptimalCMS" /> </a> <div class="site-description">Optimal CMS Demo Joomla Site</div> </div>
Set its placement to Menu, Save and Close.
For the search, I added a Search module, enabled the search button, and set its placement to Menu.
Search Engine Optimization
I didn’t spend much time focusing on SEO, but I did want to point out that the menu item pages did have your expected options for setting up meta tags, including index or noindex, and URL aliases.
This is how the home page now looks. Not exactly like in the screenshot, but it’s mostly there, and it’d probably take me some custom styling and overriding the template to get the finer details to match, like the exact font and card layout around the three articles.
Core Web Vitals Tests
When I ran the home page through Google PageSpeed Insights, I got an almost perfect score of 100 for desktop and 99 for mobile. The actual vitals were all green for both desktop and mobile. Of course this page is pretty simple, but that’s still great.
Final Thoughts on the Joomla CMS
Beats Initial Expectations
I have to say my expectations were pretty low coming into this review of Joomla, because I have only tinkered with it once or twice every few years after that initial eCommerce site I created, which was in like version 1.x, and we’re now at 4.x. Each time I’ve revisited it, nothing caught my interest enough to make we want to work with it more. So, I really only have been working with Joomla because I had to because someone had a site built in it and needed some assistance.
More Potential After Initial Hurdles
After this review, I must say my impression is somewhat better of Joomla but not by a whole lot. I think they lost points with me for reasons that aren’t really tied to the functionality or performance of the regular usage of Joomla but instead to a combination of instructions and the initial Joomla setup. For example, the install process was a pain, probably unnecessarily for the most part. It seemed they had instructions all over the place of how to install their CMS, and in terms of PHP requirements, they just listed “PHP 8.0”. Compare this to Drupal, and on their system requirements page they have a whole section dedicated to listing the PHP extensions that are needed. Same thing with WordPress. The random errors and warnings coming from a fresh install without any add-ons also didn’t make me feel very good about actually building a whole site in this CMS without it falling apart. But, after these hurdles were resolved, my Joomla site started acting like a very robust CMS. And, as I started getting better acquainted with where the various controls on the admin side are located, I must admit it is quite user friendly for managing web content and without requiring much programming knowledge. Although, Joomla does give a web developer the options to extend templates if they need to override any of the default layouts.
Core Features Stand Out
I was impressed with all the core features that came with the out-of-the-box install. A lot of these provided features that I pretty much need on every site I build, so it’s nice to have these come standard as part of core functionality. Furthermore, content and structure being controlled on multiple levels, such as the menu for URLs and SEO, article for content, and components for extension of functionality and content, seem to make Joomla quite a flexible content management system. For these reasons, Joomla seemed closer to me to Drupal than WordPress, the latter which is very barebones and relies heavily on 3rd party plugins.
And, finally while investigating some of the issues I ran into during install and then tips on layout and template management, I did notice the Joomla community is quite strong.
Still Prefer Others
When I look at different content management systems and try to evaluate which to use for a particular project, one of the main considerations is picking up the tool of the right size for the job. Like I wouldn’t pick up a sledge hammer to fix my kitchen cabinet, unless I was really angry at it, I wouldn’t probably want to use a CMS with eCommerce, a bunch of paid plugins, and a lot of other functionality for a two page blog. I certainly think no single CMS is a complete CMS that fits the bill for every type of job.
And, this is my particular bias, but I would probably pick WordPress for smaller sites and Drupal for larger and more complicated ones. Joomla to me seems somewhere in the middle and is maybe overlapped by both WordPress and Drupal. This might mean it’s too complicated for some really small projects that WordPress can do and not optimal for large enterprise projects Drupal might be a better fit for. So, instead of having Joomla as a 3rd tool to manage among my go-to web content management systems, why not just have the 2? I think unless I see Joomla offers features the other two platforms I mention really lack, I don’t see the need to keep it in my toolbox.Share on:
Leave a Comment
Your email address will not be published, required fields are marked with *.