Slashdot is powered by your submissions, so send in your scoop


Forgot your password?

Book Review: Drupal For Designers 77

Michael Ross writes "Of all the open source content management systems used for building websites, Drupal has a reputation for being one of the most flexible and powerful available, but not the easiest for web designers to use. Drupal version 7 has made some strides in alleviating those flaws, but there is still much progress to be made. During the past few years, a number of books have been published that explain how Drupal designers can do custom theming, but they tend to focus on the technical details of the theme layer, and not the practice of web design when using Drupal as a foundation. That rich yet neglected subject area is the focus of a new book, Drupal for Designers: The Context You Need Without the Jargon You Don't." Keep reading to see what Michael has to say about the book.
Drupal for Designers
author Dani Nordin
pages 328 pages
publisher O'Reilly Media
rating 8/10
reviewer Michael J. Ross
ISBN 978-1449325046
summary How to design and manage Drupal projects.
The book's author, Dani Nordin, is a Massachusetts-based web designer and the founder of The Zen Kitchen, a UX design business. The book was published by O'Reilly Media, on 1 August 2012, under the ISBN 978-1449325046. The publisher's page offers a description of the book, the table of contents, an author bio, and some free sample content (the first chapter). This publication is a compilation of three previously-released short guides — Planning and Managing Drupal Projects, Design and Prototyping for Drupal, and Drupal Development Tricks for Designers — with additional material. All of these books were written by Dani Nordin, and comprise the "Drupal for Designers" series by O'Reilly Media. (My thanks to the publisher for a review copy of this particular title.)

The book's material spans 328 pages, and is organized into seven parts, which do not include the introduction or the first chapter. The seven parts — each comprising at least two chapters — are largely presented in the same order that a typical reader would want to learn and implement the recommendations: Discovery and User Experience; Sketching, Visual Design, and Layout; Setting Up a Local Development Environment; Prototyping in Drupal; Making It Easier to Start Projects; Working with Clients; and Sample Documents.

Unlike most introductory Drupal books, this one wisely begins with a helpful dictionary of Drupal terminology. The first chapter also discusses the phases that compose a typical Drupal project lifecycle. Sandwiched in between is some guidance on where to place custom code in a Drupal directory system. The author advises that "Any module, theme, or other customization that you create for your site should always reside in sites/all" (page 2, and also reflected on pages 1 and 5). That may be true of contrib modules and themes, but certainly not custom ones, which are better located in sites/default or sites/[domain name]. She states that a child theme should be "stored separately in sites/all/<client_name>" (page 4). Actually, they should be placed in "sites/default/themes" or the themes subdirectory of a domain name directory. Finally, she recommends that for a multisite installation, one should keep "everything in sites/all" (page 5). Lumping everything into the "all" subdirectory would defeat the fundamental mechanism of multisite, which allows one to host multiple sites on a single Drupal installation, with their custom files and settings separated by domain name.

The first part of the book is loaded with valuable counsel on how to conduct the discovery phase of a website project, including coverage of project goals, user experience (UX), mockup tools, user personas, wireframes, prototypes, and the key components of a short-form project brief. It is evident from the narrative that the author is drawing upon a great deal of real-world experience, as well as lessons learned from other veteran web designers. The only blemish is where the author refers to "the project brief in Section 8" (page 45, repeated on page 254), and yet there appears to be no such section in the book. Perhaps she means Appendix A, which has an example project brief.

Once a design team has completed and received sign-off on a project brief — as well as any wireframes and other helpful preliminaries — a logical next step is to build the initial visual design. In the second part of the book, the author demonstrates how she uses sketches, style tiles, layout elements, greyboxing, grid systems, and Fireworks templates for crafting a visual design for a website. Throughout these chapters, she uses a redesign of her own personal website to illustrate the material. Both this part and the previous part of the book contain little information that is specific only to Drupal; thus, it could be useful to designers building websites using other CMSs.

