Learning Joomla! 1.5 Extension Development: Creating Modules, Components, and Plugins with PHP

There is a newer version of this book available - Learning Joomla! 1.5 Extension Development
Learning Joomla! 1.5 Extension Development: Creating Modules, Components, and Plugins with PHP
eBook: $23.99
Formats: PDF, PacktLib, ePub and Mobi formats
save 45%!
Print + free eBook + free PacktLib access to the book: $58.98    Print cover: $34.99
save 41%!
Free Shipping!
UK, US, Europe and selected countries in Asia.
Also available on:
Table of Contents
Sample Chapters
  • Program your own extensions to Joomla!
  • Create new, self-contained components with both back-end and front-end functionality
  • Create configurable site modules to show information on every page
  • Distribute your extensions to other Joomla! users


Book Details

Language : English
Paperback : 176 pages [ 235mm x 191mm ]
Release Date : June 2007
ISBN : 1847191304
ISBN 13 : 9781847191304
Author(s) : Joseph L. LeBlanc
Topics and Technologies : All Books, CMS and eCommerce, Content Management (CMS), Open Source

Table of Contents

Chapter 1: Joomla! Extension Development: An Overview
Chapter 2: Getting Started with Component Development
Chapter 3: Back-End Development
Chapter 4: Front-End Development
Chapter 5: Module Development
Chapter 6: Expanding the Project
Chapter 7: Behind the Scenes: Plug-Ins
Chapter 8: Configuration Settings
Chapter 9: Packing Everything Together
  • Chapter 1: Joomla! Extension Development: An Overview
    • Why Extend Joomla!
    • Customization versus Extension
    • How to Extend Joomla!
      • Components
      • Modules
      • Plug-Ins
    • Topic Overview
      • Creating Toolbars and List Screens
      • Maintaining a Consistent Look and Reducing Repetitive Code Using HTML Functions
      • Accessing the Database and Managing Records
      • Security and the Preferred Way of Getting Request Variables
      • Menu Item Control
      • Controlling the Logic Flow Within a Component
      • Configuration Through XML Parameters
      • Packaging and Distributing
    • Our Example Project
    • Summary
  • Summary
  • Chapter 3: Back-End Development
    • Creating the Database Table
    • Creating a Table Class
    • Creating the Review Form
    • Processing the Data
    • Creating a List Screen
    • Editing Records
    • Deleting Records
    • Summary
  • Chapter 4: Front-End Development
    • Listing the Reviews
    • Displaying a Review
    • Generating Search-Engine Friendly Links
      • Building URL Segments
      • Parsing URL Segments
    • Adding Comments
    • Displaying Comments
    • Summary
  • Chapter 5: Module Development
    • Registering the Module in the Database
    • Creating and Configuring a Basic Module
      • Recruiting Some Helpers
      • Try Some Different Layouts
      • Mixing it Up
    • Summary
  • Chapter 6: Expanding the Project
    • Model, View, Controller: Why?
    • Building Data Models
      • Modeling All Reviews
      • Modeling Individual Reviews
    • Migrating to Views
      • Viewing All
      • Viewing One
    • Switching Through Controllers
      • Updating Links and Routes
    • Reorganizing the Back-End Code
    • Publishing Controls for Reviews
    • Adding Pagination
    • Management for Comments
    • Additional Toolbars
    • Summary
  • Chapter 9: Packing Everything Together
    • Listing All Files
    • Packaging the Module
    • Packaging Plug-ins
    • Packaging the Component
    • Including SQL Queries
    • Creating Back-End Menu Items
    • Extra Installation Scripts
    • Distribution
    • Summary

Joseph L. LeBlanc

Joseph L. LeBlanc started with computers at a very young age. His independent education gave him the flexibility to experiment and learn computer science. Joseph holds a bachelor’s degree in Management Information Systems from Oral Roberts University. Joseph is currently a freelance Joomla! extension developer. He released a component tutorial in May 2004, which was later translated into French, Polish, and Russian. Work samples and open-source extensions are available at www.jlleblanc.com. In addition to freelancing, he is a board member of the DC PHP Conference. He has also worked as a programmer for a web communications firm in Washington, DC.

Sorry, we don't have any reviews for this title yet.

Code Downloads

Download the code and support files for this book.

Submit Errata

Please let us know if you have found any errors not listed on this list by completing our errata submission form. Our editors will check them and add them to this list. Thank you.


- 21 submitted: last submission 13 Jun 2012

Errata type: Typo | Page number: 16 | Errata date: 01 Apr 09

First paragraph, fourth line... "Also as the description in the browser..." should read "Also the description in the browser..." The word "as" should be removed.


Errata type: Technical issue | Page number: 21 | Errata date: 23 Jan 08

