PacktLib: Learning Joomla! 3 Extension Development-Third Edition

Learning Joomla! 3 Extension Development


About the Author


About the Reviewers


Before you Start

Extension types and their uses

Joomla! versions that your extensions should support

Licensing and GPL

What business model should I adopt?

Tools you need to develop the Joomla! extensions

Coding standards

Legacy MVC versus new MVC

Upgrading a Joomla! 2.5 component to make it Joomla! 3 compatible

To fork or not to fork?


Getting Started with Plugin Development

Plugin types

Plugin event triggers

Where do I start?

Creating the installation XML file

Creating the plugin PHP file

Zip it up and install your plugin

Adding the parameters to our plugin

Adding the language files


Getting Started with Module Development

Where do I start?

Backend versus frontend modules

Creating the installation XML file

Creating the module PHP file

Creating the view

Connecting to the database

Zip it up and install your module

Backwards compatibility for Joomla! 2.5

Converting to the site module

Translating your module

Adding a help file

Template overrides

Making your module responsive


Getting Started with Component Development

Where do I start?

Creating the component installation XML file

Creating a simple component

Setting up the database

Creating a form

Creating a view

Installer script

Zip it up and install your component


Backend Component Development – Part 1

Adding additional fields

Adding columns to your view

Toolbar buttons and component options

View filters and search


Backend Component Development – Part 2


Adding views and submenu items

Access Control List (ACL)

Multi-database support


Frontend Component Development

Getting started on the frontend

Creating a view

Adding CSS

Adding sample images

Creating another view

Menu item parameters

Translating your component

Updating data from the frontend

Using ReCaptcha in your component

Using our click-to-call plugin with this component

Integrating a third-party comments extension


Security – Avoiding Common Vulnerabilities

Why you should care about security

Path disclosure

SQL injection

Local File Inclusion

Remote File Inclusion

Cross-site scripting

Cross-site Request Forgery

Some quick advice


Packing Everything Together

Creating a package

Setting up an update server

Managing database changes

Getting listed on the JED


Extending your Component with Plugins and Modules

Creating a search plugin

Creating a smart search plugin

Creating a featured portfolio module

Adding tags to our component