Some readers of the book may already have up-to-date Drupal environments installed and configured on their development web servers. For those who do not, Part III will likely be appreciated, especially if the reader is using a Mac machine, because that is the environment to which the text and screenshots are geared. The author contends that "Windows seems to add an annoying layer of complexity to most of the command-line stuff" (page 102). Yet from my own experience, installing and using Git and Drush on a Windows PC is largely the same as in a Linux environment. Most developers complain that the main hurdle is Git's unintuitive workflow, which is independent of the operating system. The author touches upon some other tools, such as LESS and phpMyAdmin. Chapters 9 and 10 focus on Drush and Git, respectively. The last chapter in this section steps the reader through installing MAMP and Drupal. The discussion is generally comprehensible, except for the first paragraph on page 132, which is arguably the most confusing in the entire book. For instance, echoing a misstep seen earlier, it advises that all changes to your Drupal site should be stored in the sites/localhost directory, which contradicts the advice on the previous page, that all customizations to the site should be located in the sites/all directory.

The fourth part of the book covers prototyping in Drupal: gleaning from the client the information needed to define the content types for the website; choosing the appropriate modules for implementing the desired functionality; using views for displaying data; improving the HTML generated by views; creating custom Drupal themes; and using LESS to better manage the CSS within a theme. The advice is on target, except for the recommendation to use the Submit Again module, which does not have a Drupal 7 release, and has been replaced by the Add another module. Readers who are having difficulty locating the User Reference module mentioned by the author (page 187), can find it as a submodule in the References project. Lastly, the author instructs the reader to enable any base theme used (page 217), but actually it does not need to be enabled; installation alone is sufficient.

Part V, the briefest of them all, explains how to utilize the Features module, as well as Drush Make and installation profiles. Part VI comprises three chapters which offer guidance on how to propose an estimate for new projects, how to push back on unreasonable client requests, and how to learn from and document a finished project. This material is so closely related to that presented in the first part of the book — project discovery, planning, project briefs, etc. — that these final three chapters should have been incorporated into that earlier part. In fact, the first paragraph of this part states that it describes a phase of the discovery process that should be conducted prior to the phase described in Part I. Nonetheless, the author provides smart tips on some of the more difficult aspects of project management. The last part of the book comprises three appendices with sample documents — specifically, a project brief, a work agreement, and a project proposal.

On the publisher's page for the book, no errata have been reported, at this time. That is likely because the book appears to contain remarkably few errata: "What if there was" (pages 81 and 245; "was" should be "were"); "get familiar [with] the command line" (page 108); "a couple of" (page 172; should be "a few," as it is referencing three bullet points); ".less" (page 208, twice; should be "LESS"); "carpal tunnel[s]" (page 231); "original code [for] a feature" (page 242); and ".tpl" (page 266; should be ".tpl.php"). This is certainly a low number of errata for a technical book of this size. Kudos to the author and the O'Reilly editing team.

Overall, the book's style is clear and conversational, with only a few rough patches. Incidentally, the terms "directory" and "folder" are synonymous, but newbie readers who do not understand this could be confused when the two terms are used interchangeably, especially within the same sentence (e.g., page 109). Interspersed at various points in the text are interviews with people involved in web design, entitled "From the Trenches," which add perspective from designers other than the author. The reader will also find some natural humor and humility, which is always welcome in a technical work.

The author and publisher have made good use of the many screenshots, showing sample designs, Drupal user interface pages, etc. Unfortunately, for the Drupal pages, the admin theme used is the default, Seven, which results in black text on a gray background — a poor choice for such wide screenshots being compressed into small images on the page. Consequently, much of the text is barely legible, especially for anyone with imperfect eyesight.

From a technical point of view, the information provided is accurate and worthwhile. The only serious problem is the misleading advice, noted above, concerning the placement of custom modules and themes within the directory structure of a Drupal project — which was undoubtedly unintentional. The reader will encounter some HTML markup, a lot more CSS, and a minimal amount of PHP code. All of it is neatly formatted, and the only apparent problem is where a snippet of example code includes invalid nested "<?php" tags (page 188).

Despite these minor blemishes, this is one of the better-written Drupal books on the market. Web designers who will be working on Drupal projects, should be well rewarded in choosing this book as a solid starting point for their studies.

Michael J. Ross is a freelance web developer and writer.

You can purchase Drupal for Designers from Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.


This discussion has been archived. No new comments can be posted.

Book Review: Drupal For Designers

