Stories
Slash Boxes
Comments

News for nerds, stuff that matters

Slashdot Log In

Log In

Create Account  |  Retrieve Password

Pro Drupal Development

Posted by samzenpus on Wed Jun 06, 2007 01:29 PM
from the read-all-about-it dept.
Michael J. Ross writes "If a Web site needs to be developed as quickly as possible, or it needs to support collaborative content, then usually the best approach is to use a content management system (CMS). There are many CMSs from which a Web developer could choose, including Drupal, which is considered by many to be the most powerful, extensible, and logically organized of them all. Installing Drupal and using it to create a simple site, is fairly straightforward, in part due to its relatively excellent documentation. For much of its existence, there has been far less information available on how to extend a Drupal site with one's own modules, themes, blocks, etc. That need is now met by a new book, Pro Drupal Development." Read on for the rest of Michael's review.


The book was written by John K. VanDyk and Matt Westgate, both of whom are experienced computer programmers, who years earlier had created their own CMS. In their book's Introduction, they confess to discovering Drupal and its many advantages, switching over to it, and presumably abandoning further development of their own CMS. This speaks volumes about their regard for Drupal, because an individual programmer or programming team can give no greater vote of confidence for a technological product than to voluntarily end primary allegiance to a competing product that they themselves birthed and nurtured.

Pro Drupal Development was published by Apress, on 16 April 2007, under the ISBNs 1590597559 and 978-1590597552. The publisher offers a Web page on their site dedicated to the book, where the visitor will find all of the book's source code, as well as the table of contents and a sample chapter (Chapter 8 — The Theme System), in PDF format. In addition, there is a link for errata, which leads to the authors' own book site. At the time of this writing, there are three dozen entries, contributed by the authors and their readers. The authors' site also has links for downloading the source code by individual chapter, and a blog that focuses on the book.

The book's material, spanning 428 pages, is organized into 23 chapters and two appendices. Unlike the majority of technical books nowadays, this one does not have the chapters organized into labeled parts. Nonetheless, the chapters and appendices roughly fall into three categories: how Drupal works (Chapters 1, 19, and 23, and Appendix A), how to customize it (Chapters 2-18 and 22), and how to optimize your Drupal development efforts (Chapters 20-21, and Appendix B). The customization chapters cover a wide range of topics: modules, menus, databases, users, nodes, themes, blocks, forms, filtering, searching, indexing, files, taxonomy, caching, sessions, jQuery, localization, and optimization.

Each one of these topics is explored in laudable detail, with plenty of sample code and figures to illustrate the key concepts. The greatest strength of this book is the depth of its coverage, and the methodical way that the authors go about presenting the material. They are clearly quite serious about Drupal itself, and about conveying to the reader all of the knowledge that they believe is important for the reader to master. In fact, anyone attempting to read the book cover to cover might find the presentation quite dry, with no evidence of humor or even a sense of fun, unlike so many other recent programming books. On the other hand, one can argue that the value of this information alone to the reader who is equally serious about mastering Drupal, should be sufficient. Regardless, be warned that this is definitely not a book that one can read through at a fast pace, absorbing the bulk of the information. The innards of Drupal alone make it a challenging subject for dissection; learning how to modify Drupal's behavior, is even more so.

Yet if anyone is interested in mastering the inner workings of Drupal, and how to customize them, this is the book of choice. It may be a bit dry, but it is quite meaty, and the material is clearly presented. Moreover, the publisher, Apress, has done an admirable job with this title. The layout is clear; the index is substantial; and, as with their other titles, they offer two different versions of the table of contents — high-level, listing the chapter titles only, and detailed, listing the sections and subsections within those chapters.

Another aspect of this book that I applaud is the efficient use of page space, through the use of top and bottom margins that are noticeably smaller than those found in the typical computer programming book. This is especially true of the bottom margins. For instance, on page 117, the text comes within one centimeter of the bottom edges the page — something I've never seen before in a professionally printed book. At first it might strike one as sloppy, but actually should be appreciated by anyone who is tired of technical books using excessive margins for padding out a much more limited amount of information into an even greater number of pages. This is a practice that I would recommend to all other publishers, technical or otherwise.

However, the book does have some weaknesses, which is probably to be expected in any first edition. The sample source code in many cases could benefit from more use of whitespace — particularly for the PHP code. But with any code found in a book, there is always the possibility that such instances of compressed code result from a conscious decision given the limited width of the printed page. But in most such cases in this book, that reason would not be applicable.