All the toolbar codes for buttons are referring to mosMenuBar which are replaced by JToolBarHelper in v1.5. So they should read: JToolBarHelper::save(); JToolBarHelper::savenew(); etc.


Errata type: typo | Page number: 33 | Errata date: 03 Oct 07

The header of the tip says: What does JTML::_() do? It should be JHTML::_(), the H is missing


Errata type: typo | Page number: 35 | Errata date:20 Dec 07

In the fourth paragraph "recaputring" should be "recapturing"


Errata type:Typo | Page number: 39 | Errata date: 08 Oct 07

The fourth paragraph starts with: "Below the table, there are FOUR hidden variables". It should read three hidden variables and not four hiddden variables.


Errata type: Technical issue | Page number: 41 | Errata date: 23 Jan 08

file: admin.reviews.html.php, page 41,96,and 101 "Its written: JOutputFilter should be written: JFilterOutput. The core team has changed the class name JOutputFilter to JFilterOutput in the release candidate."


Errata type: typo | Page number: 41 | Errata date: 03 Apr 09

The line above the code, "add the first two bits of highlighted code as seen below:" should read "add the first three bits of highlighted code as seen below:"


Errata type: Technical issue | Page number: 47 | Errata date: 08 Oct 07

The following line should follow


Errata type: TYPO | Page number: 53 | Errata date: 06 Feb 09

2nd para, "the calls to unset() will only effect our local copy..." 'effect' should be 'affect'.


Errata type:Technical | Page number: 54 | Errata date: 09 Feb 09

Last paragraph, 2nd line ...it will call BuildParseRoute() and pass in an array... should be ReviewsParseRoute()


Errata type:Technical issue | Page number: 60 | Errata date: 06 Aug 08

$mainframe->redirect('index.php?option=' . $option . '&id=' . $row->review_id . '&task=view', 'Comment Added.'); Should be: $mainframe->redirect(JRoute::_('index.php?option=' . $option . '&id=' . $row->review_id . '&task=view'), 'Comment Added.');


Errata type:Technical issue | Page number: 61 | Errata date: 08 Oct 07

This line needs to be at the beginning of the highlighted text: $db =& JFactory::getDBO();


Errata type: typo | Page number: 69 | Errata date: 04 Apr 08

Last paragraph ...select the id and name "form" jos_reviews should read ...select the id and name "from" jos_reviews. form should be replaced with from


Errata type: Technical issue| Page number: 75 | Errata date: 08 Oct 07

$query should include "WHERE published = '1'" Otherwise unpublished reviews show up in the random selections


Errata type: Code | Page number: 84 | Errata date: page 84 Code 21 Aug 09

Smoking: review->smoking ?> should be Smoking: review->smoking; ?> A ';' should be included after 'smoking'


Errata type: typo | Page number: 98 | Errata date: 21 Aug 09


Errata type: Others | Page number: 13 | Errata date: 18 Dec 08

The link to download the Ext SDK is broken. Given link: http://www.extjs.com/download Correct Link: http://www.extjs.com/products/extjs/download.php




Errata type:Layout issue| Page number: 115 | Errata date: 20 Jul 07

TThe code for "function pluginReviews" has been placed at the wrong page. Now it's part of the "What Events Can be Registered" text, but it should be on page 113.


Errata type: typo | Page number: 149 | Errata date:03 Apr 09

The line, "Open /plugins/conent/reviews.xml and make the following changes:" above the code should read "Open /plugins/content/reviews.xml and make the following changes:"


Errata type: typo | Page number: 151 | Errata date: 30 Oct 08

The sentence "The changes to the XML file for the search plug-in are similar to the first two, except that here you set the group parameter in to content." should read "The changes to the XML file for the search plug-in are similar to the first two, except that here you set the group parameter in to search."


Errata type: Technical | Page number: 154 | Errata date:30 Oct 08

First paragraph on page states "we're using the #_ table prefix notation" when it should be "we're using the #__ table prefix notation". NOTE: there should be two underscores.


Errata type: Code | Page number: 41 | Errata date:17 May 2012

jimport('joomla.filter.output'); should change to jimport('joomla.filter.filteroutput'); because the file organization goes on that path. It will be an answer for that fatal error.


Sample chapters

You can view our sample chapters and prefaces of this title on PacktLib or download sample chapters in PDF format.

Frequently bought together

Learning Joomla! 1.5 Extension Development: Creating Modules, Components, and Plugins with PHP +    Pentaho 5.0 Reporting by Example: Beginner’s Guide =
50% Off
the second eBook
Price for both: $37.50

Buy both these recommended eBooks together and get 50% off the cheapest eBook.

