Defining and Extending the Joomla Framework
The CNP integrations team is focused on providing world class support and development of web portals using the Jooma! CMS platform. Often there is confusion about how Joomla is structured and the elements used to make this such a powerful tool suite for delivering web content and building relationships with your customers or communities. This article will try to help explain the many extendable elements of Joomla.
Joomla! CMS is a feature rich content management system with a growing collection of over 8500 extensions. However, since every project is unique, many times if you're building a website with Joomla!, you may need additional functionality to achieve the goals of your web site or communications portal project. Fortunately Joomla is built with this need for extendibility in mind.
There are several areas within the Joomla CMS platform that allow you to add virtually unlimited functionality. There are five types of extensions for Joomla!: Components, Modules, Plugins, Templates, and Languages. Each of these types of extensions handles specific functionality unique to the Joomla CMS framework. (Note: Many built-in features of Joomla! are implemented using extensions.)
Below are definitions as per the Joomla.org wiki and other sources on the web:
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.
Examples: Content (com_content), Banners (com_banners), Contact (com_contact), News Feeds (com_newsfeeds) and Web Links (com_weblinks)
Management feature: Admin head menu > "Components" ("Content" for com_content)
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.
Examples: Banners (mod_banners), Menus (mod_menu), Who's Online (mod_whosonline)
Management feature: Admin head menu > "Extensions" > "Module Manager"
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.
Examples: content.searchbot, tinymce
Management feature: Admin head menu > "Extensions" > "Plugin Manager"
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.
Management feature: Admin head menu > "Extensions" > "Template Manager"
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.
Management feature: Admin head menu > "Extensions" > "Language Manager"