Known to the MODx community as "sottwell", I've been a developer and contributor to MODx since its beginnings, so I'm well-familiar with W. Shawn Wilkerson's contributions to the MODx community over the past six years. He is the founder of Sanity LLC, a technology integration company, and holds 9 degrees in programming and web design. His book on MODx Revolution, subtitled A Journey Through a Content Management Framework, was published in August of 2012 by Sanity Press, with ISBN 978-0985853204. It has some 600 pages, with 19 chapters divided into 5 sections.
This begins with the obligatory introduction to what MODx is (and is not). Use MODx as it installs for nearly instant, fully-functional sites, or turn it into a framework for complex web applications.
The second chapter introduces the Manager interface. This is an excellent place to start for new MODx users. We are taken step-by-step through the Manager, with each feature and function explained. Of special importance is the tree structure that lists the content Resources that provide the main content elements for each page, this tree structure reflecting the overall site structure.
Shawn explains how the Manager itself is built on the core MODx framework, and so it is customizable and even totally replaceable
The next five chapters discuss the basic building-block elements that are used to build a MODx site. The coverage of these elements is by no means superficial, everything from customizing the Manager forms for creating and editing them to how they are stored in the database to how to format and manipulate their final output on your web page is explained. Plenty of actual useful code samples and in-depth explanations make it easier to understand how MODx builds up a site using these modular blocks of content and content-generating elements. One entire chapter on Output Modifiers caught my attention here, as it covers a topic often overlooked or, conversely, overused.
The Quick Start chapter walks through the simple procedure to create a basic website after installing MODx, from a few basic System Settings such as a name for your site, through setting up the Template for your pages and assigning it to the Resources that will provide the main content for the pages, using Chunks, Snippets and Template Variables to add dynamic content to your pages, and installing and using third-party add-ons via the handy Package Manager. A complete site, with a dynamic menu structure, search functionality and a contact form can be set up in less than an hour, using any one of thousands of free HTML templates as the base Template.
The rest of this section goes on to show how common Web essentials such SEO, AJAX, friendly URLs and
The MODx Revolution user management system is a complex network of users, user groups, roles and policies, based on the ACL model of user management. This section is vital to understanding how to control and manage user access to both protected sections of your front-end site and limit Manager functionality. With plenty of screen shots and examples, the reader is gently guided through the whole inter-related subject of organization and controls.
The chapter on Contexts explains how this feature can be used for dividing the site into sections. Contexts can be used to manage separate domains, allowing multiple websites to be managed from one MODx installation. They are also used to provide virtual subdomains or subdirectories for easy management of multi-language sites. Again, plenty of screen shots and examples open up the possibilities of using Contexts. Some of the limitations and pitfalls of using Contexts are explained and resolved.
Since this is not exactly a beginner's tutorial on OOP, the section begins with a brief overview of what OOP is, with some useful links to OOP and OOP in PHP tutorial sites. Then it continues by describing the fully object-oriented MODx Revolution API and the basic $modx object. MODx, like most CMS applications, relies heavily on the database, so there is an emphasis on understanding the database access methods and how MODx stores and caches data. Using the API simplifies just about every facet of MODx development, and the explanations and examples here make this a good reference to keep close at hand.
The foundation of MODx Revolution, the xPDO ORB/ORM object library, is extensively discussed. Coding best-practices are discussed. Real-world, complete, functioning and useful examples abound.
The section ends with how to install and use third-party add-on packages, and how to create your own packages.
Everything from MODx Revolution terminology through system settings and how the MODx parser works, ending with an interesting set of "rules", shared nuggets of hard-won programmer philosophy, make the Appendix another useful resource.
The book is clearly based on a deep understanding and love of programming, web development, and of MODx Revolution itself. One thing I especially appreciated about the layout of the book is the extra large font used for the code examples. It does't make for a pretty layout, but it's a great improvement in usablity over the usual prettier blocks of small, often hard-to-read text. This is even more significant when considering that Shawn is the founder and CEO of Sanity/Sanity Press. While typos and grammatical errors are common, this was understandably explained by the need to get such a book published and available before the fast movement of the web development world in general and MODx in particular make it at least partially obsolete. A year later, it's still covering material well within the leading edge of MODx Revolution functionality. The occasional personal ramblings actually give us an insight into Shawn's programming philosophy, and make the whole book seem more like a personal message, almost a conversation, than a cold presentation of facts. Overall, this is an excellent book, I very much enjoy it, use it, and recommend it.
The book can be purchased from Sanity Press and Amazon. A Kindle version is in process."