Mastering Joomla! 1.5 Extension and Framework Development

Table of Contents

Chapter 1: Introduction to Joomla!

This book is intended for use as a reference book for existing Joomla! developers. It focuses on the Joomla! framework and how to utilize it to enhance and standardize extensions.

  • Overview
  • History
  • Requirements
  • Extension Types and Their Uses
  • Extension Manager
  • JED and JoomlaCode.org
  • Development Tools
  • Summary

Chapter 2: Getting Started

This chapter explains some of the fundamental concepts behind Joomla!. It describes the process from request to response. We touch lightly on some of the coding aspects and explain how to use some of the more common Joomla! elements.

  • The Application and Document
  • Request to Response
  • URI Structure
  • Directory Structure
  • Libraries
  • A Quick Lesson in Classes
  • Working with the Request
  • The Factory
  • The Session
  • Predefined Constants
  • Multilingual Support
  • Coding Standards
  • Summary

Chapter 3: The Database

This chapter details the role of the database in Joomla!. It defines some standard rules we need to abide by. It explains the many different ways in which we can query the database. It also briefly covers the ADOdb emulation that is available for developers wanting to port existing applications.

  • The Core Database
  • Extending the Database
  • Querying the Database
  • JTable
  • Summary

Chapter 4: Component Design

This chapter explains the concepts behind building Joomla! components and shows how we can build our own components. Components have two main elements, the front-end and the back-end. At the heart of most Joomla! components lies the MVC (Model View Controller) framework. There are many ways in which the MVC design pattern can be implemented; this chapter is specifically interested in Joomla!'s MVC implementation.

  • Setting up a Sandbox
  • The Structure
  • The MVC
  • Rendering Other Document Types
  • Dealing with Component Configuration
  • Elements and Parameters
  • Help Files
  • Routing
  • Packaging
  • Summary

Chapter 5: Module Design

Joomla! modules come in two flavors, front-end and back-end. Modules can be standalone or, as is often the case, can work alongside components.

  • Setting Up a Sandbox
  • First Steps
  • Module Settings (Parameters)
  • Helpers
  • Layouts (Templates)
  • Translating
  • Packaging
  • Summary

Chapter 6: Plugin Design

Plugins enable us to modify system functionality without the need to alter existing code. For example, plugins can be used to alter content before it is displayed, extend search functionality, or implement a custom authentication mechanism.

  • Setting Up a Sandbox
  • Events
  • Listeners
  • Plugin Groups
  • Loading Plugins
  • Using Plugins as Libraries (in Lieu of Library Extensions)
  • Translating Plugins
  • Dealing with Plugin Settings (Parameters)
  • Packaging
  • Summary

Chapter 7: Extension Design

Over and above the design issues we have discussed in the previous three chapters, there are additional design elements to consider when building extensions. This chapter explains some of the other design elements, common to all extensions, which we have not yet covered.

  • Supporting Classes
  • Helpers
  • Using and Building getInstance() Methods
  • Using the Registry
  • The User
  • The Session
  • The Browser
  • Assets
  • Summary

Chapter 8: Rendering Output

In Joomla!, there are ways in which we can render output that make our lives easier and force a level of consistency across extensions. In this chapter, we explore: "The ever useful, joomla.html library, which enables us to render output in a common form", "How to build layouts and templates, with particular emphasis on components", "The intricacies of building templates in component backends", and "How to deal with itemized data"

  • The joomla.html Library
  • Building Component HTML Layouts (Templates)
  • Component Backend
  • Itemized Data
  • Summary

Chapter 9: Customizing the Page

This chapter discusses: "How to modify the document properties to suit the contents of the page", "How to make extensions support the multi-lingual capacities of Joomla!", and "How to use some common JavaScript elements to create a more interactive and user-friendly experience"

  • Application Message Queue
  • Redirects
  • Using Menu Item Parameters
  • Modifying the Document
  • Translating
  • Using JavaScript Effects
  • Summary

Chapter 10: APIs and Web Services

This chapter explores some of the Joomla! API, specifically in relation to Web Services. We will also discuss some of the more common Web Services and take a more in depth look at the Yahoo Search API.

  • XML
  • Ajax
  • LDAP
  • Email
  • File Transfer Protocol
  • Web Services
  • Building a Web Service (XML-RPC Plugin)
  • Summary

Chapter 11: Error Handling and Security

Security and graceful error handling is imperative to any good computer system. For systems like Joomla!, which are often available on the World Wide Web, poor security or incorrect error handling carries a high risk factor, and that risk is often higher when using third party extensions.

  • Errors, Warnings, and Notices
  • Dealing with CGI Request Data
  • Access Control
  • Attacks
  • Summary

Chapter 12: Utilities and Useful Classes

Joomla! includes a number of useful utilities and classes. In this chapter, we discuss the use of the most commonly used utilities and classes.

  • Dates
  • File System
  • Arrays
  • Trees
  • Log Files
  • Summary

Appendix

  • Classes
  • Parameters (Core JElements)
  • Configuration