Foodies-Vocabular_20190903-130925_1

I recently happened to have a client approach us to build a mobile app. What should have been a fairly quick job turned out into a mid sized development project. The reason ? They had created almost half a dozen custom components where articles could have served the purpose.

Another project was a government site serving almost 50 million hits a month. This too has something which I’d call a “blatant misuse of Joomla”. More than half a dozen extensions created for a myriad of things - PDFs, audio files, videos. Articles would have been sufficient here too.

This prompted to share some rules that I realised we had been following for a long time, but never got documented. So here’s our unwritten rulebook on building Joomla sites

Spend time thinking about information architecture

A great building needs a great architect. Similarly a great site starts with architecting the content really well. It is important to think about the types of content on the site - articles, documents, videos etc. Equally important is to define a logical grouping of content - eg: a corporate website may have case studies, blogs, peoples' profiles and product/service information. Don't be afraid to make a golden compromise between the most ideal structure and something that is more maintainable.

Understand the fantastic CMS capabilities of Joomla

Joomla does content management really well, and it is very important to understand the capabilities in depth to avoid rookie mistakes. Some of the key building blocks of the CMS are

Research about existing modules, components, plugins

The Joomla extensions directory lists some really great extensions that can be used to extend the capabilities of Joomla. Take time to identify your needs, and evaluate the available extensions before you make a choice. Make sure the extension developer is active and is releasing updates to avoid being locked with an extension that is not maintained.

Evaluate if you need any custom extensions

We have seen far too many sites rush or completely skip this and go on to create custom extensions  where articles would have sufficed the needs. The two examples I talked about in the beginning both had this issue. Most of the needs are addressed by designing the categories, tags and fields correctly. A few examples I have seen where custom components were created unnecessarily

I cannot stress enough on how important it is to avoid unnecessary use of custom extensions. They can bring in unseen and unplanned maintenance effort, some of which includes

Learn the Joomla menu system, layouts and overrides

Joomla supports “layouts” - this is a way to represent the same list of articles in different ways. Articles in Joomla offer a “blog layout” which shows the list with each item having an image, title and intro text. The other layout is a “list layout” which is a plain tabular list with just the names. It is possible to create another layout, say “card layout” to show the articles in a grid of cards.

It is also possible to override existing layouts in case you wish to make modifications to the layouts Joomla ships without actually touching the core files. This ensures that your changes are not lost when Joomla gets upgraded. However, it is necessary to compare your custom layout with the original after key upgrades to ensure the overrides continue to work.

Benefits of minimising extensions use

Using less extensions means that upgrades continue to be painless. Otherwise there is a lot of time spent on checking each extension's compatibility. Wanton use of extensions may compromise security and performance of your site. I have seen several sites using lot of extensions. Even unused ones left in there. If you are serious about the site it is very important to keep the site maintainable by using only the necessary extensions.

Do you have any other advice to site builders ? Please share with us and we'd be happy to include it in !

In the next part, we will cover more aspects like choosing a good host, a list of must-have extensions, security and performance.