I will start to write a series of tutorials about how to write extensions (Component, Module and Plugin) for Joomla 1.5. I decided to do so after I found out Joomla CMS few months back and it is just too impressive to compare with other CMS implementation. So stay tune and do not forge t to subscribe to VivoCiti newsletter for upcoming tutorial series
So you have installed Joomla 1.5 and you have configured it to run on your live website. First impression, you will think that wow...this is a great. It is only required your few hours to make it run and goes lively. And suddenly you would think of some features that you want to have but you can not get it from Joomla. Now what ?
It is a developer basic instinct (well might be not for all so please feel no offense) to start looking into the source code and quick hack coding begin ?
No, you will not need to do that and this have to thanks to Joomla's extensibilities through its support for extensions. By using extension feature in Joomla, you will be able to write your own Joomla extension, to support new features but still attachable and communicate with other internal Joomla's extensions and other extensions developed by third parties, either open source or commercial.
Joomla functionalities can be extended and implemented in 4 types: through Component, Modules, Plugin and Template. The first three will concentrate more on new business logic and features you are going to develop while the latter, Template, is much more used for controling Joomla presentation view (display). By implementing the first three, you will still pertain your existing Joomla website look and feel and its core source code without any modification. By following some contract coding standard defined by core Joomla or its API (Application Programming Interface), your own component, module and plugin will be able to continue to access the same database source as being used by current core Joomla, use the same user's template (theme) or your own new Template and still more other features that we will look into detail one by one.
The scope of all series of Joomla Extension tutorial that I am going to write and will be divided to several chapters will focus more on the first 3 extensions.
First of all, let's get into the skin of these 3 extension types:
You can develop Joomla plugins extension if you have purpose to modify the contents of your website, modify search result performed by users, inserting new part of content to the beginning of your existing content and at the end. Basically, everything which relates to your website's content is modifiable by developing a plugins to handle.
Normally Joomla module will be positioned at the left, right, top and bottom of your website content. For example: Login, Website statistic, Subscribe to Newsletter, all of this feature in Joomla website are implemented in module. You can think of module as a small block on your website page layout but can be dynamically changed through Administrator Module setting page.
You decide to implement new feature for Joomla website by using Component if the new feature need to have its own workflow from one page to another page, own interface (pages) for users to interact with, i.e. User Registration Form, shopping page to display all selling items and so on.
Where is the Toolbox, I am Ready
If you are a programmer started from Visual Basic, Delphi, Java Swing / SWT to VB .NET, C#, JSF, ASP .NET you will be familiar with Toolbox displayed on your IDE, for you to create your own GUI, i.e. button, toolbar, textbox. How about Joomla ? Yes, Joomla has it. Joomla provided a set of standard look and feel GUI for you to call while you are creating your own extension in Joomla though it is not mandatory for you to use them. In other word, you still have the choice to create your own look and feel button and other user interface to interact with the user.
Joomla provides one of its class to handle database data manupulation hence it saves your time from doing it manually and directly. Again for some of you who comes from Visual Basic, Java, C# background, we are talking about DAO (Data Access Object). Yes, Joomla provides it for your convenient to deal with data manupulation.
Joomla 1.5 Architecture
Before we are going to start our second tutorial chapter, I will end this chapter by showing you the overall architecture of Joomla 1.5 so you have overall picture where is Component, Modules and Plugins are sitting. (courtesy of http://www.joomla.org):
Hello Joomla 1.5 Extension World
Joomla! 1.5 is a three tiered system which I will say similiar to MVC design pattern. The bottom tier is the core / framework level and plugins. The second tier is the application level and consists of the JApplication class. Currently there are three applications that ship with Joomla: JInstallation, JAdministrator and JSite. The application acts as the main controller for the page. The third tier is the extension level. This level is where all component, module, and template logic is executed and rendered.