Review: Drupal 6 Site Blueprints From Packt Publishing

A few weeks ago Packt Publishing sent me Drupal 6 Site Blueprints to review… and then things got kind of busy for me.  Over the holiday I’ve taken some time to read through it, and unfortunately, i would not feel comfortable recommending this book for reasons I will enumerate below.

Reading chapters from this book I have moments that remind me of the scene in Spinal Tap when the Stone Henge props arrive and they are 21 inches tall instead of feet tall because of an imprecise documentation on a cocktail napkin.  You might get something built by following the instructions provided, but it is probably not going to be what you really want.

First a note on the overall structure of the book: It would have served the audience better to have a chapter about some basic tasks that are repeatedly explained in each chapter, like creating and configuring vocabularies, modifying menus and creating new content types. Once explained in some more detail, the author could simply have referred back to those general instructions rather than repeating overly simplified instructions in each chapter, thus the reader would get more info, and the page count would not have gone up.

Another missing piece is explanation — or justification — of module choice.  One of the biggest challenges facing novice and even intermediate Drupal site builders is how to decide which modules to use when two modules do similar things. Drupal 6 Site Blueprints barely even suggests that there might be another module you would want to use, let alone explain why the author chose the module he did. The same is true for larger issues like using taxonomy to indicate location rather than location module. A few examples of this are:

  • Use of core profile module rather than content profile, especially in chapter 5 “Drubook” a community site (like Facebook).  At CivicActions we almost always use content profile for sites with social networking like profiles because of the added flexibility of having profiles as actual nodes rather than entries in a clumsy, slow and hard to query key-value table.
  • Using the Image module rather than Image API. Again, at CivicActions we rarely use the image module and almost always use Image API, along with modules like IMCE, WYSIWYG API and TinyMCE to allow users to embed images in their nodes.  For images attached to nodes we would use CCK with File Field. Another note here is that there is no mention in the book that I found of how to install TinyMCE (requiring a separate library download from the TinyMCE website in addition to the TinyMCE module, or WYSIWYG module). Further more there is no explanation of configuring TinyMCE tool buttons, or changing the allowed HTML in the Filtered HTML input format.  In Chapter 1 when the idea of using TinyMCE is introduced, it is done in passing with no details whatsoever. Note: The book may have been written before WYSIWYG API became the more accepted solution to embedding WYSIWYG editors.
  • Using Taxonomy rather than Location. I can understand why one might opt for the simpler solution of using vocabularies for Continent, Country and City rather than using the location module, however there are some serious implications to that decision and the options are not discussed in any chapter of the book even though the same solution is presented in multiple examples, including an example for events in Chapter 4. In most cases a site would want precise locations for events so the users can actually find them.

Throughout the book the author suggests moving menu items out of the navigation menu and into the primary menu, but then suggests enabling the primary menu block in a side bar. Screen shots throughout show the same menu items in a horizontal primary navigation menu and in a menu block in a side bar. In my opinion this is pretty bad from an IA standpoint.  There is also no mention of disabling the navigation block for anon users, which it would seem the author intends because the navigation menu block does not appear in most final screen shots.

In Chapter 1, which is a site that will have only one authenticated user — a basic personal vanity site — there is no mention of the defualt comment settings.  Even the screenshots of this site show an “Add New Comment” link on the “About Me” page, which would probably not be desired, and would prompt the site visitor to login or register.

Chapter 4, the event site example, calls for using the event module which has never been released for Drupal 6 (only development versions). At CivicActions we would use CCK, Date and Location modules to create an event content type, and I believe that this is the way most people would accomplish this.

Chapter 5, the social networking site, calls for using Organic Groups, but glosses over configuration and usage of organic groups in less than a page.  Having build numerouse sites that make use of organic groups, I would have to recommend far more detail about the various OG settings and permissions.  The author does not even refer the reader to a Drupal handbook page for more information. There is also no mention of “friend” fucntionality, which could be explained by the fact that neither buddylist2 nor friendlist have stable releases for Drupal 6, however it would seem worth noting that this might be desired functionality and that right now (or as of the writing of the book) there was not a stable solution for Drupal 6.

Chapter 6 offers the example of a newspaper website.  Instead of creating a single article content type with a variety of fields that most newspaper sites would have (sub title, by line, teaser, to name a few), the author suggests a different content type for each section of the paper, which i think most site builders would distinguish through the use of a taxonomy vocabulary and terms for “Department” or some such.

One problem with all of the examples I reviewed above is that they oversimplify the requirements and rush through the instruction about configuration with barely any discussion about how the requirements could be met in multiple ways, or why the solution provided in the example was chosen. As soon as someone would sit down to create a real world version of one of those types of sites they would likely run into dozens of questions and requirements that are not mentioned in the examples, and have no tools provided by this book on how to figure out a solution for themselves.

Having been thoroughly dissappointed by through the first 6 examples, I skimmed the last 6 which were all more complex in terms of requirements (e-commerce, directory, photosharing, Conference Venue/bookiing site, google map site, and a news aggregator) and made the determination that if the author couldn’t get it right on the simple ones, the chances that the instruction for the complex ones was of value was pretty slim.

Bottom line, this is not a book that I would recommend for learning about the capabilities of Drupal and how to build a variety of different types of sites.I am sure there are other titles from Packt and other publishers that would give the intermediate user more useful information about building sites with Drupal. Combine those titles with the wealth of examples that can be found for building sites with Drupal on the web, and the supportive communities, and you would be better off.