Do you need another front end extension? Let's find out.
Starting a new project with Joomla can sometimes be a little bit like writing a new article. I find myself staring at the blank page, overwhelmed by all the possibilities and different ways to acheive the same goals.
With Joomla, some of the most impactful decisions you can make are on which front-end extensions to install. Many of us have a short list of go-to extensions, but what if we need to do something new?
Joomla 4 brings many new possibilities into the core with custom fields and subforms, but it may not always be the right choice for all projects. So how do you decide?
Before we start, let's define some terms:
- Joomla Core
- The extensions (including components and plugins) that are installed with Joomla. For example, Articles (com_content) is a core extension.
- Joomla Extensions Directory (JED)
- A community directory of third-party extensions (including components and plugins) that extend the capabilities of the Joomla core. The directory includes extensions built for many different versions of Joomla, so make sure you filter the results by your Joomla version and check server compatibility before trying to install an extension on your Joomla site.
- Custom Fields
- A new core feature of Joomla in Joomla 3 and 4, which allows you to create your own fields to add to the edit form in supported components. By default, the core content (articles and categories) and contact extensions support custom fields. Some third party extensions may support Joomla custom fields as well; others implement their own custom fields capabilities which may work differently.
- View Template Overrides, Layout Overrides, Alternate Layouts
- A way to customize the way content is displayed and structured on the front end. For example, by creating an alternate module layout as detailed by Marc Dechèvre.
It all starts with a plan.
For me, I start with strategy. Like a good article outline, a strategy helps you know the structure of what you will be building, and sets reasonable boundaries which helps you make decisions. If you already have a solid strategy for this build, skip ahead to the infographic, otherwise continue reading for some pointers.
Define your use case.
Ask yourself: who is the audience for this site? What are they trying to do with this particular content or feature? Personas may help you define the audience more clearly. Don't forget to account for the people who will be managing the site, too. I build sites very differently when it's just for me versus when I know one or more people on the client side will be managing content.
Sometimes there are instances where using custom fields or view template overrides would get the site looking right, but make it too complex to manage long-term. In these cases, sometimes finding a 3rd party extension is best because it makes it easier to keep the site up-to-date.
As an example, I recently had a project where I had two different places that needed to have custom interactive vector maps. In one of them, it was really just a way to organize pages by a geographical region, and these pages weren't likely to change much. Instead of installing a whole extension just to display them that way, I developed a custom category template with tags and custom fields to display the articles the way we needed.
The other map was more complicated, and needed to allow people to submit information on the front end. My client also needed to easily manage the submissions in the back end on an almost daily basis. While I absolutely could have done this with custom fields, it would be needlessly complex to manage. So, we used a component instead.
These two examples are pretty extreme, but it just goes to show that you can have situations with similar content for the same client and same audience with completely different needs.
What kind of content will you be showing?
If it's mostly text-based (or simple media) and unique for every page, a custom field may be all you need. You can create text fields, media fields, dropdowns, even radio buttons or checkboxes as custom fields in Joomla. For more complex information, you can create subforms with mutliple fields, and repeat the same structure. There are also third-party custom field plugins with even more options if custom fields work for you but you need a slightly different kind of content. This is usually a little lighter than installing a full component.
However, if you want to pull in content from another part of Joomla (for example, to get information from another article) and there's not an easy way to do it yourself via a module, you may need to seek out a plugin or extension. This also applies if you want to pull in information from another site or app. Developers can hook into an API, but at that point you may as well install an extension anyway (if one is available).
Assess your skill and comfort level, as well as those managing the site.
Just because someone else feels comfortable creating a custom component for a site doesn't mean that's going to be the best solution for everyone always. (I can't do that, either!) I am fine sticking code in the editor to make accordions, but that doesn't mean it's a good solution. In many cases, a plugin might be a better choice. And that's just fine.
Like I said at the beginning, there are many different ways to approach building a site with Joomla. As long as it's accessible, usable, secure, and easy to manage for the people doing the managing, there's no wrong way about it. The extensions directory is full of amazing tools to help you build a great Joomla site at any level, and is another reason that Joomla is such a flexible and powerful CMS. Don't be afraid to take advantage of it if you need to!
Feel free to download and share the infographic below. Just make sure you link back to this article so anyone who wants more information can get some context!
A note about overrides:
There are a few places I mention view template overrides or layout overrides. These are core-supported ways to customize the front end display of content, provided you manage the overrides in the template or child template. Do not change Joomla's core files (in the components or layouts folder, for example) as your changes will be overridden when you update Joomla. This also goes for third party extensions—follow their documentation with layout overrides, otherwise your changes may be overridden when you update the extension.
Some templates provide their own alternative layouts; for other things, you may have to create your own. This requires some knowledge of HTML and PHP. If that's not something you're comfortable doing, that is okay! The infographic is meant as a general guideline and to help bring awareness to the many amazing things the Joomla core can do.
Thanks Crystal. As the in built functionality of the core increases maybe there could be a directory similar to the JED for the Core, might be particularly useful to advertise new functionalities? Also, perhaps we could have a place where users can review extensions in a trip adviser kind of way?
Thanks for the comment, Paul! That's an interesting thought; ideally, the documentation would serve as a helpful gallery of the various features included in Core.
People can already review extensions in the JED. You'll notice star ratings and if you click through, there are more detailed reviews available most of the time.