Joomla 1.5 Extension Development - Lanham
Win a free copy of this book! All you need to do is leave a comment at the end of this review describing why you would like to receive a free copy--courtesty of our friends at Packt Publishing. Please leave your comments by July 31st. I will contact the winner(s) to arrange for shipping (US and EU only, other countries will receive the e-book instead).
Mastering Joomla! 1.5 - Extension and Framework Development, 2nd Edition
Chuck Lanham and James Kennard
In this edition, Lanham teams up with 1st Edition author James Kennard, one of the Joomla! authors I have considerable respect for (read a review of Kennard's 1.5 cookbook).
The goal for this book is to guide the developer through the process of creating components, modules and plug-ins for Joomla! 1.5. Developers are undoubtedly aware that the technical infrastructure of Joomla! 1.5 is significantly different from earlier versions, and requires developers to significantly enhance their skills.
Although the end of my review points out some editorial issues with the index and appendices associated with this book, it's still a solid introduction to Joomla! extension development and one that I would recommend.
Structure
For those who need it, the first chapter provides a nice overview of Joomla's framework, and outlines the development tools that are necessary (and readily available) for use in developing Joomla's extensions. Be aware that this is a relatively brief discussion and will require that you do your own investigation of the development tools available to you. Given the assumption that this title is for relatively advanced developers, odds are this isn't a significant issue.
The book starts with a general description of the extension development and packaging process. Chapters 2 and 3 cover basic object-oriented development principles, working with/extending Joomla's database and packaging an extension. I appreciate that Lanham and Kennard also point out that 1.5 was intended to run with both PHP 4 and PHP5, and devote some discussion to the differences. These feel like challenging chapters, however, because they also attempt a discussion of design patterns. Although good, accurate information, in a future edition, I'd recommend moving some of this discussion into a first chapter, or a preface that has a general section entitled: What you need and what you need to know before developing with Joomla. There's a lot going on here, and I think this might make it easier for seasoned developers to get down to the task at hand.
From my perspective, Chapters 4 through 7 comprise the core of this book, starting with a general discussion about extension design and then devoting one chapter each to component, module and plugin design. Chapter 6 (modules) includes some discussion of template development, and Chapter 7 (plug-ins) briefly discusses language files in the context of translating plugins. Be aware that if you're looking for in-depth discussion of either template development or use of language files and translation, that this text doesn't provide as much depth in these areas.
Chapters 8 through 12 cover additional topics, including how to render output (Chapter 8), modify documents through translation and JavaScript libraries (Chapter 9), working with APIs and Web Services (Chapter 10), Error Handling and Security (Chapter 11) and advanced discussions of utilities and classes (Chapter 12). In many respects, each of these chapters could be deserving of their own book-length discussion. Regardless, Lanham and Kennard provide a good overview.
Review of a specific topic - manifest files
In writing reviews, it's my convention to pick a central concept and explore how the authors cover it to try and develop a general sense of how thorough and organized they are in their coverage. In this particular case, packaging one's extension is a crucial next step, and I've reviewed other titles where poor coverage can cause significant frustration and loss of time the first time through the process. Perhaps I was unfortunate in my choice, but there are significant issues with how this topic is covered:
Preface
The preface for the book references Appendix A - H, with Appendix H providing "detailed information" on the tags required for a manifest file. Appendices B - H were missing from my review copy (note: my copy appears to be a couple of dozen pages shorter than the Packt Web Site lists it as). I next turned to the index to try and determine if this topic were covered elsewhere. The inner chapters of the book also include references to the missing Appendices.
Index
My first tendency was to search for 'manifest file'. There were no entries. Knowing that a manifest file is XML, I next checked that part of the index. The index referred to a number of sections on XML, but only basic information like how to parse an XML file. Still nothing about manifest files. I did a little more digging around and discovered that Chapters 4 and 5 had some information.
Sample Code
In reviewing information on manifest files in Chapters 4 and 5, I noted a couple of issues. Chapter 4 refers the reader (again) to the missing Appendix, and largely lets the process go at that. I still don't know much about manifest files, nor do I know much about what an extension package should look like. In Chapter 5, there is limited information on updating a manifest file, with sample code. It's not a helpful example because the reader is told that the manifest file needs to be modified, but the book fails to follow it's own convention of bolding revisions to sample code. This omission prompted me to browse back through the book and look for examples of revised code. Although it might be true that most of the code lacks revisions or additions, there are virtually no examples of this convention being followed.
That being said, however, the sample code in the book still seems clean, efficient and well-commented.
As mentioned at the beginning of this review, I would still recommend this title, and suspect that the issues described above are largely editorial and could be easily addressed by the editorial team.





