Follow Slashdot blog updates by subscribing to our blog RSS feed

 



Forgot your password?
typodupeerror
×
Image

Drupal Multimedia 130

Michael J. Ross writes "Of the leading content management systems used by developers for creating websites, Drupal is highly regarded for many characteristics, including a much smaller initial footprint, compared to Joomla and other CMSs. Yet some developers find this a disadvantage as well, because one of the most common criticisms leveled against Drupal is its lack of built-in support for images and multimedia elements — thereby forcing new Drupal developers to choose from the thousands of contributed Drupal modules those that would be optimal for implementing their websites' multimedia functionality. Aaron Winborn's book Drupal Multimedia is intended as a guide to help such developers." Keep reading for the rest of Michael's review.
Drupal Multimedia
author Aaron Winborn
pages 264
publisher Packt Publishing
rating 7/10
reviewer Michael J. Ross
ISBN 978-1-847194-60-2
summary A guidebook for adding images, videos, and audio content to Drupal sites
The book was put out by Packt Publishing on 30 October 2008, under the ISBN 978-1-847194-60-2. On the publisher's book page, visitors can learn more details about the book and its author, purchase the electronic or print editions of the book (or both, at a discount), download the sample source code, send feedback or questions to the publisher, read the book's table of contents, or download a sample chapter for free ("Third Party Video") in PDF format. As with all other Packt Publishing titles, the errata is annoyingly not available directly from the book page; instead the visitor must go to the general Packt Publishing support page, find the title in a lengthy drop-down list box, click a button, and finally click another link (the one that should have been on the book page from the start) — only to have the errata displayed in a pop-up window. Among all the technical book publishers, Packt's procedure for accessing errata is surely the most tedious, and one can only hope it will be improved in the future. As of this writing, only one erratum has been reported. It is listed as being on "page 0," but that instead should read "page 34" (an erratum in an erratum!). Speaking of online resources, one would expect the author's own site to have further information on the book, but there does not appear to be any there.

Drupal Multimedia is a fairly slender volume, at 264 pages, no doubt because it focuses on a limited subject area — implementing multimedia with some key contributed modules — as opposed to most of the recent spate of Drupal books, some of which try to cover every major aspect of the CMS. The material in Aaron Winborn's book is organized into eleven chapters, addressing most if not all of the key topics within the chosen subject area: Drupal basics; images, galleries, and slideshows; image theming and effects; third-party and local video; file management; audio nodes and fields; theming audio; and the future of multimedia in Drupal. The book concludes with a skimpy five-page index, which fails to contain such basic entries as Flash, FLV, SWF, sprites, star ratings, slideshows, and countless others. A robust index is especially critical for any technical book, such as this one, that divides related topics among multiple chapters, and has section and subsection names that in some cases are quite similar to one another and thus could be easily confused.

Because this book is geared more toward programmers new to Drupal, and not well-versed veterans, the first chapter — the second longest in the book — introduces the reader to the core concepts of Drupal (nodes, regions, blocks, themes, and modules — core and contributed) as well as two essential modules (CCK and Views). The explanations do not go into any great detail, but should be enough to give any Drupal newbie a head start. Nonetheless, readers may be confused by the screenshots on pages 16 through 19, which appear to be from Drupal 5. Also, the brief coverage of views arguments is inadequate, and needs to be beefed to be useful later in the book. For creating a new theme, the author advises copying wholesale an existing theme; instead, a sub-theme is a much better approach. Chapter 1 wraps up with a discussion of some basic concepts in Drupal theming, which makes puzzling the title of the section, "Advanced Theming." Speaking of themes, readers should note that when the author refers to "theming" an image or video, he means making the uploaded file display as content on the node's page (and not just exist as an attachment to that node).

