Slashdot Log In
Pro Drupal Development
Posted by
samzenpus
on Wed Jun 06, 2007 01:29 PM
from the read-all-about-it dept.
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.
| Pro Drupal Development | |
| author | John K. VanDyk and Matt Westgate |
| pages | 428 |
| publisher | Apress |
| rating | 9 |
| reviewer | Michael J. Ross |
| ISBN | 1590597559 |
| summary | A detailed guide to customizing a Drupal-based Web site |
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.
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.
relatively excellent? (Score:3, Funny)
(http://cafepress.com/phototravel?pid=5934485)
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?
Re:relatively excellent? (Score:5, Informative)
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.
Joomla For the Win (Score:1)
With my personal statement said... I have nothing against Drupal or this documentation. If people enjoy using Drupal to develop sites then all the power to them.
Re:Joomla For the Win (Score:4, Informative)
(http://seenonslash.com/ | Last Journal: Friday May 11 2007, @04:02PM)
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.
Glad to See (Score:4, Funny)
(http://www.trellon.com/ | Last Journal: Monday June 04, @07:57PM)
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
"logically organized"? (Score:2, Offtopic)
(http://tpno-co.org/)
Closed comment (Score:1, Troll)
However Timesprout failed to use lay-flat text for his comment and it flopped closed as soon as it was posted which means no one can read it unfortunately.
Slashdot Ed.
Drupal on Dr. Dobbs (Score:5, Informative)
MediaWiki (Score:4, Interesting)
(http://gnu.org/)
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.
Whitespace (Score:2)
(http://www.hyperlogos.org/ | Last Journal: Wednesday July 18, @08:19PM)
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...
Just discovered Drupal (Score:4, Informative)
(http://honeypot.net/ | Last Journal: Friday April 07 2006, @09:33AM)
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.
Oh CMS up yours.. (Score:1)
(http://www.mclean-campbell.com/ | Last Journal: Tuesday July 31, @07:57AM)
Found PHPwebsite, set it up on our development website, asked the staff to test it, they thought it lovely, intutitive but a tad clunky looking.
Then it crashed for no identifiable reason so we had a long hiatus while I installed Moodle on our development website, asked the staff to try it and despite their now healthy scepticism they did and loved it. "Can't we have a cms like this?" Er no.
Then Mambo and Joomla split - ho, here we go this is bound to lead to an interface that could convince the staff to use it. So I installed Joomla on our etc, ad nauseum, ad infinitum, no one could understand it, the learning curve belonged to the NASA Mars Mission and neither I nor any other member if staff with geek credentials to hack Joomla into submission had the time or energy to do so.
Incredibly sad because our Business Manager just loved both Joomla and Mambo as brand names to be associated with. When I think of all those Joomla/Mambo plug-ins such as the remository, they make me drool!
But the Mythical Man-Month (http://en.wikipedia.org/wiki/The_Mythical_Man_Mo
Product boxes, net library, customer database, flash media and Lord knows what else piles up me and I forget CMS for about three months. Then the US elections arrived and I read a discussion about about Civic CMV (or whatever it is called, I can't be bother googling it at this time of night - BB's on for starters) and I read all the Drupal stuff and thought hmmm, I wonder.
Well Drupal works for the staff, it is a reasonably friendly interface, staff can understand a lot of the cracked geek node stuff and it plugs in with loads of stuff and although it is high-maintenance it isn't the absolutely Betty Blue - http://en.wikipedia.org/wiki/Betty_Blue [wikipedia.org] - level of High Maintenance that the other champ CMSs were. IMHO it has vast potential and with each release, the interface gets better and better. I feel that Civic is among one of the driving forces behind it, although I don't even use that module, and the opportunity for users to contribute is on an entry level slightly lower than the other CMSs I mentioned.
I am fairly certain that I won't be buying this book however, the development of the print edition is never going to be able to keep up with the pace of the application.
Would anyone like to buy my Ubuntu Hacks for version 6 for example. It should be completely useless in 6 months when whatever fluffy edition is released then - and we will update too!
IBM tutorial (Score:1)
http://www-128.ibm.com/developerworks/ibm/osource
e107? (Score:1)
(http://www.hyroi.com/ | Last Journal: Friday October 19, @04:18PM)
For those of you looking at CMSs... the site Open Source CMS [opensourcecms.com] is an invaluable resource. They allow you to demo all of the popular choices and choose which one you like the best.
Drupal version? (Score:2)
(http://www.boldandbusted.com/)
Some additional comments on the book and Drupal (Score:1)
(http://www.sablewing.org/)
I got the book and it has been helpful in distilling down the massive amount of information available about Drupal development. I see Drupal's strength as a framework for building your own applications on top, due to the design of the module and add-on system. I've also used Joomla/Mambo and both can provide a strong CMS for your website. The primary difference lies in whether you want an as much out of the box functionality as you can get (Joomla/Mambo) or if you want some out of the box functionality with easier potential to add in your own functionality or tweak existing functionality more easily. (Drupal)
It was interesting to see the one comment about users having an easier time with Drupal than with Joomla, based on my usage of the drupal.org site and my own Joomla site, I could see that scenario very easily. Joomla did take me some time to get my mind wrapped around how content is organized while with Drupal I'm having a slightly easier time organizing the content and manipulating it into my organization instead of a firm Drupal defined structure.
And on the book, I did find it helpful, but I would've like more information on populating the content from PHP code, I'm currently working on a couple of projects where I need to automatically populate content and the book was not helpful on that aspect. However, it was very helpful as I customize my installation and get my modules setup to work with Drupal.
Off-topic Drupal question (Score:2)
(http://honeypot.net/ | Last Journal: Friday April 07 2006, @09:33AM)
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 per-user, authenticated basis.
SilverStripe CMS, Drupal & Joomla (Score:1)
(http://www.planhq.com/)
There are definitely heaps of 3rd party modules available for Joomla and increasingly for drupal, and that was a big part of the attraction for us moving to use them, but we found in the end you find that many of them aren't quite right, they're great to get you inspired and have something to play with in 5 minutes, but projects need to be completed just right, so you often still have to develop something from scratch.
If you're into Drupal and the best open source CMS's then SilverStripe is definitely worth checking out.
Experiences of drupal (Score:1)
Drupalbook.com (Score:1)
(http://lug.wsu.edu/ | Last Journal: Tuesday January 16 2007, @03:54AM)
Re:I've said it before and I'll say it again (Score:4, Funny)
(http://www.newsique.com/)
Real web developers make their sites using Assembly! Screw those lame high level languages.
MySQL? Bah! I store my databases in txt files like a real man.
Re:I've said it before and I'll say it again (Score:5, Funny)
(Last Journal: Tuesday June 19, @07:48AM)
Re:Blog package (Score:1)
Re:The theory and the practice (Score:2)
(http://sitetheory.com/ | Last Journal: Friday October 24 2003, @10:59AM)
Re:Drupal Optimization == oxymoron (Score:3, Informative)
Re:Drupal Optimization == oxymoron (Score:2)
Oh wait, they're not. Troll.
Re:Drupal Optimization == oxymoron (Score:4, Interesting)
(http://slashdot.org/)
http://www.mtv.co.uk/ [mtv.co.uk]
http://www.theonion.com/ [theonion.com]
http://dead.net/ [dead.net] (The Grateful Dead site)
http://goingon.com/ [goingon.com] (Forbes. Yes, that Forbes.)
http://playboy.de/ [playboy.de] (Playboy Germany, NSFW)
http://www.fighthunger.org/ [fighthunger.org] (The UN)
And that's just the first few I remembered. Drupal scales just fine if you know what you're doing. If you don't, then you won't be able to make anything scale.
Re:Drupal Optimization == oxymoron (Score:1)
Another thing: even the inventor of the HTML -- Tim Berners Lee -- uses Drupal for his personal Blog (http://dig.csail.mit.edu/breadcrumbs/blog/4 [mit.edu])
Re:Pronunciation? (Score:2)
(http://www.ubuntunews.info/)
Re:Drupal Optimization == oxymoron (Score:2)
We've been using Drupal for over a year now. Both small and medium sized projects. It's just a really really good framework. Possible -the- best right now.
Since you didn't bother to actually show any examples of what "sucks so much" I won't bother to make any arguments for why "it rocks"
Re:Static page generation (Score:2)
(http://honeypot.net/ | Last Journal: Friday April 07 2006, @09:33AM)
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.
Re:Static page generation (Score:2)
- Semi-static. Use the built-in caching mechanism. First time a content is accessed, it is cached to db. 2nd time, grab the entire output from db. When content is updated, appropriate caches are flushed. This is something MySQL's MyISAM tables are excellent for. Oh, how to use? Just turn it on from the admin pages.
- Just use drupal on development site, and wget -r, script/fix the links, and rsync it to production. Don't run drupal on production.
OTOH, if you want certain pages pregenerated, and others not, just plonk down your static content on a separate subdirectory on drupal. They'd co-exist nicely. Might be more work to make sure they absolutely sync'd up though.