Synopses & Reviews
When you master Joomla! programming, you can customize websites in ways that simply aren’t possible by tweaking parameters or installing someone else’s extensions. Now, there’s an authoritative, “soup-to-nuts” programming guide for every Joomla! user: from beginners with no Joomla! development experience to long-time coders seeking a quick start with Joomla!’s powerful new versions, 1.6, 1.7, and 2.5.
Joomla!™ Programming presents proven best practices for getting the job done right. Written by Mark Dexter and Joomla! design architect Louis Landry (who wrote much of the new Joomla! framework), the text is packed with detailed examples and sample code, in-depth reference-style explanations available nowhere else, and fascinating sidebars revealing why Joomla! works the way it does.
Both a tutorial and reference, this title brings together step-by-step instructions for everything from simple tasks (such as template overrides) to cutting-edge techniques involving components, MVC, and the Joomla! framework. You’ll learn how to
- View Joomla! from a programmer’s perspective
- Extend Joomla! with layout overrides, plugins, and modules
- Take full advantage of Joomla!’s improved new MVC implementation
- Build front-end and back-end components, from start to finish
- Secure your websites with Joomla!’s powerful, flexible new Access Control Lists
- Work with databases and use the new JDatabaseQuery to write complex queries
- Program Joomla! with JavaScript via the lightweight MooTools framework
- Develop custom category structures for your own websites and extensions
- Enable one-click updates for your own custom extensions
- Use the Joomla! platform as an application framework
All example code, updates, and more information on Joomla! programming are available at the companion website, joomlaprogrammingbook.com.
Synopsis
Written from the ground up for the latest version 1.6, this book contains the "why" from an insider's perspective and answers many "Why does it work this way" questions. The book is a comprehensive, soup-to-nuts guide to all types of Joomla! programming. No prior knowledge of Joomla! programming is assumed. Topics covered range from simple (template overrides) to advanced (components, MVC methodology and the Joomla! Framework). This book helps break down the barriers for people to write programs for Joomla. This book will provide simple, step-by-step instructions that inexperienced people can follow that clearly explains the what and why of how to program for Joomla. It also contains in-depth explanations of complex topics for the experienced developer.
Synopsis
When you master Joomla programming, you can customize websites in ways that simply aren't possible by tweaking parameters or installing someone else's extensions. Now, there's an authoritative, "soup-to-nuts" programming guide for every Joomla user: from beginners with no Joomla development experience to long-time coders seeking a quick start with Joomla 's powerful new versions, 1.6, 1.7, and 2.5.
Joomla (TM) Programming presents proven best practices for getting the job done right. Written by Mark Dexter and Joomla design architect Louis Landry (who wrote much of the new Joomla framework), the text is packed with detailed examples and sample code, in-depth reference-style explanations available nowhere else, and fascinating sidebars revealing why Joomla works the way it does.
Both a tutorial and reference, this title brings together step-by-step instructions for everything from simple tasks (such as template overrides) to cutting-edge techniques involving components, MVC, and the Joomla framework. You'll learn how to
- View Joomla from a programmer's perspective
- Extend Joomla with layout overrides, plugins, and modules
- Take full advantage of Joomla 's improved new MVC implementation
- Build front-end and back-end components, from start to finish
- Secure your websites with Joomla 's powerful, flexible new Access Control Lists
- Work with databases and use the new JDatabaseQuery to write complex queries
- Program Joomla with JavaScript via the lightweight MooTools framework
- Develop custom category structures for your own websites and extensions
- Enable one-click updates for your own custom extensions
- Use the Joomla platform as an application framework
All example code, updates, and more information on Joomla programming are available at the companion website, joomlaprogrammingbook.com.
About the Author
Mark Dexter is a Joomla! Development Coordinator, Joomla! Bug Squad Coordinator. He has extensive experience with producing clear, step-by-step instructions for software-related tasks. He has been working with Joomla! for 2.5 years and is a leader on the project. Mark started writing software in the 1970s on punch cards and, for 28 years, co-owned and ran a company that develops software for construction companies. During this time, he did everything from design and development to support, training, and documentation. After retiring he became the webmaster for a small non-profit organization and discovered Joomla. He made the mistake of pressing the Help button and discovered that most of the help documentation hadn't been written yet. So he volunteered to write documentation and has continued to learn about Joomla and try to contribute to the project. In the Joomla! project, Mark is currently a Bug Squad Coordinator, a Development Coordinator, and the Administrator for the Joomla! Student Outreach Program (JSOP). He has been a moderator on the forums, a member of the Documentation working group, and the Administrator for the 2009 Google Summer of Code program. He also has written four extensions. Mark is especially interested in the area of automated testing using PHPUnit and Selenium. Mark lives in Seattle, WA
Louis Landry wrote a large part of the Joomla! framework for version 1.5 and 1.6, and he has been a major design architect for Joomla! for over 5 years. His first experience with computers was playing on a 286 with Basic at his father's office. Louis has programmed in many languages, ranging from low level x86 assembly to managed languages like Java and scripting languages like PHP. He was a founding member of his university's robotics team. Louis is a car nut, and enjoys working on them in his spare time. He lives in Silicon Valley in California.
Table of Contents
Preface xix
Acknowledgments xxvii
About the Authors xxix
Chapter 1: What Is Joomla! Development? 1
Developing for Joomla Is Not Difficult! 1
Joomla Programming:
What Do You Need to Know? 3
Extending Joomla: Let Me Count the Ways 4
Which Extension Type Should I Use for My Project? 14
Using Joomla as a Platform or Framework 15
Summary 16
Chapter 2: Getting Your Workstation Ready for Joomla! Development 17
Requirements to Run Joomla 17
Tools of the Trade 21
Other Tools 38
Summary 39
Chapter 3: How Joomla! Works 41
Tour of Joomla Folders 41
Joomla Platform 56
Web Programming versus “Normal” Programming 58
Anatomy of a Joomla Execution Cycle 61
Naming Conventions (Conventional Wisdom?) 85
Global Objects 85
Overview of Database Tables 86
Summary 89
Chapter 4: Extending Joomla! with Layout Overrides 91
Template Basics 91
Copy Template 105
Template Layout Override of Latest Articles Module 108
Change the Look of a Component: User Registration 121
Alternative Layouts 125
Adding a New Menu Item Layout 126
How Do Layout Overrides Work? 129
Nonlayout Overrides 129
Summary 138
Chapter 5: Extending Joomla! with Plugins 139
What Is a Plugin? 139
How Do Plugins Work? 139
Plugin Types: Where Can You Insert a Plugin? 140
Tour of Selected Core Plugins 142
User Registration Plugin 164
Improved User Registration Plugin 173
Adding Parameters to Our Plugin 179
Using Plugins to Override Core Classes 182
Plugin Best Practices 186
Summary 186
Chapter 6: Extending Joomla! with Modules 187
What Is a Module? 187
Tour of a Core Module 188
Show Articles by the Current Author 197
Summary 227
Chapter 7: Components Part I: Controllers and Models 229
What Is a Component? 229
MVC Design Pattern 230
Back-End Weblinks Component 231
Summary 262
Chapter 8: Components Part II: Views, JForm, and Front End 263
Views and the display() Method 263
WeblinksViewWeblink View 275
Back-End Weblinks Summary 287
Front-End Weblinks Component 288
Summary 304
Chapter 9: Components Part III: Example Component Back End 305
Example Component Functional Overview 305
Detailed Design 306
Back-End Files 307
Subscriptions Manager: Subscriptions Screen 308
Subscriptions Manager: Add and Edit 331
Language Files 349
Installation and Configuration 351
Summary 353
Chapter 10: Components Part IV: Example Component Front End 355
Files Overview 355
Installation XML File 355
Component Entry Point 356
Default Controller 357
Subscription-Category View 359
Subscription View 375
Language File 392
Packaging the Component 394
New Functionality: Back- End Subscriber Report 395
Summary 403
Chapter 11: Working with Your Database 405
Database Overview 405
Creating and Modifying
Tables with DDL Commands 407
Using phpMyAdmin 414
Using SQL Data with DML Commands 419
Designing the Table Structure 429
Working with the Database Inside Joomla 432
Summary 442
Chapter 12: JavaScript and MooTools in Joomla! 443
What Is JavaScript? 443
How Does JavaScript Work? 444
What Is MooTools? 444
How JavaScript and MooTools
Are Used in Joomla 446
Built-In JavaScript Features 446
Using MooTools Extensions 467
Using AJAX in Joomla 467
Using Other JavaScript Frameworks 471
Summary 473
Chapter 13: Using the Joomla! Platform as an Application Framework 475
What Is the Joomla Platform? 475
Why Have a Separate Project? 475
What Can the Platform Be Used For? 476
Platform Example Programs 477
Subscription Monitoring Example 482
Summary 497
Appendix A: Crash Course on PHP and Object-Oriented Programming 499
PHP File Structure 499
PHP Syntax Basics 500
Common Operators 502
If Statements 503
Switch Statement 505
Looping Statements 505
Alternative Syntax 507
Variables 508
Arrays 508
Constants and Current Directory 510
Functions and Methods 511
Including Files and File Types 512
Object-Oriented Programming Basics 514
Simple Debugging 518
Some Advanced Code Techniques 519
Appendix B: Joomla! Filter Types 523
HTML Filtering 524
Using Filtering in Joomla Applications 524
Appendix C: JHtml Methods 527
Calling JHtml Methods 527
JHtml Class Methods 528
HTML Folder Classes 529
Glossary 533
Index 539