The authors do not warn the reader that a solid understanding of PHP is needed for using the book's ideas and sample code. Near the end of the Introduction, they suggest that if the reader is new to Drupal, then he or she should read the chapters in sequence. The authors should also note that if the reader is new to PHP, then it would be better to first get up to speed on PHP before trying to digest and make use of this book. Such points might be obvious to most readers, but they should be clarified up front, perhaps in the Introduction, for the benefit of anyone browsing this title in a bookstore, and wondering if they already possess the technical know-how required by the book.

Similarly, the authors also do not mention that the book is, for the most part, only applicable to Drupal version 5, and not version 4 or earlier versions, since there have been some dramatic changes with the release of version 5. In fact, given the extent of the changes and how that would impact the utility of the book depending upon what version of Drupal the reader is using, it should be noted on the book's cover, as an increasing number of publishers are doing.

A couple of minor problems were in evidence in the first dozen pages. On page 3, the authors refer to "user 1," which is likely to confuse most readers, because it looks like a username, and would be unfamiliar to someone who has installed Drupal and created a Web site, without extensive reading of the Drupal documentation. On page 11, the authors discuss core modules, and where they can be seen listed in the administration area of Drupal. But the path that they provide, "sites/all/modules," is incorrect, because that is where user-added modules are placed, of which there are none in a default installation. (The second mention of that path, in the fourth paragraph, is correct.)

Lastly, when the book is opened up to any of the pages not near the center, the book immediately flops closed. The use of lay-flat binding is strongly urged, for future editions of this book and all others that Apress offers.

Despite these weaknesses — all of which are fixable — Pro Drupal Development is strongly recommended for any PHP programmer who wants a truly in-depth look at how Drupal works and how to make the most of it.

Michael J. Ross is a Web developer, freelance writer, and the editor of PristinePlanet.com's free newsletter.


