I’ve been building Joomla websites since back when 1.5 was the latest version – so, a decent amount of time. Over the years the way I’ve been building Joomla websites has evolved, both from experience and from the many updates that have occurred since I first started. I figured it would be a good idea to share some of these experiences and provide some guidance on building a Joomla website that is maintainable, efficient, and easy to administer.
Let’s dive into this, shall we?
Limit the Use of Extensions
Extensions are one of the biggest selling points of content management systems. Who wants to program everything themselves when you can just install that functionality and customize it in a fraction of the time?
When I first started developing Joomla websites, I was floored by how many options there were for adding features to Joomla websites. And I installed as many as possible. This was a terrible, horrible idea. For any CMS website, the fewer extensions, the better. By using less extensions, there aren’t as many dependencies, and the website is much more maintainable.
Not only do my clients not have to learn how to edit more extensions, but there’s less likelihood of these extensions failing when updating versions of the extension or Joomla itself. Additionally, every extension you add creates new potential vulnerabilities and/or points of failure, especially since many of the ones from less reputable sources are poorly coded and could negatively impact your sites performance.
The solution is to pick extensions that have a great deal of flexibility, while developing your own code for simple features, including extending existing functionality of components. For example, some of the best components I’ve used for displaying content (such as sliders, tabs, and image galleries) come from template providers. Template providers need re-usable components that apply to the designs that they generate, and they provide those to their customers. There’s no need to install multiple extensions for displaying different layouts and functionality – you have most of what you need right there.
Try New Extensions and Templates Often
This doesn’t contradict my previous point – you do want to try out different extensions when possible. As a developer, I don’t like to stay within a comfort zone. If you’re not breaking something (in a development environment), you’re doing it wrong. I’ve broken a countless number of non-production websites and I’m proud of it.
Even if you find a combination of extensions that works well for you, there are always new product releases that can be better than what you’ve become comfortable with. A perfect example of this is how I used to prefer using the Gantry framework by RocketTheme for templating, but more recently Yootheme has released Yootheme Pro, available for both Wordpress and Joomla. I decided to give it a try, and have been extremely pleased with the results – enough so that Yootheme Pro has become my new favorite templating framework!
Make Your Website Easy to Administer
This topic is more of an approach to how you build your Joomla website – there’s so many integrations that everyone’s implementation will be different. By building websites that are easy to manage I not only save time when creating documentation and training but also with maintenance, meaning less received calls from clients that forgot how to manage a section of their website.
There’s three core features of Joomla for managing content – components, modules, and articles. Some might say plugins are relevant, but I’ve never had to instruct a client how to manage a plugin, and don’t intend to ever do so. The concept is simple – try to keep content administrators focused on as few of those features as possible. However, my strategy has changed over the years, especially since the release of Joomla 3.X content is manageable from the front-end.
Now that content is manageable from the front-end, I try to make sites that can be managed exclusively from that method. This is challenging, to say the least, especially for administrators that want to add new menu items all the time – which is often not the majority, but that whole process with Joomla has been somewhat frustrating.
Sometimes I’m limited by the component capabilities – usually clients will have just a couple core components they use, such as an e-commerce or event booking feature, and will often have the same repetitive tasks. The best way to handle this challenge is to create menu items that are only accessible by a user with administrator privileges that will accomplish these tasks, so that they can manage them from the front-end Joomla editing feature.
The other challenge relates to my previous mention of using too many extensions. When choosing extension, make sure that you take into consideration how that extension is administered. If the extension requires frequent administration that is in its own interface, I may decide to look for another that is easier to manage.
Create Backups Often & Take Off-site Backups
This point may be obvious, but I’ve even admittedly had problems with losing website data from not having a current backup. Sometimes it’s from making a modification that breaks the site, or updating a component that causes an issue – regardless, it’s difficult to remember to make a backup before every change to your site.
What’s been even more common is my clients not paying their website hosting bill, then expecting me to be able to resurrect their website out of thin air. This is where the importance of off-site backups comes into play. It’s not my responsibility to maintain these for my clients, but it certainly does come in handy should any issue come up.
The main component I use for backing up Joomla websites is Akeeba backup, which is extremely reliable and is an essential for every Joomla installation. However, just maintaining backups with Akeeba is often not enough.
There’s also a tool called Perfect Dashboard available for both Joomla and Wordpress which allows you to automate off-site backups, updates, and security. I manage many different websites so it didn’t make sense for me to use Perfect Dashboard, since there is a monthly fee for every website that you maintain with it.
Another good alternative is using Siteground for hosting, since their hosting plans have options for auto-updates, daily backups, and security as well. Either way, make sure that you’re covered in case of an incident – paying a little bit extra for peace of mind is worth the cost.
Take Security Seriously
One of the biggest reasons for sites being hacked is not keeping your content management system and extensions up-to-date. In fact, many of the updates in the 3.X version of Joomla have been in response to discovery of new vulnerabilities.
Malicious software is no joke – here are some of the common exploits and their impact on your website:
- Uploading new files that include links to other malicious websites, which can cause Google to flag your website as containing malicious content
- Modifying core files which break your website’s functionality
- Modification of your htaccess file to create redirects to other websites
- Implementation of scripts which send spam e-mail from your server, or harvest e-mail addresses from your database, which can result in your domain name being added to e-mail blacklists
- Bots which register on your website and add spam links in comments or forums
- Complete take-over of your website, where it is held for ransom until you’re coerced into paying to get it back online
Unfortunately, there are times when updating Joomla and/or Joomla extensions, that the updates will break something on your website. Your first instinct is probably to restore your latest backup, and try to debug the issue later when you have more time – I’ve done this many times. That’s probably the worst decision that you can make, though. Spending the time to debug any issues upon discovery will save you many hours in the future.
Hopefully this article has given you some valuable information about building Joomla websites. One of the most important things when developing websites is to explore ways to improve your development process – whether it be new development methods or using better tools for efficiency. If you have any other tips for our readers, please sound off in the comments below!