Designers: Why do Drupal themes suck?

I've been using Twitterfall to track a number of topics lately, including Drupal, and I've noticed a couple of widely held beliefs. One is that Drupal is hard to install and the other is that Drupal themes suck.

The first complaint I'm going to generally dismiss with "you forgot to read the instructions." System requirements are there for a reason, and if you meet them and follow the directions, installing Drupal takes about two minutes. Customizing it will take as much time as you choose to spend.

The second complaint I'm going to use as an excuse to write a long-promised but brief book review, along with some thoughts about the state of visual presentation in the world of Drupal websites.

Drupal doesn't impose any particular "look" on a website, regardless of what you may have heard. The Drupal pattern is to provide a default, then allow an override. This approach applies to pretty much everything, opening the door to complete customization, and this is at least as true of the presentation layer as anywhere else in the system.

At work we've been using Drupal to build websites for our newspapers and radio stations, so I'm pretty well acquainted with its strengths and weaknesses. I don't think you can claim http://www.cjonline.com/, which relaunched last week, looks anything like a blog. Or http://www.pinkspage.com/, http://teamsugar.com/, http://www.skirt.com/, http://www.theonion.com/ or any of hundreds of other examples I could cite.

And yet "Drupal themes suck" has an element of truth to it. The universe of free, downloadable themes for Drupal is not very big, and some of the themes are just plain awful.

Why is that? I think there are several powerful reasons:

  1. Drupal is a wonderful playground for code developers. By and large, code developers are bad graphic designers. It's almost as if loving beautiful code structure keeps you from loving beautiful visual design. So the Drupal development community, huge and diverse though it may be, is not fertile ground.
  2. A pro-am divide. There are many great website designs implemented in Drupal -- for high-end, paying customers. The resulting professionally developed themes are part of the visual branding of the customers' products. They will not be released. Many of the released themes come instead from people who are teaching themselves to write CSS on the fly, and tinkering with their own blog design to do it. The result is predictable.
  3. Themes don't benefit from contributions like modules do.
  4. Drupal theming is scary.

That last point brings me to the book: Drupal 6 Themes: Create new themes for your Drupal 6 site with clean layout and powerful CSS styling, by Rick Shreves (Packt Publishing).

I generally don't turn to books to help me figure out computer problems; there are lots of Web resources. In the case of Drupal theming, I've been able to rely on Web documentation.

But I have an advantage that a lot of designers don't have: I'm fairly adept at PHP and not at all afraid to dive into the deep end of the pool.

As Drupal's theme system has grown more sophisticated, the Drupal documentation team has struggled to tell its story. A major rewrite of both the theme system and the theme guide for Drupal 6 inadvertently made it all harder for designers, because the documentation is aimed more at the journeyman Drupal developer than at a guy whose strengths are outside the world of coding.

Drupal 6 Themes takes a designer's point of view and walks -- very slowly, at first -- through the sometimes bewildering process through which Drupal transforms database content into presentations. It explains the modularity of the system, the way optional microtemplates can override the presentation of just about everything.

This isn't code-free by any means; if you intend to go down this road, be prepared with a solid understanding of contemporary HTML and CSS. And, because the book concentrates on the PHPTemplate engine, you should know at least enough PHP to understand conditional statements (if-then-else) and how to print $variables.

You'll also need to understand that Drupal theming is a bit like skiing. If you fight the mountain, it will win.

But if you have what it takes to make it through the book, for less than $40 and a bunch of your time you'll have positioned yourself to do something about that "Drupal themes suck" problem. And given the growing demand for competent Drupal site designers and themers, you'll have broadened your own career options. Not a bad thing to do in this economy.

Comments

Not long ago, Drupal was difficult to install. When I first started, I had to keep a cheat sheet of how to setup the database with me. Drupal 7 has been going through some heavy duty usability testing to make sure it doesn't live up to its reputation any more. Unless of course you decide to do some custom programming. The themeing bit? As a developer I like the idea of putting up a simple theme first, focusing on the business logic now, and improving the look-n-feel later. But then as you implied, it is because developers suck at themeing.

As a Drupal themer, I'm going to have to disagree with point 4. On the contrary, I find the Drupal theme layer as easy to use as Wordpress, or even Smarty. Much like the other engines, the difficulty comes in learning the quirks in each system and finding your way around them. You've hit the point on the head, though, with your other points. Drupal has typically been the playground of some very strong coders, with a relative few number of people paying attention to the final output. This is changing, though. I'm traveling back right now from DrupalCon where I had the pleasure of meeting lots of designers who are dedicated to making Drupal prettier than ever before. It may take some time, but I suspect that there will be a plethora of pretty, free Drupal themes coming soon.

I actually find Drupal theming easy -- well, easier than getting pages to display properly on Internet Explorer 6. I can't compare it with theming Wordpress, as I don't do that, but I do see why some people would find it overwhelming at the start, especially if you start overriding theme functions in template.php. D6 makes that a whole lot less scary, but you still need to know what you're overriding.