You can purchase Pro Drupal Development from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
+ -
story
This discussion has been archived. No new comments can be posted.
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More
Loading... please wait.
  • by mi (197448) <mi+slashdot@aldan.algebra.com> on Wednesday June 06 2007, @01:32PM (#19414295) Homepage

    in part due to its relatively excellent documentation

    Nice term... So, depending on the base, the same thing could also be called relatively shitty, or relatively mediocre? Indeed, it can...

    Everything is relative, is not it? So why say it?

    • Everything is relative, is not it?
      Some wacky german guy with a bad haircut told me the speed of light in a vacuum is invariant.

      So I told him, "get a job, you hippy!"

      • Re: (Score:3, Interesting)

        I haven't tried drupal.
        I have tried Joomla (on crack. I just don't quite understand how the people using it can call it intuitive), Mambo (see my Joomla snide comment), PostNuke (rocks, pure and simple. Very Free), DotNetNuke( pretty good, more stable than postnuke, slightly. Free, but apps usually cost) and most recently, Community Server.

        I freaking love community server personal edition. free. fair docs, but you don't need 'em. stable. can't expand it easily, but it comes with a blog, file, photo, forum,
        • Re: (Score:3, Informative)

          I haven't tried drupal.
          I have tried Joomla (on crack. I just don't quite understand how the people using it can call it intuitive), Mambo (see my Joomla snide comment), PostNuke (rocks, pure and simple. Very Free), DotNetNuke( pretty good, more stable than postnuke, slightly. Free, but apps usually cost) and most recently, Community Server.

          Hadn't heard of community server. Now I know why :

          Community Server runs exclusively on the Microsoft web application platform. This enables Community Server to focus o

          • PhpNuke & Postnuke, in that order. PhpNuke has sort of fallen to the wayside, all the cool kids develop for Postnuke now. and everything, and I mean everything, is changeable. look & feel is mainly based on stylesheets, and there are a zillion pre-made "themes" out there for free.
            Postnuke is fun. I've been playing around with this whole web thing since around '95-'96, and tried a lot of different things; PostNuke seems to be the best "platform" I've seen, it is powerful, and very, very easy to embed
          • by twinkie_away (1112367) on Wednesday June 06 2007, @04:35PM (#19416955)

            I like Drupal. It has a dedicated security team. That helps me sleep at night.

            I like that each bit of HTML content that Drupal puts out (like the user login form, for example) and be easily overridden or modified without changing any core code (I just make a template file and do it there and Drupal automatically sees it).

            I like that the output from Drupal is already in semantically meaningful CSS classes. If I want to tweak the way the breadcrumbs look, I just override the breadcrumb class in my own style.css file. Ditto for titles, menus, etc.

  • Glad to See (Score:4, Funny)

    by techsoldaten (309296) on Wednesday June 06 2007, @01:41PM (#19414451) Homepage Journal
    Glad to see the

    reviewer is paying

    attention the ample

    margins throughout the

    book. It helps me

    make a purchasing

    decision, I really

    only ever buy books

    with good margins.

    M
    • I'm glad to see that
      . . someone is paying attention to
      . . . . the Live Ink [venturebeat.com] text formatting.

      It makes text
      . . so much easier
      . . . . to read!
  • Logically organized? That's a funny phrase; Most of us who have programmed know that logic != intuitive. Just take a look at any interface designed by a programmer. It's logically organized, but intuitive? Hardly every. /pedantic
  • Drupal on Dr. Dobbs (Score:5, Informative)

    by twinkie_away (1112367) on Wednesday June 06 2007, @02:11PM (#19414873)
    It should be noted that the first chapter of the book is available on Dr. Dobb's [ddj.com] and gives a good overview of what Drupal is and how it works.
  • MediaWiki (Score:4, Interesting)

    by saibot834 (1061528) on Wednesday June 06 2007, @02:15PM (#19414967) Homepage
    I'm the Administrator of my school's homepage and I use the software MediaWiki [mediawiki.org] also used by Wikipedia. Of course, it's designed mainly for community projects such as Wikipedia and Wikia [wikia.com]-Wikis but it works equally well with few editors. And you have the big advantage of being able to open up your homepage, making it editable by others (in my case, the teachers and perhaps even students).

    What I don't like about Joomla and all those WYSIWYG [wikipedia.org]-Editors is, that the homepage is not standardized. Every editor has his own way of formatting and making headlines and so you get many pieces instead of _one_ homepage. With MediaWiki you just enter
    == Headline ==
    and every headline looks the same.
    IMHO, MediaWiki is a great choice, particularly if you have more than one editor.
    • Theres now a module to have a wiki-text filter for Drupal, so if you want to format text like usuale wikis, just install that module.
    • You're talking about syntax as a thing that's defining the difference between wikis and CMSs while in fact this is just a way of entering data. As my sibling noted, you can use wiki-like syntax in Drupal. You can use a regular html, bb-code, a few different wysiwyg editors and heck knows what else.

      What I don't like about Joomla and all those WYSIWYG-Editors is, that the homepage is not standardized. Every editor has his own way of formatting and making headlines and so you get many pieces instead of _one_

  • The sample source code in many cases could benefit from more use of whitespace -- particularly for the PHP code.

    I haven't read the book, so I don't know which direction they have gone, but this either means that they are following or breaching the Drupal conventions for code formatting. Drupal has an entire document on coding standards [drupal.org], and someone who HAS seen the book could perhaps comment on whether the examples follow the standards or not...

  • by Just Some Guy (3352) <kirk+slashdot@strauser.com> on Wednesday June 06 2007, @02:42PM (#19415415) Homepage Journal

    I just tried Drupal for the first time a few weeks ago whenever Google was having problems with their personalized site and I wanted to make a self-hosted equivalent. I have to say that it's just about the slickest CMS I've played with. I installed a couple of modules, configured everything through the web admin, and got my own personal My Yahoo! workalike.

    I liked Plone but it always felt over-engineered and sluggish. Drupal, on the other hand, seems light and quick. I don't really have much else to add the the conversation, except to say that it's worth trying if you're looking at CMSes.

    • Having just had to develop a small site using Plone (having never used it or Zope before) I know what you mean. The trouble as I see is that it's based on Zope, which is transitioning from version 2 to 3 (a major change), and so you've got bits of both underlying Plone, with additional integration code which confuses issues even more. Plus developing for Plone has changed a lot from version 2 to 2.1 to 2.5, and the documentation is pretty rubbish - lots of it is outdated, and even more of it is a nightmare
      • Well, I love Zope, or at least like it an awful lot. I "get" Plone. But it seemed like the opposite of its goals, like a giant interdependent ball of dependencies. Drupal was such a breath of fresh air. Want stock quotes? Install the stock quote module and add it to the lefthand column. I'm always a little skeptical of PHP-based projects because so many of them are awful, but Drupal seems like a very decently engineered package. Plus, those sub-second page load times without setting up ZEO clusters a

  • I can't find out what version of Drupal the authors based this book on. Anyone know?
    • I can't find out what version of Drupal the authors based this book on. Anyone know?

      Ummm, you could read the review :-) :

      Similarly, the authors also do not mention that the book is, for the most part, only applicable to Drupal version 5, and not version 4 or earlier versions, since there have been some dramatic changes with the release of version 5. In fact, given the extent of the changes and how that would impact the utility of the book depending upon what version of Drupal the reader is using, it sho

  • I just bought the Nintendo DS Browser (Opera), and the sole problem I have with it is that it doesn't store passwords or cookies. Is there a way to bookmark a login URL for Drupal so that I don't have to manually log in each time? I've tried replacing the POST with a GET in the normal login form, but I'm guessing that it expects some cookies to be set before you can actually submit that.

    Bonus points and a case of beer for anyone who knows how to write a Squid plugin to store and transmit cookies on a pe

    • Joomla is for people who are not technically inclined, but willing to learn a little in order to make a decent site. It is great for that LARGE community of people and it does work well. That being said, Drupal is the choice for programmers looking for a powerful CMS that is documented well and easy to extend in many more ways. You have much more control over Drupal than with Joomla. You can look at it this way:

      Suppose you have a house and you are looking to do some work on it, you know facelift, upgrade
        • I think you just disagreed with me and then reiterated the same points I made? :) Just have replied to the wrong one?
        • They are part of huge programs. It is not like there is 5 files or something. Not to mention all the database connectivity and such, it can be a real pain to change things. Every CMS organizes everything differently but Drupal has the best organization and structure that leads to the most manipulatable code.
    • by truthsearch (249536) on Wednesday June 06 2007, @02:07PM (#19414821) Homepage Journal
      I looked a Mambo a few years ago and the code was pretty much as bad as I could imagine. It was so poorly written that I didn't even install it to try it out.

      Drupal, on the other hand, is extremely well written as Dries is very strict about submissions to the core. I know Drupal inside and out and that's only possible because it's very well written and documented. An entire site is dedicated just the automatically generated API documentation.
      • Drupal, on the other hand, is extremely well written...

        Yup. I work for an ISP and I've installed and configured about eight different CMS's, not counting shopping-cart systems.

        Drupal is the only one I've seen whose internals are reasonably clean and straightforward.

        In every other case, when I looked at the code, my immediate reaction was, "I should rewrite this; It's too sloppy to maintain."

        In many cases I had to edit nearly half the files just to eliminate unassigned variable warnings, or to turn off the Register_Globals option, or to make it work in "Safe

    • Re: (Score:2, Informative)

      I've used both Joomla (1 and 1.5) and Drupal (5) extensively in multiple projects, personally and professionaly. Hands down, Drupal is more powerful, better thought-out, and sports an excellent community and community-contributed content.

      That's not to say Joomla is bad -- in fact, it's very good, and like you said, 1.5 could bring a revolution in CMS = Framework -- but many of the advances 1.5 will make have already been realized in Drupal 5.

      In addition, the shear number of extensions for Drupal combined wi
    • Is that like "relatively excellent" ?
    • Writing your own library/classes like that (I do the same) also lets you avoid the cookie-cutter vulnerabilities out there. The big CMS offerings are prime targets for those. I don't have any installed, and I get lines in my apache log for them all the damn time.
      • Drupal's pretty good about staying on top of those vulnerabilities. The problem is that many sites never upgrade once they install.
    • cool young web company who were sick of there being thousands of CMS's and every web company having there own.


      I don't queston its quality (hell, I haven't even tried it). But still:

      There was this web company who was sick of every web company having their own CMS, so they made their own CMS?
        • Mh. I must go check this out. Previously when I've seen any 3 CMS being mentioned in one sentence, the third one (besides Drupal and Joomla) was Typo3... strangely, I never heard of SilverStripe before.
    • Is it possible to generate static web pages by Drupal? If this is not possible by Drupal, which open source CMS can satisfy my requirement?

      Alternatively, you could park the whole thing behind a Squid reverse proxy, or even use Apache's own caching. One tenth the effort and all the performance.

        • I think you missed the point.

          No, I think you did. The dead easiest way for any CMS to make static pages is to put a proxy server in front of it. A visitor requests foo.php, the proxy saves the output to disk, and the next visitor gets the cached ("static") copy.

          This has huge advantages. First, you don't have to to pre-generate every single page on your site whether it's going to be served or not. Second, the cache doesn't expire everything simultaneously so your CMS can idle along happily only gener