For many programmers new to Drupal, the first hurdle they encounter is how to add an image to the content of a page or story — a seemingly trivial task that is built into most major CMSs — without writing HTML and hard coding the path of an image file they FTP-ed to the server. Drupal version 6 and presumably all prior versions, do not have native support for uploading and embedding in-line images. In his second chapter, the author explains how one can create image galleries, teaser thumbnails, and images embedded in content. However, in the discussion on page 45, some details are incorrect, such as the label for the "Save" button (three times) and the presence of the galleries drop-down list. Readers will undoubtedly be confused by two additional inaccuracies: There is no Navigation menu item for displaying the "image galleries" created by default, because initially the image_gallery view has no menu assigned in the Gallery page settings. Secondly, the gallery description is not shown on the gallery page; in fact, it is not even listed as an available view field. The section titled "Image Gallery Settings" suggests that the author may have been using an older version of the Image module. But this probably does not explain the erroneous statement on page 56, that "image nodes created with Image attach will automatically be marked as not published." The chapter concludes with an explanation of how to embed an image in content, using manually inserted image tags, or the ImageAssist module, optionally supplemented with a WYSIWYG HTML editor, such as TinyMCE. The fourth chapter looks at how to theme images, and discusses — it greatly varying levels of detail — style overriding, the Firebug Firefox extension, the Theme Developer module, image nodes, image-based rollover menus, sprites, light boxes, star ratings, slideshows, and various special effects: drop shadows, magnification, and watermarks.

The subsequent chapter — oddly titled "Developing for Images" — extends the discussion by showing how to insert images as fields utilizing ImageField and several supporting modules. One of those modules is referred to as "FileField Tokens" (page 70), but there is no such module; the author probably meant ImageField Tokens. Also extending the previously noted problem of non-Drupal 6 content, is the screenshot for "Display fields," on page 83, as well as the narrative, which appear to be pre-version 6. The latter half of the chapter delves into how to create galleries and slideshows (using views), user pictures, and images associated with taxonomy terms.

With Chapters 5 and 6, the author shifts attention to what is perhaps the second most commonly used type of multimedia on websites nowadays — video — with the former of those chapters devoted to third-party videos (such as content hosted on YouTube), while the latter chapter is devoted to "local video" (local in the sense of hosted on one's own remote Web server — not one's local development machine). The author demonstrates how to utilize a YouTube-hosted video, first using core Drupal modules only, then using the Embedded Video Field module. For using local video files, the author shows how to use the FileField module so the user can upload QuickTime video files. Unfortunately, the instructions on page 146 may prove confusing to beginners, since it is not entirely clear as to whether the later, more-detailed paragraphs are repeating earlier instructions, or specifying something new. More significantly, the use of the FileField module necessitates writing theme PHP code, just to have the video display on the page — which less technical readers may not feel comfortable attempting on their sites. The second part of the chapter may be more useful to the typical reader, because it covers how to embed Flash videos, a more popular format. The author advocates the use of the jQuery Media module (which he created) in conjunction with the jQ module. Unfortunately for the reader, the details of implementing this approach are glossed over at the end of the chapter, with only meager instructions ("... add .node .content a to the classes."), and without any illustrative example. No explanation is provided as to why this particular JavaScript-dependent solution is recommended, as opposed to a more straightforward one, such as the Flash Node module — which is far less problematic for FLV files. (By the way, the author states that he and some other developers are creating a fully GPL media player module and that there is a development version available of this Media Player module. But there is no such version on that page, and the situation may never change, because the project appears to have fizzled in August 2008, judging by the comments on the Drupal.org site and the author's site.)

In written tutorials, videocasts, and other discussions of Drupal multimedia, one important area that is often neglected is asset management. This includes such seemingly mundane matters as where in a Drupal site's file system one should place plug-in files and even the uploaded multimedia files themselves. A more far-reaching topic is how to best associate multimedia assets with nodes so they can be accessed by various modules — for instance, as stand-alone content types versus CCK fields. Chapter 7 examines some of these topics, first discussing how to create and theme nodes whose associated videos can be used elsewhere on a site, such as in a gallery — using the Embedded Media Field and Node Reference modules. However, some readers may become frustrated because a couple critical steps are skipped, and, even worse, no guidance is provided as to how to make the video show up on a node reference content page, or what content provider selection to use (since "Local" is not an option). Next the author considers how to set access to videos by user role — using the Asset module. Unfortunately, the reader is apparently not shown how to do anything useful with video content uploaded and managed using the Asset module, including the scenario proposed at the beginning of the section. (Incidentally, one might assume that the author's solution would use the Asset Embedded Media submodule, but it is not compatible with the latest version of Drupal 6.) The Media Mover module, and its many submodules, offer an alternate method of video asset management, and the author shows how to e-mail a video from a mobile phone, to be automatically attached to a new blog post. The chapter concludes with a brief look at Kaltura, an open-source platform for storing and editing multimedia.

