banner

Book index

The following is a copy of the books index, showing you the 15 chapters of the book plus their sections (subchapters). Click on a chapter to collapse its subchapters tree.

  • Chapter 1 - Introducing Joomla plugins
    • 1.1 - What are plugins?
    • 1.2 - Plugin types in the Joomla core
    • 1.3 - Plugins & events
    • 1.4 - Some words on using plugins
  • Chapter 2 - Ingredients of a basic plugin
    • 2.1 - Before you begin
    • 2.2 - Start of a Joomla plugin
    • 2.3 - PHP opening with _JEXEC()
    • 2.4 - A plugin class and its methods
    • 2.5 - Adding an event method to the class
    • 2.6 - Dummy code
    • 2.7 - Public, private and protected
    • 2.8 - Adding your own task methods
    • 2.9 - PHP 5.4 and E_STRICT
    • 2.10 - Reserved variables and methods
    • 2.11 - GNU General Public License
    • 2.12 - Basic XML manifest
    • 2.13 - Empty index.html file
    • 2.14 - Discover using the Installation Manager
    • 2.15 - Result on the frontend
  • Chapter 3 - XML and related stuff
    • 3.1 - Extension tag
    • 3.2 - XML header or not
    • 3.3 - Basic tags
    • 3.4 - Files & folders & media
    • 3.5 - Media
    • 3.6 - Using language files
    • 3.7 - Installation parts and real time information
    • 3.8 - Packaging plugins with other extensions
    • 3.9 - Adding SQL statements to your plugins
    • 3.10 - Executing custom scripts
    • 3.11 - Dealing with updates
  • Chapter 4 - Plugin parameters
    • 4.1 - Using parameters
    • 4.2 - Defining parameters in XML
    • 4.3 - More field types
    • 4.4 - Using plugin parameters in PHP
    • 4.5 - Defining new field types
  • Chapter 5 - Content Plugins
    • 5.1 - Introducing content plugins
    • 5.2 - Plugin events
    • 5.3 - When are these content events thrown?
    • 5.4 - Adding your own fields to com_content
    • 5.5 - Changing forms conditionally
    • 5.6 - Removing and modifying fields
    • 5.7 - onContentChangeState
    • 5.8 - Adding CSS and JavaScript
    • 5.9 - Changes when looking back at Joomla 1.5
    • 5.10 - The onContent prefix
    • 5.11 - Shortcuts
    • 5.12 - Plugin events in third party CCKs
    • 5.13 - UCM (Unified Content Model)
    • 5.14 - A word on content versioning
  • Chapter 6 - System Plugins
    • 6.1 - Introducing System Plugins
    • 6.2 - Plugin events
    • 6.3 - Example: Add HTML tag to body
    • 6.4 - Skipping execution for the Joomla backend
    • 6.5 - Example: Dealing with regular expressions
    • 6.6 - Using System Plugins instead of Content Plugins
    • 6.7 - System event onBeforeRender
    • 6.8 - System event onBeforeCompileHead
    • 6.9 - Modifying the incoming request
    • 6.10 - Modifying forms with System Plugins
    • 6.11 - Alternative error handling
    • 6.12 - Alternate SEF handling
  • Chapter 7 - Authentication Plugins
    • 7.1 - About authentication
    • 7.2 - Core Authentication Plugins
    • 7.3 - A basic Joomla authentication plugin
    • 7.4 - Authentication options
    • 7.5 - Adding a login hash
    • 7.6 - Two Factor Authentication (TFA)
    • 7.7 - IMAP login
    • 7.8 - Actually not Authentication Plugins
    • 7.9 - Authentication Bridges
    • 7.10 - A word on authentication protocols
    • 7.11 - Some events that we skipped
  • Chapter 8 - User Plugins
    • 8.1 - User Plugins in the Joomla core
    • 8.2 - Events of User Plugins
    • 8.3 - Saving and deleting users
    • 8.4 - Using non-user events in User Plugins
    • 8.5 - Extending user profiles
    • 8.6 - Extending usergroups
    • 8.7 - Reacting to logins and logouts
    • 8.8 - Blacklisting users by IP
    • 8.9 - Event onUserAvatar
  • Chapter 9 - Extending search
    • 9.1 - Explaining normal search and Smart Search
    • 9.2 - Creating a regular search plugin
    • 9.3 - Creating a Smart Search plugin
    • 9.4 - Combining Smart Search with remote APIs
    • 9.5 - Using external search engines
    • 9.6 - Integration with Sphinx
    • 9.7 - Integration with other search engines
  • Chapter 10 - Editors, buttons, icons, CAPTCHA
    • 10.1 - Editor plugins
    • 10.2 - Button plugins
    • 10.3 - Quick Icon plugins
    • 10.4 - CAPTCHA plugins
  • Chapter 11 - Other plugins and events
    • 11.1 - Extension plugins
    • 11.2 - Installer events
    • 11.3 - Contact plugins
    • 11.4 - Other events
    • 11.5 - Third party plugins
    • 11.6 - Calling plugin events from within components
  • Chapter 12 - Joomla Architecture
    • 12.1 - Platform or framework?
    • 12.2 - API
    • 12.3 - Common design patterns
    • 12.4 - Joomla boot procedure (or bootstrap)
    • 12.5 - How plugins work internally
  • Chapter 13 - Tips and tricks
    • 13.1 - Using Joomla plugins without the Joomla CMS
    • 13.2 - Adding templates to your plugin
    • 13.3 - Loading class files
    • 13.4 - Using a plugin to add new JFormFields to Joomla
    • 13.5 - Customizing the constructor
    • 13.6 - Creating a custom plugin per project
    • 13.7 - Debugging your own code
    • 13.8 - Manipulating plugins in the #__extensions table
    • 13.9 - Finding out about plugin events
  • Chapter 14 - Best practices
    • 14.1 - Letting your plugin grow and grow
    • 14.2 - How to write a bad plugin
    • 14.3 - Validating code compliance
    • 14.4 - Testing your plugin with PHPUnit
  • Chapter 15 - Releasing your plugin
    • 15.1 - Testing in actual Joomla environments
    • 15.2 - Semantic versioning
    • 15.3 - Packaging your plugin
    • 15.4 - Documentation and support
  • Appendices
    • Appendix 1 – Flow chart of System Plugin events
    • Appendix 2 – Flow chart of the login process
    • Appendix 3 – Listing of code examples