As for Smarty (and the other non-PHP templating engines) -- Ack! It seems a whole lot easier to just print $variable when you need it.

A friend of mine, Nick Sergeant, wrote about this affliction several months ago. Check out his post here: http://nicksergeant.com/blog/drupal/don-t-let-drupal-design-your-website (a lot of conversation in the comments) In a nutshell, he asserts that Drupal provides a CMS framework, not a UX framework. Drupal wasn't written with people in mind, and so it's up to designers to cleverly use Drupal to fill in that gap.

Most of us don't create a new site more than every year or so. The last time I looked at Drupal, a default installation just looked way too geeky and complex for my audience's needs and I decided it would be too much work to clean it up. I know some knockout sites have been designed with Drupal, but for most simple applications, it feels wrong out of the box. I just looks dorky. I just moved MediaSavvy over to WordPress and I was stunned by how easy it was, how good the themes were, and how easy it was to add significant functionality without touching code. You might not want to build a major media property that way, but for, say, a journalist creating a community news site or a vertical blog, it feels like a good choice. Having said that, if you're ambitious and want room to grow and flexibility to embed new technologies, Drupal feels like a good choice. Just be prepared to spend some time or money on development and design. This book sounds like a good way to cut some of that ramp time.

Here's a post I wrote up "On the State of Drupal Themes": http://www.midwesternmac.com/blogs/jeff-geerling/state-drupal-themes I think it's quite important that we start working to get more and better themes into contrib for Drupal, and I'm going to start working on a few simple ones... however, part of my problem is CVS. I'm not a programmer, and something like CVS will take me at least a few weeks to get used to—a few weeks of time that I *don't* have. If it were as easy as zipping my theme folder, and uploading it, then I would have already done one or two themes. It's just so daunting to have to go through the whole CVS process to contribute back to Drupal.

CVS is evil. Learning Russian would be easier.

But the change rolled into production this week helps a lot.

If you're a contributor, there's a new "CVS instructions" tab on your project page.

It gives you a dropdown to select from any branches/tags you've created, then generates personalized CVS commands that you can cut/paste to check stuff in, check out, create releases, generate diffs, et cetera.

The ones usually bashing Drupal for themes are all WP users. Its almost like the battle between HD and Blue-ray or even VHS and Beta, only in this case there is plenty of room for both. I have sites running on WP as well, and when it comes to static page creations and other things in that niche, Drupal kicks WP's butt hands down. The only reason there aren't more quality Drupal themes floating around out there is due to all of the bloggers that leapt on the WP bandwagon. Had a large majority jumped on the Drupal bandwagon, we'd be awash in themes.

I have been playing around with drupal themes, and I don't think they are more difficult than any other theme for other cms like Joomla or wordpress. I have also seen around commercial themers, (i.e themestock.com, templatemonster, itemplater.com) making the same designs for joomla and drupal also and I do not see any difference in the look of those themes. Being that the themes are css driven mostly, why should drupal themes be more difficult. I guess there is a lack of designers doing themes for drupal instead.

As both a coder and a designer, I have to say the Drupal theme layer is awful. For example, the comments are hard coded to be appended after the $content is created. This is terrible for creating themes. The main problem is the design philosophy of the Drupal system leaks into the Theme layer. It is a theme layer. It needs to be abstracted in manner which makes sense for themes, not module architecture. Trust me, I not letter other systems off for this mistake *cough throw pretty much any other system here*, but Drupal is the most grotesque I have seen. The best I have seen is the Django theme layer. For programmers, loosely, it is like object-orient style theme layer compared to the procedural style you see in Drupal and most others. It makes *so* much sense after using it.

Guys, I've been using Wordpress and Joomla for two years and last year I switched to Drupal (three to words say it all: acl, cck, views). But when it comes to themes (and usability) sorry... Drupal has still a lot to learn.

Seamus and Jameel are correct. I've been using Drupal since 2004 and even though I created a few themes I was never able to completely separate the code from the design - it's deeply integrated and requires a serious effort to pull it apart. It's certainly possible as you can see in the examples mentioned above but you're looking at a couple of months of work to get it all right. Then, unfortunately, many of your customizations will be blown away in the next release.

That is why it sucks. Designers (except for studly awesome ones like me), do not want or have the ability to dive into a $form array, pluck out a string, regex it, and put it back in. setting, unsetting, etc. Drupal themeing sucks so bad that there are many things which you cannot do without either creating a custom module or using javascript to style on the fly. The single Drupal theme I've created for a high-end website does not suck. It rocks, hard. But it required a UI Developer with 8 years of experience to create and have it look and behave "the way I want". And that is why! "I actually find Drupal theming easy -- well, easier than getting pages to display properly on Internet Explorer 6." Hello! If you can't get a page to display properly on IE6, you've got NO CHANCE of doing "whatever you want" with Drupal theming. I guess the other reason is the bar is too low. Ok, scratch all that: All design sucks unless you have somebody awesome, and then it will not suck, because they will not let it suck.