Some Web developers and end-users may consider online audio as the poor cousin of video. In truth, audio-only content plays a key role in many Web applications — from podcasts embedded in RSS feeds, to sample tracks on music sellers' websites. The subsequent three chapters of the book are devoted to managing audio content within Drupal using several resources and solutions — specifically, the Audio, getID3, FileField, jQuery Media, Embedded Media Field, XSPF Playlist, and Views modules

In the last chapter, titled "The Future of Drupal Multimedia," the author speculates as to what media-related capabilities he thinks we will likely find in Drupal 7 and beyond — such as native file handling (via hook_file) and multimedia support in core Drupal, the merging or deprecation of non-FileField modules, dissociation of data from nodes, improved module interfaces and usability, embeddable widgets (for data distribution), semantic multimedia (microformats, RDF, and taxonomy-powered tagging), mobile Web access, virtual reality (such as Second Life), tactile and olfactory media, and motion sensing (such as the Wii Remote controller).

One laudable feature of this book is the inclusion of numerous screenshots, which can be quite reassuring to a reader getting lost in the technical minutia of any particular recipe. Also helpful is the manner in which the author, for the most part, keeps the reader informed as to all configuration settings — and where to find them within the Drupal administration interface — that the reader must or may want to modify, depending on his or her needs. Technical books that fail to do this can be extremely frustrating to anyone trying to learn a nontrivial technology.

Yet there are some major flaws with the book: Far too much of the material suggests that the author was using Drupal 5. Aside from the screenshots mentioned earlier, sections of the text point in that direction, such as the statement, "The multiple image issue might be taken care of by Drupal 6" (page 56). Fortunately, none of these gaffes prevent the reader from learning how to perform the tasks using version 6. The second and more important flaw is the poor coverage of Flash content, as detailed above. A follow-up edition to the book, in which all of these problems are resolved, would be most welcome and valuable.

A revision would also be an opportunity to fix the grammatical errors that should have been caught in the proofreading process. For instance, the fourth complete sentence on page 11, is missing a verb. Errata include "Autrhor" (credits page), "you [have] learned" (page 2), ". you'll" (page 2), a ")" without a "(" to match it (page 17), "isin" (page 31), "it [is] installed" (page 32), "provide files" (page 33; should instead read "provide functions"), "hierarchal" (page 46), "formated" (page 57), "[the] FTP" (page 75), "menu — By" (page 117), "going a view" (page 119), "quicktime" (page 146), and "[Submit] Audio" (page 179). In addition, there are eight pairs of adjacent words missing their separating spaces — five on page 159, and three more on page 174.

As seen in many other Packt Publishing titles, this one contains excessive usage of inappropriate title case (e.g., several on page 8 and 9 alone), though occasionally title case is neglected (e.g., "Image attach" throughout the book). In addition, some of the phrasing is rather awkward, which may pose no barrier to a reader who already understands the particular idea being discussed in the text, but could prove a real detriment to anyone unfamiliar with that idea. For instance, on page 36, the author states that "Often you may wish to override a theme that is not provided as a file in the default theme." But no theme is contained within a single file, and one does not override themes anyway; rather, one can disable a theme, or modify a copy of it, or create a variation as a sub-theme.

Yet overall, this book's strengths outweigh its weaknesses. For Drupal developers who wish to add image, audio, and video content to their sites, Drupal Multimedia is a useful resource with which to begin.

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