Comments Filter:
  • Drupal Logo (Score:4, Funny)

    by Evelas ( 1531407 ) on Wednesday August 29, 2012 @04:42PM (#41171779)
    The Drupal Logo is formed from the tears of unsuspecting developers forced to use it.
    • by Anonymous Coward

      Hey, customizing a Drupal installation is only twice as hard as writing your own CMS.

    • Actually, it's made out of previous failed Java projects where the design team thought it'd be a good idea to code the server portion of the app in it as well. The tears are what the Logo is thrust into after it has been forged in the hell furnaces below the marketing department. But I can understand how you were confused; The Drupa Loompas do not often tell the tale to younger developers. You have to grok the full meaning of the phrase "a simple matter of programming" in a rite of passage known as the Annu

    • I wrestled with that Drupal crap for six months before giving up and trying Wordpress. I had my Wordpress site up and running and doing everything I needed within 20 minutes. I don't know why people put themselves through Drupal. Having to understand "vocabularies" and "taxonomies" and all the other baffling entities - by the time you get as far as that level of defining everything down to the last atom you might as well have used Dreamweaver or hard coded the site by hand.

      • If you seriously couldn't work out how to produce the equivalent of a Wordpress site using Drupal in six months then - and I hate to be the one to break this to you - I don't think Drupal was the problem.

        • Um, so what's so difficult? Create a vocabulary called "Blog Categories" and add terms. Create a content type called "Blog Post". Further customization through cTools' page manager and possibly panels and views. Theme - start with Basic or Omega. Either way, you have a working blog. What sort of documentation were you reading or are you the sort that doesn't read?
      • Re: (Score:2, Informative)

        by theskipper ( 461997 )

        Drupal is a standard CMS, taxonomy is a baffling word only if you're not a programmer. If you want to build a lolz kittens site or the like, Wordpress is probably what you should have started with. It's plug and play and designed mainly for non-technical end users like yourself. For even quicker results, try or the platform. It has most of what you'll need to get a site working painlessly.

        Best of luck.

        • by Anonymous Coward

          Taxonomy is a word from biology, you stupid fucking pedo.

      • I tried to install Wordpress, followed the directions precisely, and failed.

        I installed Drupal 4.7 and the install went by the book and everything worked.

        I have since upgraded to 5, 6, and more recently 7.

        Vocabularies are taxonomy. If you don't understand English, may I suggest the dictionary?

        Drupal is awesome. I am a crappy programmer and even I can extend it.

    • Brilliant! Great book about an overhyped technology.
  • by ilsaloving ( 1534307 ) on Wednesday August 29, 2012 @04:57PM (#41171913)

    For a while I worked with someone else to put together websites. They would come up with a design mockup in photoshop. Then he gave me a PDF and I did the actual implementation. I would ask him for specific graphical elements when needed. The results were very nice. They looked good and worked well and reliably.

    I have seen the results of several 'designers' who made websites themselves, I must emphatically say that they have no business making websites.
    I can write a book for web designers too. It would be composed of a single page that says:

    If you want to design a website, go ahead. But for the love of $(deity) please then hand it off to an actual programmer. You do not understand the underlying technologies to make it work. You do not understand the security implications of what you are doing. Just because you know how to uncompress a drupal or wordpress archive doesn't mean you know WTF you're doing. Even if you manage to get a working site put together, there is a good chance that it will run poorly because you bolted on way too many plugins, and it is almost guaranteed that you've left gaping security holes that will bite the client in the rear down the road.

    So please, get an actual programmer to help you with implementation.

    • Are good programmers incapable of good design and vice-versa in your country?

    • by Anonymous Coward on Wednesday August 29, 2012 @05:12PM (#41172087)

      Disagree, by far the best designers I've worked with all knew HTML and CSS and were designing for the medium, even if they were working in Photoshop.

      The Adobe jock designers were by far the worst, they create inconsistant layouts, designs that were squeezed to fit into 8.5x11 pages, and custom impossible widgets everywhere. Most of them have zero UI knowledge (not even understanding the difference between checkboxes and radios) If Adobe jocks had their way, the entire web would be gigantic 50MB flash applets with inscrutable mechanics.

      • by micheas ( 231635 )

        I tried solving this by sending the designer grid psd template files to start from.

        The designer than said that it using a 960 grid, despite the only two grid lines that were hit were the far left and far right. Not a single element in the middle of the page hit a grid line.

        I think I need to find a pair of tutorials:

        • Grid design in theory and practice: what you need to know;
        • and Responsive web design, why you need to make multiple mockups of the same page, and how to recycle elements from different sizes an
      • Ugh... seriously. I *despise* flash-based sites. I have yet to see one that isn't a usability nightmare.

        However, web design is far far more than just knowing HTML and CSS. For anything more than the most trivial of sites, you also need javascript, SQL, some kind of backend language whether that's PHP, Python, Perl, Java, etc.

        And heaven forbid you do something more enterprise-y, cause they you need Java, J2EE, JSP, taglibs, and a family-sized can of alphabet soup for the various other technologies with TL

    • Re: (Score:2, Insightful)

      But for the love of $(deity) please then hand it off to an actual programmer. You do not understand the underlying technologies to make it work.

      First, that's "document.getelementbyid('deity').value". Second, why the hate, man? They may very well understand the underlying technologies, quite possibly even better than you do. But if you've ever done design work then you know that it's constrained by the oft-heard adage, "Done right, done fast, done cheap. Pick any two." That last one is especially relevant: Even when I was going to school for graphic design, there were already a lot of people doubling up with a web design degree as well, which touche

      • by hazah ( 807503 )
        I support. Nicely put.
      • The hate is because I've seen too many results from designers who think they are also programmers. And those results invariably are not pretty at all from a code and/or security standpoint.

        When I look at said results, I get the same feeling one would get if they declared that they were a Christian and then someone asked them if they were good friends with Fred Phelps.

      • Sorry, I didn't give your post the response it deserves. Yes, you are right that the results are entirely dependent on the management handling the project, but my sympathy drops precipitously when said designer happily states that they can do that no problem.

        I mean, I recently had to hand-hold someone through getting wordpress installation files onto the server because they had never even *heard* of FTP, and had no concept of what a public_html directory was. I'm not sure if I was entirely successful in h

    • Agree w/ what you wrote 100000%
  • The reviewer accidentally typed O'Reilly in the spot where Packt should go. Otherwise another solid 8/10 Drupal review.

  • by CanHasDIY ( 1672858 ) on Wednesday August 29, 2012 @05:22PM (#41172197) Homepage Journal
    As a noob in the web programming world, I like to try out a lot of the different tools offered that are supposed to ease development.

    I tried Joomla! and the results were... less than satisfactory (less of a learning 'curve,' more like a learning free-fall).

    I gave Drupal a shot; not terrible, I think if I work with it enough I'll understand the system well enough to make some damn fine looking blogs... if I were interested in making yet another blog site (I'm not).

    Long story short, I ended up hand-coding everything anyway.
    So it goes.
    • Tried only briefly to work with Drupal, found it very complex. Moved to Joomla, which despite some serious documentation holes, was marginally easier. Doing my second big project in writing a Joomla component and naturally it is a bit easier, so I've probably already compromised myself as far as using Drupal.

      What I have to say in both cases is by and large the documentation sucks, the examples not going much beyond Hello World, the default plugins breaking so many of the "rules" that they cease to be all th

      • That lack of documentation is pretty much what turned me off of CMSs in general. Like I said, I'm still learning the languages (my last experience was with HTML 1.0), so throwing myself into a complex system like Joomla or Drupal without any real, thorough documentation (that isn't pure jargon) is an instant no-go.

        Frankly, I hate CMSs, but that's the way the world is going, so vive la PHP crapfest.

        I suppose if I were doing large projects for major clients, I'd probably pretty much have to learn at least one of the CMS systems... fortunately for me, the whole reason I'm getting back into web

    • by hazah ( 807503 )
      To be honest, I find all of these tools to be extremely expert oriented. That, in of itself isn't a bad thing. These systems are big. Real big. And the main thing to remember that it's not just unpack it and go. Frankly, I don't know where that idea comes from. It's knowing how other people are already using it. There are best practices, idoms, and other, invaluable lessons that come with experience and education. At this point, if I were to take Drupal (I only deal with 7), and my standard, go to modules,
    • I gave Drupal a shot; not terrible, I think if I work with it enough I'll understand the system well enough to make some damn fine looking blogs... if I were interested in making yet another blog site (I'm not).

      While it is the work of minutes to install Drupal and make a blog site out of it, it can also be used to create absolutely any kind of site you want. This is because the themes are scripts, so you can control precisely what is output and what is not both at the page level and for each individual content type. It also has an XMLRPC module so you can use it to backend a flash-based site or what have you. In fact, Drupal is satisfactory for making absolutely any kind of website from the simplest to the most co

      • I gave Drupal a shot; not terrible, I think if I work with it enough I'll understand the system well enough to make some damn fine looking blogs... if I were interested in making yet another blog site (I'm not).

        While it is the work of minutes to install Drupal and make a blog site out of it, it can also be used to create absolutely any kind of site you want. This is because the themes are scripts, so you can control precisely what is output and what is not both at the page level and for each individual content type. It also has an XMLRPC module so you can use it to backend a flash-based site or what have you. In fact, Drupal is satisfactory for making absolutely any kind of website from the simplest to the most complex. With the caching in D7 it can actually handle the load of being used for a large site, too.

        *Most* of what you said there I get, but some of it (specifically the terms 'XMLRPC' and 'caching in D7') went right over my head - apparently you missed the part where I mentioned being a total noob in terms of web programming. I get what you're saying, though - one of the things that attracted me to Drupal in the first place was the apparent ease with which all manner of websites can be created, assuming the person at the controls has more of a clue what they're doing than I currently possess.

        Once I ge

        • Once I get to a point where I'm being asked to set up an eCommerce or other more complex site, I'll probably revisit Drupal, maybe even get a book or two; but for the sites I currently maintain, hand-coding is way easier for me.

          What attracted me to Drupal in the first place is that I don't really consider my programming skills to be "programmer" level, and I wanted an extensible web framework that would give me lots and lots of functionality without writing code. I narrowed my choices down basically to what would run on PHP and MySQL to be compatible with the cheapest available web hosting options, and then chose to mess with Wordpress and Drupal. As I have mentioned elsewhere, either the WP install failed or I failed the WP insta

          • Interesting... If you have a line on any writings geared towards helping an absolute beginner learn to use Drupal effectively, I would much appreciate being pointed in that direction.
            • My sincere advice is to just install it and start playing with it. Enable a module, read its help, etc. For instance activate the blog module and see what changes that makes on the site, just poke around. Enabling it creates new permissions, a new content type, and so on. It's all stuff you could do within the drupal interface, but it's wrapped up in one module. And if you do create a body of functionality which should essentially be a module you can install the features module and actually make it into one

  • by thetoadwarrior ( 1268702 ) on Wednesday August 29, 2012 @05:32PM (#41172337) Homepage
    I wouldn't ask a softwre engineer to do web design. Why do designers think they can code? I've yet to see an example of a web designer coding that has ended well. It's only that most of them do small unknown sites that they don't get hacked constantly or go tits up all the time.
  • What the fuck is that animal on the cover? I remember "The Camel Book" and "The Owl Book", but seriously, what the fuck is that thing?
  • by VortexCortex ( 1117377 ) <VortexCortex AT ... trograde DOT com> on Wednesday August 29, 2012 @07:39PM (#41173563)

    I did some benchmarking and discovered that C or C++ is really great for developing websites with. Everyone moved to Java and Perl and PHP before C++ web development had a chance... OOP > Templating Language > Generic CMS. I found that some shared hosting providers even have GCC installed, and otherwise you can install it yourself, or just upload the binaries and Apache will execute them for you. They run faster than compiling / interpreting PHP or Perl, and I don't have to implement an entire server. I also get access to a huge assortment of software libraries.

    I agree CMSs like Drupal or Wordpress have their place. That place is as far from me as physically possible: Anything that runs on PHP invariably requires me mucking about in PHP -- Sorry, I just can't live with that, I'd rather use Java. If PHP is the future, I'll just keep living in the past -- It's actually quite nice here!

  • Drupal haters say:

    "Documentation is a problem".
    Answer: we have an active documentation team. Documentation is not as good as it could be, but it never is. It's put together by volunteers, which makes it easy to contribute. Every module has a readme.txt. And there's a huge amount of documentation at . There are hundreds of videos - just last week all of held in Munich was videoed and put online. And I note that the OP is a book review on another Drupal book.

    "It's spaghetti code"
    Answer: The code

How come financial advisors never seem to be as wealthy as they claim they'll make you?