Warning
This book is no longer maintained. It DOES NOT cover Joomla 5 or later versions.
The missing Joomla reference for extension developers
Copyright ©2022-2024 Nikolaos Dionysopoulos
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
I am currently in the process of writing this book. Many things are missing, even more need refining.
Please keep in mind that I am writing this book on my own time, without any kind of funding, based on my own experiences developing software for Joomla, just for the love of the community. Please be kind.
An HTML version of the book can be found on my personal site.
The book on the site is kept automatically up-to-date. Whenever there is a Git push to this repository —manual or by merging a Pull Request— a GitHub Action deploys the DocBook XML source documents to my site. A CRON job on my site runs every 10', checking if the file has changed. If it's changed since the last run, Akeeba DocImport converts the XML book into HTML and publishes the updated articles. Automation! Mmm!
The normative source format of this book is DocBook XML version 5+. You can find it in the joomla_extensions_development.xml file in this repository.
This file is the “main document”. It has the book metadata and a bunch of XInclude statements pulling in the various chapters of the document, each one stored as its own, editable file in the sections folder.
Pro tip: If you want to edit the XML file easily you can use the free version of the XMLMind DocBook Editor (Personal Edition License). This kind of use is permitted as this book is distributed under an Open Source license making it an open source project for the purposes of XMLMind's Personal License. Remember that the sections in the main document will appear as non-editable. You will need to edit each individual chapter file separately.
If you want to propose changes to the book please submit an issue or make Pull Request against the DocBook XML document. Make sure to check the contribution guide first.
The book can be converted to GitHub-flavored Markdown and EPUB formats using the DocBook XSL stylesheets and xsltproc from the libxslt project.
You can install libxslt on Debian-based Linux distributions with
sudo apt-get install libxslt-devOn Ubuntu you can alternatively use Snap with
sudo snap install libxsltOn macOS you can use the HomeBrew package manager to install libxslt with
brew install libxsltOn Windows you can use the Chocolatey package manager to install xsltproc with
choco install xsltprocAssuming that xsltproc is in your path and the DocBooc XSL stylesheets installed in /opt/docbook-xsl you can convert the DocBook XML sources to chunked HTML under the directory /var/www/html/jextdev with:
xsltproc --nonet --xinclude --novalid \
--stringparam body.start.indent 0 \
--stringparam variablelist.term.break.after 1 \
--stringparam variablelist.term.separator "" \
--stringparam variablelist.max.termlength 12 \
--stringparam section.autolabel 1 \
--stringparam toc.section.depth 5 \
--stringparam base.dir /var/www/html/jextdev \
/opt/docbook-xsl/html/chunkfast.xsl \
joomla_extensions_development.xmlNote 1: do not try to convert the book to HTML, PDF, or ePUB with the Personal Edition of XMLMind DocBook Editor. It is designed to duplicate letters in random words of the output document (the converter is just a preview of their commercial offering).
Note 2: conversion to PDF involves converting the DocBook XML sources to XML:FO and using Apache FOP to convert to PDF. Apache FOP is no longer developed, therefore no effort was spent to optimise the book for PDF export. As a result there are text overflow issues in the numerous code samples in the book which will not be fixed.
Note 3: this repository is not the right place to ask for help about libxslt tools or the DocBook XSL Stylesheets. You're advised to consult the documentation of DocBook XSL Stylesheets and the man page of xsltproc