You can purchase Drupal Multimedia 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.

Drupal Multimedia

Comments Filter:
  • by SuperBanana ( 662181 ) on Friday November 06, 2009 @06:43PM (#30010820)

    ...who works with it every day. Then, it's brilliant.

    I spent 4 hours banging my head against a wall trying to do two things: 1)get a calendar of events up (in any way, shape, or form) and 2)put some boxes on the front page of a site, one for each major category of the blog. So, to transpose the example to slashdot: a box containing just "idle" story headlines.

    The calendar bit, I gave up on because it involved creating all sorts of custom data types and forms and views and...jesus christ, why couldn't they just make an "events" module...

    The box-with-a-category, I also gave up on. Apparently, the "solution" is to dig into PHP in your theme (why themes are chock full of code is beyond me) and edit the files. Well, except that then when a new version of the theme comes out, you have to port your changes forward. So instead, you make a copy of the file, install it into a duplicate of the theme's folder structure, tell Drupal your theme is a subtheme of another existing theme, and Drupal makes Magic Happen.

    Sort of. The subtheme doesn't inherit critical stuff in the original theme, like the stuff that defines where content boxes can go on the page (ie, the most basic part of the theme: the layout!) so when you load the new theme, all your content completely disappears. Unfuckingbelievable.

    In the end I threw up my hands in disgust. I could see the possibilities for a community site (which is what I needed and wanted in the long run), but getting there would have been an endless amount of time learning Drupal internals. Why the fuck should I have to learn internals to put an event calendar on my blog's sidebar?

    Oh, and everyone makes out that modules are the second coming of Christ, especially this book, apparently. Well, as we discovered at work trying to implement a drupal site that sometimes when you enable a module, it runs all over your database, permanently screwing the pooch and requiring a complete restore from backup...a problem exacerbated by the lack of (apparently) refined APIs. What does that mean? Well, it means the modules and Drupal very often end up having very specific version requirements...

  • There is a excellent calendar module right here, which leverages heavily off of functionality provided by other modules (as is Drupal convention). From a standpoint of functionality, available features, and extendability, it's better than anything I found with Joomla.
    http://drupal.org/project/calendar [drupal.org]

    Here's a screencast tutorial:
    http://www.drupaltherapy.com/node/76 [drupaltherapy.com]

    I've used this module extensively, out-of-the-box most of the time, and yes, I do so as a paid consultant from time to time.

    Besides that, since Drupal tries to provide a framework for anyone and everyone to contribute pieces via 3rd-party modules, it will be as chaotic, diverse, and even inscrutable as one would expect a bazaar to be. Still, it enables that bazaar to exist in the first place.

  • Weird timing (Score:5, Informative)

    by blakhol ( 919393 ) on Friday November 06, 2009 @10:14PM (#30012004)

    This book was great when it came out. Over a year ago. Strange to get such a late review of a book. Fortunately a lot of things are still accurate, and Drupal 6 has been the main release during this entire time, but sheesh. The contributed modules have improved a lot since then.

    As far as Drupal itself goes, it's great. Yesterday my boss asked me to put together a secure site where a select group of people could discuss the upcoming budget cuts. The site needed to be attractive, secure, support single signon (integrating with our existing directory), restricted to one group of users, allow optional anonymity of posters (after authentication), and allow users to subscribe to threads.

    Starting from scratch, I had it all done in an hour an twenty minutes with Drupal (plus the hidden author, subscriptions, pubcookie, pubcookie site access, secure pages, and views modules).

    There seems to be a great deal of frustration and outright ignorance about how Drupal works in the postings above. If you want to be able to wield a complex weapon like Drupal, try the following resources.

    For examples on how to create common types of sites using popular, well-supported modules: Using Drupal [usingdrupal.com], O'Reilly

    If you're a designer working with Drupal and want to understand how to work with it: Front End Drupal [amazon.com], Prentice Hall

    If you're a coder and want to know how Drupal works internally: Pro Drupal Development [drupalbook.com], Apress

    If you're not a book reader but like watching videos, pretty much anything put out by Lullabot [lullabot.com]

    If you're not a coder or designer but a power user who has to deal with Drupal's admittedly byzantine administrative interface: Drupal 6 Content Administration [packtpub.com]

  • by drinkypoo ( 153816 ) <drink@hyperlogos.org> on Saturday November 07, 2009 @03:34AM (#30012912) Homepage Journal

    I know you got modded as a troll, but I had a similar problem with Drupal a couple years ago. There was a time when Drupal was worth considering, but its backend never made much sense.

    This here is the most rational argument against Drupal. It's inconsistent and the database code is scary, and using it is scary. Almost everything is a node, that is stupid. Everything should be a node, which makes code dramatically more rational and forward-portable because you can access everything from a node object. The database code is getting refactored which is what is making Drupal 7 take so long (AFAICT) so perhaps the next Drupal will be more advisable. (I used to suggest Drupal, now I just scratch my head and say I use Drupal.)

    It was confusing enough to a developer, try explaining it to someone who is just in charge of updating, adding, changing content.

    I don't consider the default tools to be sufficient for managing content. However, I do consider views+templates to be sufficient to create administrative views which will do the job, and be adequate for even fairly amateur content editors, and with little effort. I've done it before, and will probably do it all over again on D7 :)

    And it was slow, 20sec + load times with even the most basic themes. And like the parent, we tried different platforms, different caches, and eventually the entire project got shelved and I've never touched Drupal since.

    D6 has quite good caching, but most of the more interesting modules will grind up your database. Also, Drupal seems to use pretty excessive amounts of memory, and with a few interesting modules that can quickly reach into the "obscene" range, so anything not cached is going to cause some serious spin.

  • Re:Drupal Sux (Score:3, Informative)

    by peater ( 1422239 ) on Saturday November 07, 2009 @04:48AM (#30013100)
    As a Drupal developer myself, I'm not really sure why Greg had to mess with 1000+ lines of Garland-adapted code specifically because he goes on to say that he could do the same thing using Zen in under an hour which means his customization needs weren't too detailed to even require messing with 1000+ lines of code. I'm sure he knows what he is doing, but in my own experience I've managed to use the php-template engine with CSS to create some fairly customized sites in very little time without requiring Zen or any other 'specialized' base theme or requiring messing around with copious amounts of php code.

    As for multimedia and no "native" support for images, while I am not familiar with Joomla or other CMS systems to make a fair comparison, Drupal does have many third party, well recognized and documented modules for this very specific purpose that integrate very well with the base system. The "installation" process is standardized and the extended help system delivers useful information to aid the developer. I'm assuming the reason that multimedia modules aren't integrated with the base system is because it allows users to consider options to implement galleries, videos, etc within the Drupal system and allows innovation (more options for end-users) and regular module updates without requiring multiple Drupal releases.

    In that sense I would compare Drupal to C. A core system with a very small footprint with the bulk of the functionality being relegated to library code (modules in Drupal speak). I guess, as and when a module becomes the standard way of doing things in Drupal, it will get integrated into the core (like the standard library in C). The CCK module is a very good example of this which is being integrated partially into the core in Drupal 7. Personally I found CCK, Image, Views and Panels (all Drupal modules) invaluable to all my projects and they have become part of my "standard library" of sorts. For needs not satisfied with these modules, I just Google Drupal + need and choose between the numerous modules that come up.

    Having said that, I do agree, Drupal could do well with "pre-installed" modules for basic functionality like image uploads and video integration with the option of overriding these with third party modules to perhaps make things a bit simpler for the uninitiated. But for me, the current state of things isn't a deal breaker given that I have my standard modules stashed away and I just have to copy to my new Drupal installation to have a very usable base system.

    Like all else, Drupal (like C) has a very specific philosophy and if that gels with your preferred development methodology, then great! If not, the alternatives are good too.

If you want to put yourself on the map, publish your own map.

Working...