Joomla is a modular content management system. It is not limited to just what comes with the initial package. You can expand on it, customize it, and swap components with a few clicks of the mouse. It is because of this extensive amount of control that it can be a bit overwhelming to someone attempting to navigate through the administrative side for the first time. In this page, we will attempt to tackle some of the most common Joomla components and how they relate to one-another.
Some of the terms used in the Joomla ecosphere are shared with other CMS environments while others are purposely differentiated in order to maintain some separation between platforms in order to avoid confusion. For example, a template in Joomla is very similar to a theme in WordPress.
If a Joomla site were to be compared to a car, then Joomla itself would be the engine. Through a series of PHP scripts and commands (frame, cables, and wires), it pulls the data (fuel) from the database (fuel tank) requested by the user (driver), which allows the car to move.
The site's template would be the body of the car, defining its look and feel, as well as providing much of the area in which the driver operates. In many ways, it also makes up the steering wheel and gear shift, allowing the user to interact directly with the site and tell it what to do.
Plugins and modules make up additional parts like the gear shift, glove box, and mirrors. They are often helpful, and potentially essential for carrying out operations requested by the user.
Components, which are a specific type of extension, would be the materials that went into making the engine and other vital system components.
All of these components work together to ensure that your site looks and operates the way it is supposed to. If everything is set up correctly, it should be a consistent experience whether you have one visitor, or one thousand.
Components:
Components are the largest and most complex extensions of them all; they can be seen as mini-applications. Most components have two parts: a site part and an administrator part. Every time a Joomla page loads, one component is called to render the main page body. For example, Content (com_content) is the component which handles the display of content; users can view at the frontend of your site and, as an administrator, you can edit the content. Components are the major portion of your page because a component is driven by a menu item and every menu item runs a component.
Modules:
Modules are more lightweight and flexible extensions used for page rendering. These modules are mostly known as the "boxes" that are arranged around a component, for example: the login module. The footer is a module. Modules are assigned per menu item. So, you can decide to show or hide the logon module depending on which menu item the user is viewing. Sometimes modules are linked to components such as the "latest news" module which links to the com_content and displays links to the newest content items. However, modules do not need to be linked to components, as a matter of fact they don't even need to be linked to anything and can be just static HTML or text.
Plugins:
Plugins are more advanced extensions and are in essence event handlers. In the execution of any part of Joomla, be it the core, a module or a component, an event can be triggered. When an event is triggered, plugins that are registered with the application to handle that event execute. For example, a plugin could be used to intercept user-submitted articles and filter out bad words. Plugins were known in Joomla! 1.0 as mambots.
Templates:
A template is basically the design of your Joomla! powered website. With a template you can change the look and feel of your website. Templates have certain fields in which the component (just one) and modules (as many as you like) will be shown. Templates are easy to build or customize and they provide maximum flexibility in how you style your site.
Languages:
Probably the most basic extensions are languages. Languages can be packaged in two ways, either as a core package or as an extension package. In essence, these files consist key/value pairs, these pairs provide the translation of static text strings which are assigned within the Joomla! source code. These language packs will affect both the front and administrator side. Note: these language packs also include an XML meta file which describes the language and font information to use for PDF content generation.