When someone wants to create a custom Joomla extension, one of the options is to use one of the several online tools that allow users to input the particulars of their concept and have the tool do a lot of the heavy lifting in terms of directory and file generation. A Joomla extension is a thing of many parts. They share common directory structures and files with similar code. Some clever clogs have decided that the repetition of tasks involved in their creation is too much to bear, and have automated the process through these online tools. The great thing is that they've made these tools available to everyone, and they are an enormous time saver for those involved in creating custom extensions for the Joomla CMS.

The general pattern is that these tools allow the user to stipulate the parts of the project that are unique- the name of the extension, tables, fields, relationships, forms, validation - and the tool generates the files according to the accepted structure required by the Joomla CMS, and provides you with an installable extension. The time saving implications are substantial, cutting what could be hours or days of work into minutes.

No extension is the same- that's the point after all

Of course no extension is the same- that's the point after all- and so how long you spend designing your extension using the tool depends on the type of extension (plugin, module, component) and the sophistication of the extension you're looking to design. And by no means is the installable provided by the tool the finished product. You may be able to install and 'use' the extension on a Joomla site, but it's unlikely that the works stops there. In the case of components, much of the design and front end development remains to be done. With plugins and modules, the tools generally give you very little - you are able to submit the name and general parameters of the extensions so that the zip file can be generated, but these generally don't 'do' anything before your own code is added.

These online extension file generator tools are not the only option for kickstarting your custom Joomla functionality. There are extension generators that are themselves Joomla components, and accessible through the administrator panel. There are also CCK options that can save you from needing to create a separate extension by allowing the functionality to be scaffolded by CCK. There are also command-line-based tools that do the clever work on the serverside. These may be the are all worthy approaches to custom Joomla functionality, but this article will focus on online tools- websites that allow you to input some details, tweak a few knobs, and be presented with a shiny new zip file for you to upload to your Joomla site.


Extstore's plugin creator (https://extstore.com/tools/plugin-creator) is the best option if you need to create a plugin. The process is very simple, and doesn't provide many options beyond the name of the plugin and its type. You can certainly come away with an installable plugin in less than a minute, if you know what you want. Of course, this plugin doesn't actually do anything when installed and enabled. The class file, where traditionally most of the plugin logic lives, is largely empty. You're provided with the class name and the constructor, saving you that leg work, but the methods aren't there.

While I'm thankful for this free time saving tool, it'd be even nicer if the tool recognised common plugin types (Content, System, User, etc) and pre-filled the class with the known methods provided by Joomla for this plugin type. Of course these could be commented out by default, and wouldn't contain any 'actions' within the method, but it'd save me from having to consult the Joomla docs to refresh my memory on the methods available to me. Within the commented code, you could also have a brief outline of the variables and any pointers on it's use. That said, the current setup provides you with clean files that don't require any tidying up, just empty space for you to fill with your own code.

Personally, this is a tool I could not do without. In my work on personal projects and in custom solutions for clients, I visit this site several times a week to bang out a plugin. There's not really a comparable product as far as I know.


When it comes to modules, there's a few more tools out there that can be used. While Extstore also offer a module builder (https://extstore.com/tools/module-creator), I prefer xdsoft's Joomla Module Generator (https://xdsoft.net/joomla-module-generator/). This offers simplicity with a few more options than the Extstore offering. On top of the usual name, description, author details, xdsoft allow you to add in additional parameters such as copyright details, and provide you with many options. One valuable option that came in handy for me recently was the ability to create an administrator module. While the usual use case is for a site module, there are times when you'll want to create a module to appear on the administrator side, and it's nice to have this option.

The xdsoft generator also allows you to choose the additional files and folders you'd like to include in your extension. Depending on whether you want a skeleton module to output something simple, or whether you'll be creating complex logic and integration with other parts of Joomla, the ability to include or omit helper files, image directories and style sheets is great. Contrary to how I would have set it up, many of these options are all selected by default (though strangely not the version number- I found that odd that I needed to manually enter in 1.0.1) , meaning that any hurried creation of a module will end up with files and folders that will likely not be used.

What I especially like is the ability to add module parameter fields to the setup, to save playing about with the xml file after install. Provided you have a clear idea in mind for how things are going to work in the completed module, you can add these parameters to be used later at the beginning of the process in a fraction of the time it would have otherwise taken (and you can always edit and add to these later, after all). 


In terms of creating substantial new functionality for your Joomla site, this is where components come in. The two main online tools, Component Creator (https://www.component-creator.com/en/) and Cook Self Service (http://j-cook.pro/) offer highly sophisticated tools for creating complex custom components. Each of these has its various advantages that are best put in a table for comparison

Feature Component Creator Cook Self Service
Cost Free for simple, single table components , €19-29/month for advanced options Free to design and test the component in the Cook Sandbox, but cannot download component to use in your own site on the free package. Subscription: €8-16 / month or €450 lifetime
Interface Traditional form and list based interface. Drag and drop style interface with collapsible panels
Field options Standard Joomla fields with foreign key links across your tables. com_category field. Standard Joomla fields with foreign keys links
Field validation Required, unique, read only, disabled, length, Joomla filters (RAW, SAFEHTML, etc)  Required, unique, regex validation
Form options Subforms  Dynamic sequential lists (ajax) , advanced filtering options
Unique features Module generation from component (paid), component parameters Sandbox for testing, fork system
Configuration options  Yes  No
UAC  Basic   Complex UAC filtering


The two systems use two very different design principles. Component Creator uses a form and view based interface that will be familiar to Joomla users, while Cook Self Service has its own sliding panels with drag and drop elements.

Component Creator: the good

Module creation, clean code, generally stable

Component Creator: the bad

The traditional form-based interface means that there are more steps to every part of the component creation process. It also combines the table and view creation process that limits the options available to you.

Cook Self Service: the good

Drag and drop interface allows for quicker creation of components, many more configuration options, separation of tables and views allows for much more customisation, greater user access control. The sandbox allows you to test drive the component, often helping to identify additional required fields or configuration options. 

Cook Self Service: the bad

No module creation, no custom component parameters setup, certain combinations of options or removal of elements can cause compilation bugs with error messages that are of little use in debugging. The component generated is quite large, and the code generated is highly abstracted, involving the addition of Jdom, a separate form field library, and making future development more confusing. 


In brief, Cook gives you more options, and slicker interface, but leaves you with a component that is harder to customise and build-on after the install than the clean uncluttered component you get with Component Creator which is free of additional libraries and unnecessary abstraction. They follow very different creation processes, with Cook seeming to create a sequence starting with tables and their fields, and following on with views. Component Creator largely combines the table and view interfaces, cutting out a step, but leaving you with less options. The design of the Cook interface could be accused of being somewhat naive- it looks a bit like a kids game with all its clipart icons and sliding panels, but it does seem to fit more of the component on one page, making it easier to switch between views and tables with ease, and hiding the more advanced options in pop-up boxes rather than requiring the switch to a new window.

I find myself using Cook for the more complex of the components, and using Component Creator where I need just one table and have simpler data entry and display needs. They are both excellent tools for saving time and shaping basic ideas into useable bits of software.

Here is an example of the select lists possible with only a few lines of code...

<select name="country" class="countries presel-byip" id="countryId">
    <option value="">Select Country</option>
<select name="state" class="states" id="stateId">
    <option value="">Select State</option>
<select name="city" class="cities" id="cityId">
    <option value="">Select City</option>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
<script src="https://geodata.solutions/includes/countrystatecity.js"></script>
Back to Top