What shall we do about Themes?
Posted on Di, Mai 19, 2009
Update - 22 Feb 2010: One of the issues lightly touched on below is the market need for some themes besides those on drupal.org. Acquia has started to collect both themes, as well as links to theme providers, at a new site devoted to the design-aspects of Drupal. See design.acquia.com for more information. (Original post follows.) For almost as long as I've been involved with Drupal, there's been a running complaint – either a (false) perception or (true) reality – that Drupal is "theme-challenged" compared to alternatives like Joomla and WordPress. I had this complaint myself when I first started using Drupal. Our investors heard it during their due-diligence on Drupal. And I continue to hear it from people I meet who are building their first Drupal site. I've got some cycles now to pay some concentrated attention to this, and see if there's something we can do about it (where "we" means both Acquia and the Drupal community at large.) I encourage you to add your comments / thoughts to this blog post. In fact, my primary purpose in this post is to listen to people. So read on, and give me your thoughts. What's the problem - really? The first thing to do is to characterize the complaints. I think there are (at least) two high-level areas of interest:
- Issues surrounding off-the-shelf (available) themes;
- The size (or lack of...) of the "designer" community within the Drupal community at large.
- Both communities score Drupal theme quantity poorly. Only 58% say the quantity is Satisfactory or better. In fact, Drupalistas themselves don't give Drupal very high marks in the off-the-shelf themes area. But Joombies (credit to Amy Stephan for the nickname) are pretty blunt: 0% of respondents said Drupal has very good quantity, and 60% say the Drupal world just plain lacks themes.
- In contrast, both communities view the Joomla themes ("templates") quantity situation more favorably. It's pretty stark: > 80% of the total (no matter how you measure it) say the quantity is Satisfactory or better. (Note also that Drupalistas give the Joomla project higher credit for Very Good than Joombies do themselves. Clearly we Drupalers are carrying a chip on our shoulder about our situation.)
- Code entanglement. To get Drupal to "look like you want it to," frequently you have to resort to coding PHP; you can't just tweak HTML/CSS. This forces designers to have to learn Drupal to get that done. Drupal is trying to be more scaleable, flexible, etc., than competing systems, so it's learning curve is higher. Designers just want to make stuff "look like this." Learning how to code to get it done is more work than they have time for. So they pick an easier path.
- Lack of in-CMS editing. In Joomla (and WP?) the site builder can edit the CSS & template HTML from within the CMS itself. You can't do that in Drupal. There are technical justifications for the Drupal approach. But it makes it hard for designers coming from the Joomla ranks. I'm one of them; I learned Joomla templating by making changes in the CSS / HTML from within Joomla. Once I felt more confident, I started changing it outside of Joomla (and using version control). But I learned within the CMS. Drupal doesn't let you start easy like this.
- Reputation history. Drupal 6 made templating more sane in many ways, and IMHO many designers could easily learn to make Drupal templates. But while the Drupal community fixed the technical problem, they either didn't try, or didn't succeed in overcoming the reputation that "Drupal Themes are hard to build."
- Lack of outreach. Related to reputation history, there's been desire, but no organized effort to go attract the designer community.
- Add a comment or even better some type of non-presntation XHTML before and after each theme'd element which shows it's javadoc, location of the function, etc.
- Make a quick way to click and "override" an element w/ JS. This will basically give a modal dialog displaying the existing function, renamed to fit into your theme, and a little shpeil about where to put it.