What you will learn from this book

  •     Code Joomla! components, modules, and plugins from the ground up
  •     Create toolbars, list screens, and menu items
  •     Maintain a consistent look and reduce repetitive code using HTML functions
  •     Automate database record management
  •     Validate input and resist hack attempts
  •     Configure your modules through XML parameters
  •     Package and distribute your extensions

Chapter 1 introduces Joomla! extensions, and gives an overview of how Joomla! can be extended through components, modules, and plugins.

In Chapter 2, you will learn about the architecture, design, and requirements of a general component. You will also see how the component gets executed and is registered with the database. At the end, you will learn to create toolbars.

Chapter 3 takes you through a tour of back-end development. The chapter deals with creating a database table to hold the reviews of the restaurant, setting up a basic form for data entry, and processing data and adding it to the database. You will see how to list your existing reviews and modify your reviews.

Chapter 4 deals with the front-end development. You will see how to list and display your reviews, and add and display comments for your reviews.

Chapter 5 is about module development. Starting with registering your module in the database, the chapter then shows you how to create and configure a basic module using helper classes to centralize data access and output, and how to display the latest reviews or a random review.

Chapter 6 deals with expanding your project with the Model, View, and Controller pattern. You will learn how to build data models, how to migrate to views, and how a controller is used to handle the logic flow of the component. It also introduces you to the concept of pagination and shows you how to add pagination and at the end how to display additional toolbars.

Chapter 7 is completely dedicated to plugins. You will create a link plugin, and an information box plugin. At the end, you will see how to use plugins to enable searching of your reviews.

In Chapter 8, you will see the configuration settings for extensions; modules, components, and plugins.

In Chapter 9, you will see how to package a completed component and module for deployment.

In Detail

Joomla! is the world's hottest open-source content management system, and the winner of the 2006 Open Source CMS Prize.

While Joomla! is packed with features, its greatest quality is that it is extremely extensible, allowing any number of complex applications to be cleanly integrated. Shopping carts, forums, social networking profiles, job boards, and real estate listings are all examples of extensions developers have written for Joomla!. All of these can run off one Joomla! site, while only one database, template, and core need to be maintained. When you build an extension to Joomla!, it will inherit the look and feel of the overall site. Any type of program that can be coded in PHP is a potential component waiting to be written!

If you're eager to start creating extensions for Joomla!, this book is for you. Walk through the development of complete Joomla! components and modules with this tutorial for PHP programmers. Written for Joomla! version 1.5 and tested against pre-final releases, this book will get you started coding your first extensions as quickly as possible, and adds the features that will make your work look professional!

The book builds example extensions to create, find, promote, and cross-link restaurant reviews. A component will handle common data items seen across all reviews such as price range, reservations, cuisine type, and location. Your visitors will be able to search and sort through the reviews; adding their own criteria to zero in on their dining options for the evening.

Your modules will highlight new reviews, drawing the attention of frequent visitors. Finally, plugins will pull pieces of the reviews into feature articles and others will integrate them into searches. Even if you don't own a restaurant, you will still find the code applicable to your own development projects, and the skills you develop will make you a Joomla! developer to be reckoned with!

A rapid and easy-to-follow introductory tutorial to help you use PHP code to create your first Joomla! extensions: modules, components, and plugins.

Book Reviews

Slashdot: Even if a reader initially had no interest in developing their own extensions to Joomla, this book could easily spark their interest, given that the book shows just how powerful those extensions can be, as well as how doable they are, by any competent programmer familiar with PHP and MySQL. In fact, even if the reader were to later decide that they had no interest in creating any extensions, they could still benefit from the book's discussion of how components are structured within Joomla — a more clear explanation than anything I have seen in the official Joomla documentation. Joomla may be an excellent CMS, but the documentation quality does not come close to the value of Joomla itself. That is why there is such a great need for books such as this one. -- Michael J. Ross, Web Developer, Slashdot:


A practical tutorial, based around the development of coherent example throughout the book. Each chapter walks you through the steps to add a required feature to the extension.

Who this book is for

This book is suitable for PHP programmers who want to take their first step in customizing and extending the features of Joomla! through custom PHP development. It is not a reference guide for advanced Joomla! developers.

You need only the basics of PHP programming; no experience of developing Joomla! extensions is assumed. You are expected to be familiar with the general operation of Joomla!

Code Download and Errata
Packt Anytime, Anywhere
Register Books
Print Upgrades
eBook Downloads
Video Support
Contact Us
Awards Voting Nominations Previous Winners
Judges Open Source CMS Hall Of Fame CMS Most Promising Open Source Project Open Source E-Commerce Applications Open Source JavaScript Library Open Source Graphics Software
Open Source CMS Hall Of Fame CMS Most Promising Open Source Project Open Source E-Commerce Applications Open Source JavaScript Library Open Source Graphics Software