This updated and expanded edition of Drupal: Creating Blogs, Forums, Portals, and Community Websites contains 362 pages with the index -- ~100 more pages than there was in the first book. It's printed in black and white with screen captures that look like photocopies of photocopies, yet are still legible. The author, David Mercer, expressed on the Drupal website that he wishes his book to become the Drupal community's de facto title for learning the technology. Drupal has a steep learning curve... The book, in my opinion, will save newbies countless hours of aggravation. It contains information that I found useful, although the book is not targeted for developers, nor themers Packt has another book Drupal 5 Themes that decently covers theming, but for Drupal 5. Mercer spends much time here discussing web technologies used with and around Drupal. For example, you'll learn how to install a server on your machine (Apache2Triad), and will get an introduction to HTML! You will not here learn how to install multiple sites that use the same code base, you won't know the steps by which you create a virtual host on your development machine, nor will you learn to properly reference image files in your site content. Most information pertaining to 'scaling' and performance relayed by Mercer can be read right from the Drupal interface. I'd like to mention right off that the book's instructions on how to install a language translation are incorrect. I should also mention that there is an excellent coverage of several contributed modules. You'll find in this book the best introduction I've seen to CCK.
Per chapter detailed review
CHAPTER 1 covers how Drupal came to be and what it has to offer. You get a tour of the Drupal web site. (Mercer mentions the sheer number of support-related posts in the Drupal forums: 200,000). Forums have an advantage over Drupal's IRC channels: forums are archived, and hence searchable.
In CHAPTER 2, we install Apache2Triad on our development machine. Once we've set up our local server, we download and install Drupal 6 using a fresh database. (We are directed to an appendix to learn how to upgrade a Drupal 5 web site to Drupal 6.) Cron jobs are not discussed at this point, the author points us to chapter 10, 'Managing your web site', where they receive a fair treatment. The following is often overlooked: we (as 'admin') can view the Administer section 'By module', rather than 'By task', which is the default. Mercer makes good use of this particular view. In this chapter, we also get to install and configure a contributed module, DHTML Menu. (A module you won't be able to live without.)
In CHAPTER 3, we build a wildlife and conservation web site. We install forums and create content for them, we post a comment, and we learn how to use blocks. We take a close look at the search module configuration page. We learn that we can weigh the importance of three indexing criteria, which affect the order of search results. I learned how to re-index a web site, and then run cron.php manually so that the re-indexing is done right away. This can be very useful. Say you want to place Ad-Sense ads on your site. You need to remove some words from your content, before you seek approval from the censors at Google. You edit your content, but some words still turn up in your web site search results. You are in a hurry, so you want to re-index your content right away. You go to admin/settings/search and press on the button 'Re-index site'. Then you go to admin/reports/status/run-cron.
In this chapter, we also create a custom block.
CHAPTER 4 covers things we modify or set usually only once, such as clean URLs and the download method. We learn that aliasing is a good idea, and are invited to skip ahead and learn how to use the modules Path and Pathauto, covered in chapter 10. We learn how to be both user and search engine friendly.
I was reminded that custom messages can be presented to the user whenever the content he's trying to see is restricted ('access denied') or 'not found'.
Unfortunately, Mercer does not explain how private download can interfere with the proper working of other parts of the site. What parts? For private download, the author sets his file path to the following absolute path: c:\apache2triad\files (p.104), instead of using, more appropriately, the relative path ../files.
CHAPTER 5 covers 'who does what' on the web site, ie: permissions, roles, and access rules. We're reminded in this chapter that any user who has an admin-defined role (such as role moderator) is also an authenticated user. Also, a user who belongs to role x and role y will get combined permissions of roles x and y. That means that if role x is allowed to Do Something, and role y isn't, the user will be able to Do Something. That is why one should create special roles by adding the specific additional permissions that are required by that role, and no more. (p.126). Very wise.
In CHAPTER 6, we learn how to generate simple content and administer it. There is a very nice coverage of the core modules Aggregator and Book.
You can download CHAPTER 7, 'Advanced Content', from the publisher's web site. This chapter covers taxonomy and custom content type creation. We learn that a taxonomy is a hierarchy of 'terms', unlike thesauri, which define 'is similar to' relationships. The contributed module Similar By Terms is mentioned. We learn that multiple vocabularies can be used to provide faceted tagging, although the example used by Mercer to illustrate this concept is weak. It's only further down the road in one of the last chapters (and not by accident, I believe) that we learn that it's possible to access lists of content through their tagged terms using system paths such as /taxonomy/term/1+4.
Coverage of CCK is excellent. We download the contrib module Fivestar to learn how to add a 'contributed field' to a content type, but it's not clear why we would want to do this when we can enable the Fivestar widget for any content type (another contrived how-to example). The chapter also covers input formats and filters, how the former can be created, and how the latter can be rearranged (the order in which they are applied). When creating a 'feature-rich' page, we attach an image file to our node, and display the image in the content using an tag with the 'src' attribute set to: [...] This link will be broken when the file structure will change, such as after deployment. A site root-relative path is preferred: /sites/default/files/team.jpg or, in the case where the content may be posted on another web site through a feed, the URL of the file is even better: [...]
CHAPTER 8 discusses theming. As an exercise, we download, install and customize the Barlow theme. The modifications we bring to it are simple: we upload a new logo, style blocks by modifying block.tpl.php and adding a few rules to style.css, change the background image.
In CHAPTER 9, we learn about Actions and Triggers, new-to-Drupal 6 modules. We also learn how to install a language translation the wrong way ;-) We learn to add a new language and then import to it a .po file that we download from drupal.org. When in fact, no manual 'import' is necessary. What needs to be done is 1) Get the translation tar ball (*.tar.gz file) from [...] then move this file to your web root (in the same folder as index.php), then extract the file. Every extracted .po files (as there are many, many) end up where they're supposed to be. (The translation package has a tree structure.) Then, add the language (going to admin/settings/language/add). The importing of all .po files is then done automatically for you by Drupal.
If we want to translate the interface ourselves, Mercer recommends the use of a contributed module, Localization client, and shows us how to use it. This chapter provides an excellent coverage of content translation, as well. (Interface translation is one thing, content translation is another.) In a section about Drupal caching, Mercer talks about the contributed module CacheExclude which enables one to disable cache for certain pages. Then he offers a very brief jQuery introduction, presenting us with a contrived example script. (We are far away from the succinct yet powerful treatment jQuery gets in the book Pro Drupal Development.)
In CHAPTER 10, we learn how to use the modules Path and Pathauto for path aliasing. We learn how to run crontab, and how to make a backup of our web site. Mercer provides a checklist to help with Search Engine Optimization.
The author adopts a conversational tone (as I do here), is very thorough in his coverage of the Drupal interface, and provides a handful of screen captures in most places.
The book needs more polishing in a few places. The chapter on 'Advanced Content' (the one free to download) seems to have skipped proofreading, as it contains several glaring typos.
The book puts too much emphasis on general recommendations (such as Try not to chop and change too often once the site is live), and spends too much time discussing web technologies despite the author's objective to have provided more concentrated information. For example, Mercer talks in length about the different image formats used on the web, and introduces the reader to CSS and HTML. He spends too little time discussing the working of the PHPTemplate engine. Theming is only brushed upon. While he recommends against using PNG images because IE6 does not render their transparency (there is a jQuery plugin, by the way, that fixes this problem), he goes right along and uses .png files to style blocks in the modified Barlow theme a few pages after. There is no source code nor image files to download on the publisher's web site. (Not yet, anyway.) However, the latter doesn't make it hard to follow along when modifying the Barlow theme, provided one produces his own image files.
This is the 'Missing Manual' anyone new Drupal should read as he or she installs and starts playing with Drupal. The Drupal interface is very intricate, and even an experienced drupaler will tend to forget to look in certain places. It's not unlike a big house with many different rooms and closets. By reading this book, an advanced beginner or an intermediate user will certainly be reminded of a few simple but remarkable features.
Contributed modules 'covered' in the book:
* DHTML Menu
* Similar By Terms (only mentioned)
* Content Construction Kit (CCK)
* Views (only mentioned)
* Localization client
* CacheExclude (only mentioned)
* XML Sitemap (only mentioned)