Long standing and all over the place complaints :) I've seen some efforts to answer them, some are at the very beginning steps but worth to mention here: http://drupal.org/node/480322 http://groups.drupal.org/design-drupal http://design.acquia.com http://adaptivethemes.com/crowd/design-profiles-to-guide-drupal-designers Hope more movements are coming down the road. God speed.

Hi, I totally agree that drupal theming sucks. There is no separation between theming and code. that's why. ie you have to override tpl.php files and do custom coding. You cannot just drop a template.php file and css file have have all the blocks and pages pick up the new css. I come from using joomla. With joomla, you can just change the theme and the website actually does look like a new theme. Don't have to worrying about overriding blocks and tpl.php files and stuff like that. You cannot do this with drupal because theming is embedded into individual *tpl.php modules. So even if you have a new theme, you still need to figure out how to get the module to use it. A scary thing is alot of module contributors use the basic garland theme for their personal website. Meaning alot cannot be bother with theming drupal because of the effort required.

You can create a theme with nothing more than an info file and a CSS file.

The only time you would need to install a module in order to use a downloaded Drupal theme would be if the theme required an alternative template engine, such as PHPTal or Smarty. Few do.

I think you misunderstand the purpose of the template.php file. It's not for providing page templates, and it's entirely optional, as are all the *.tpl.php files. You theme only the parts you want to change.

With joomla, you can just change the theme and the website actually does look like a new theme. Don't have to worrying about overriding blocks and tpl.php files and stuff like that.
Well, speaking with several professional Joomla designers recently I was informed that the most wanted feature for Joomla is template suggestions! Drupal theming for many is hard, but is well documented (if you can grok the docs). There are however, many great resources such as books, web tutorials (mustardseed media for one) and whole entire courses such as the Lynda video courses. Look, when expectation outstrips ability Drupal gets slammed as being hard to theme. Its really as simple as that. Many users want a million dollar looking theme and think they can do this first time up with little knowledge of CSS, HTML and zero PHP. Thats a pipe dream - you got to know how to walk before you can run! Drupal theme layer is powerful and takes time to understand, as do the component technologies that make up a theme. To quote a well known Drupaler - would you expect to create the Mona Lisa the first time you used Photoshop? Some things are just hard. At http://adaptivethemes.com we are building a lot of resources for Drupal designers and themers and work very hard to make Drupal easier to theme, but there no substitute for hard work, I myself have spent years doing it and only know consider myself to be "getting there".

Ok, I'm not very good with Drupal but I want to try it... and I find that theme layer of Drupal is veryyy bad. Don't get me wrong... maybe it's just me... but why do I have to override some functions to change design??? I override the function, they update it and I'm left with outdated and possibly unsecure code??? And as for regexs and arrays - for me it's plain hacking, isn't it? If there is themes system, there you should be able to change everything without using regular expressions, right? P.S. Sorry for my English

It was written by a few programmers for God knows who, the internet is littered with programmers who can't stand developing in Drupal, it is painful. The problem with Drupal is it tries to appeal to everyone, yet appeals to virtually no one, it tries to be flexible, customisable, usauble for non-programmers, suitable for shared hosts, suitable for dedicated, suitale for sites with big traffic, etc and because of this it fails.

"Pleases no one" is rather at odds with the meteoric rise of Drupal as a major-league CMS over the past year.

4. Drupal theming is scary. Just at the beginning. After that, drupal theming system is really flexible and powerful.

If Drupal has a lot to learn about theming, as Matthew Clapp said, then why do we see beautiful Drupal sites everywhere? All it takes is some talent, or money to go hire talent. I personally don't want Drupal themes to become a dime a dozen like Joomla and Wordpress, as that would mean any doofus with a computer can have a pretty Drupal website in 2 minutes. Drupal is for professional websites, and should stay that way.

It is obvious to me that the lack of themers on Drupal is the result of the fact that other open cmses like Joomla and Wordpress are not only easy to use but come prepackaged with most of what you need in order to create a basic web site. For example they each have a built-in GUI editor and dedicated control panel. I myself as a computer science grad found Drupal quite intimidating at first and moved away from it until a few years ago. The popularity of Joomla and Wordpress caused more themes to appear. However, although there are 1000's of free Joomla & Worpress themes, in my experience only about 5% are really useful. Almost all the good Joomla/Wordpress themes are commercial. So the moral of the story is: Make drupal more end user friendly and sit back and watch the themes come in. PS. Maybe Drupal can come with easily selectable install profiles (during install) such as "Easy" (the default) or "Power User"