Any 3-rd party package that you can add to Joomla to extend its default functionality is Joomla extension. While Joomla has many of very useful features out of the box, usually people want to add something extra to set their site apart.
There are five extension types in Joomla: Components, Templates, Plugins, Modules and Languages. All of them can be installed in much the same way, though they can perform incredibly different jobs for your site. For example module and plugin extend your site's inherited functions but they are very different things.
Components
Joomla components are the largest and most extensive type of extensions. They are main carriers regarding functionality of a website, and they are rendering generated content in the center of the main content area. Each component usually has two interfaces: one for the administrator and one for the frontend user. To increase functionality, components usually comes with modules and plugins.
All components that we have made follows strict rules regarding quality. There is no background themes for our components. Instead of that, we keep original Joomla backend feel&look regarding inputs, radio-buttons and other elements. Code in components is made following Joomla MVC model with Controllers, Models and Views. If you want to change colors, font properties, spacing, backgrounds and other design features, we usually add a custom CSS file for that purpose.
Javascripts are made in jQuery library, in a form of plugin where we encapsulate code and attach it to HTML container in DOM tree. Usually there is one relatively small main javascript file shared across all pages rendered by our component, and each page which require specific operation or have unique UI will load separate file. That way we achieve two goals: avoid loading large amount of unnecessary JS code, which is very common habit among coders. It is easy to push all code in one mega-file, counting thousands of lines and load it in every page, but such pages will have large amount of unused code per page. Second benefit is that if you override components layout using /html folder in template and for some reason there is no main container for our component (usually DIV tag), there will be no Javascript error, page will remain fully functional.
All scripts are stored in /media folder, usually in nested folder, and there are always two versions of file: normal and minified.
CSS files are also stored in /media folder, normal and minified versions. Usually we have option in backend which we use as cache killer. Such cache killer gives you ability to change that number (good practice is to increase number for +1) every time you make any significant changes in CSS or Javascript files, forcing user browser to get rid of old cache and to load new files. Everyone who has experience with loading new, edited HTML structure and old (cached) CSS or JS files know how big headache this can be and how handy is this small trick.
Plugins
A plugin as a form of Joomla! extension, provide functions which are associated with trigger events. Joomla provides a set of core plugin events, but any custom made extension can fire custom events, too. When a particular event occurs, all plugin functions of the type associated with the event are executed in sequence, and that is a powerful way of extending the functionality of the Joomla! Platform. It also offers developers a way to allow other extensions to respond to their actions, making extensions really extensible.
Our plugin follow same standard quality declared for components. In attempt to keep database impact low as possible, our queries are well optimized and calculated and for the internationalization we use language files. This is not required, but people from various countries can easily translate our plugins to their own language.
If there is very important sequence of code in plugin, comments are available above the functions.
Modules
A module is a lightweight and flexible extension used for small bits of the page that are generally less complex and are able to be seen across different components. We recognize two types of Joomla! modules: modules made to increase functionality of components and modules created as standalone elements.
Our modules structure follow Joomla coding standards, with /tmpl folder for layouts and helper.php files, contains helper class that is used to retrieve the data to be displayed in the module output. Every module have it's own language file, so internationalization is not a problem.
Templates
In Mambot Code Lab there are many characteristics we pay attention to while selecting a good artwork with intention to make a theme. First is obviously our own taste. Also, we considering the following:
- Stock photos included. The theme you’re about to purchase should come with all of the stock images loaded on the demonstration.
- Responsiveness and cross-browser compatibility. This means our templates looks great in Chrome, Safari , Firefox, and whatever Microsoft is calling their embarrassing excuse for a browser these days. In desktop, as well as on any mobile device
- Joomla constantly update it's system and we also update our templates frequently to make sure it will work with the latest version releases, improve security, and incorporate new features.