Why I Rarely Use Starter Themes
Navigation : Back to Blog
Tags :
I love theming Drupal sites. Yes, I realize that means I’m a super nerd. Drupal’s theme layer with its system of overrides is powerful. It works so well that I rarely need a starter theme, like Zen, Basic, Framework or NineSixty nowadays, other than as a reference and source of code snippets.
What Starter Themes Do

Drupal 6 saw a jump in the number of contributed starter themes on drupal.org. Now it’s much easier to find a list of all starter themes and there are a few great reviews and a comparison chart. Starter themes are a class of themes that attempt to generalize their features to speed up implementing a design for most any site, while encouraging best practices. They are popular among development teams since they help standardize theming when multiple people must touch the theme. They are also excellent demos of the power and potential of Drupal’s theme system, which makes them a great learning tool and source of documentation. Many starter themes are intended to be used as a base theme, where you create a sub-theme that draws off their files. This makes it easier to produce themes with fewer files and overrides, leaving the base/starter theme to do most of the heavy lifting.
A closer review of contributed starter themes reveals some recurring features, including:
- sliding door tabs
- contextual body classes
- contextual block and menu edit links
- useful Internet Explorer hacks
- multi column layouts
- print style sheets
- thorough code comments
- various theme settings
- content first source order
While print style sheets and thorough code comments are always a good idea, many features present in starter themes are not always necessary on every website.
Not All Websites Are Alike

It is great when starter theme fits the needs of a project, but they don't always do. For example, block edit links are not necessary if the site relies on panels, or if a project avoids using blocks all together. Very often the overall site layout is unique for every site. As well, the majority of websites do not need the sliding door technique for tabs. Internet Explorer hacks are usually particular to the site layout and CSS techniques used for each website. For layout positioning, I try to use 960 grid systems' CSS techniques and safer IE CSS2 selectors/properties, which makes it possible to avoid most IE hacks and debugging. If we use Panels for multi column layouts, it usually relieves the theme of this responsibility. In the case of content first source order, there is more than one way to achieve this. The 960 grid system makes this particularly easy with its push and pull classes.
To achieve multi column layouts, themes normally have a delicate interconnected web of template variables and conditional CSS rules based on different body classes. If a theme must house a multi column layout, I would say that feature alone is a great reason to use a starter theme. But within the Panels paradigm, starter themes tend to introduce some superfluous files and code.
What I Do
I find the most repetitive part of theming is generating CSS for default Drupal elements. These include tabs, tables, menus, form elements, messages, help text and typography. Our Creative Director Nica Lorber and Lead Designer Floor Van Herreweghe shared their Fireworks template approach to theming Drupal, which ensures design attention to core Drupal UI elements. In fact we started to standardize design of these elements to the point that I can reuse a lot of CSS from one project to another in a single reusable drupal-elements.css file. This file, along with a CSS reset and 960.gs is my starting point for most websites.
Just about everything else involved in implementing a custom design is unique to each website. I might create a little custom markup. However, I end up copying and pasting most everything else from past projects and contributed starter themes.
Lastly, it’s just as easy to have a lean and well commented theme within a multi person development team, as it is to use a starter theme. I prefer this over requiring all developers and themers to learn the approach of a particular starter theme in addition to understanding Drupal core’s theme layer. To adhere to web standards and Drupal best practices, I prefer a check list approach and cheat sheets.
Drupal's Markup is Getting Better

Drupal 6 pulled in many changes from the 5.x version of the Zen theme. Since then I have less so needed to use starter themes. With Drupal 7, there are more improvements look forward to in Drupals default markup. Contributors to Drupal 7 put a lot of effort into making its markup as beautiful as possible. If you look at Stark in Drupal 7, the only theme files in it are a layout.css and stark.info. They did this to demostrate the minimum requirements to create a theme, and to provide a theme that shows off Drupal 7’s sexier HTML. To modify markup in Stark, one would simply copy over some template files, like page.tpl.php or node.tpl.php, edit them and clear the cache.
It might be that if Drupal's markup was perfect, we wouldn't need starter themes. But the fact that there are so many seems to mean that we have different needs for a starting point for building new themes. It also reflects the fact that Drupal theming has needed better documentation. Fortunately that documentation is getting a lot better and hopefully we can look for ward to more people jumping in and learning theming.
Comments
Post a comment
Presentations
What we've coded
Videos
Upcoming workshops
-
San Francisco, CAJune 18, 2012 - June 19, 2012
-
San Francisco, CAJune 20, 2012 - June 21, 2012
-
San Francisco, CAJune 22, 2012
-
Alexandria, VAJuly 24, 2012 - July 25, 2012








And if you want to get going with HTML5, here's another base theme for you.
http://drupal.org/project/html5_base
We're already working on HTML-ifying the Drupal core templates, with a long-term goal of HTML5 by default in Drupal 8.
And another HTML5 starter theme for Drupal 7 is AdaptiveTheme:
http://drupal.org/project/adaptivetheme
I am leaning the same way after battling Zen/Context collisions. My last project I pulled the core stock .tpl files and put them in to my new theme folder. In the end the theme ended up with way less CSS and loads much quicker. The new clean theme also had a blank slate form the theme override perspective. I am always amazed to see how many preprocess functions are in place.
The only downside was spending too much time recreating the cross-browser columns that you get for free with a starter theme.
In addition to HTML5 Base, there's the excellent Boron HTML5 base theme: http://drupal.org/project/boron.
I'm using it as a base for my contributed theme, MM, and I'm beginning to theme more and more in HTML5. I've started shying away from Zen a bit, simply because Drupal 7's core markup is excellent already, and half the reasons I used Zen were because of little niceties, like contextual admin links, the sliding door tabs, etc.
Most things seem to be negated by the fact that core includes Seven (a great admin theme), and contextual admin links are everywhere. Heck, even the Bartik theme is pretty flexible for simpler websites.
Is html5 part of any starter themes?
I agree. Starter themes can make for speedy development (but not always), however it's at the expense of extra code bloat. They're handy to raid when you're unsure of the best way to implement css for drupal, or in the case of the html5 starters, html5 itself. But I can do without the reams of needless css and never need to cater to obsolete versions of Internet Explorer.
Of the starter themes, Adaptivetheme is great, shrewder than Fusion and deeper than Zen. I hope Jeff can get around to launching his theme site now that D7's finished.
I taught I was the only one doing any themes from scratch for my clients. I always feel more in control not needing to reverse engineer or fight a starter theme. I also find out that there are a lot of things a delete from a starter theme.
Like yourself, I keep some code that I reuse from time to time, but usually that code is short.
Now I user starter themes only when I want to publish something very quickly. But if I need to theme a Photoshop document, I never use a starter theme.
I agree with your comments about starter themes, thats why I use my Tundra Framework theme as a beginning point where I just add stuff and take away what I don't need.
The base/sub theme setup is just not really my style.
Well, there are stripped down base themes too. 'Clean' for one. And sometimes base themes bring other features, such as Tendu's BiDi support. But on the whole I'd agree, I've tried using the more complex base themes a few times and whilst they get you up and running quicker they usually end up getting in your way once you get into the detail of the design.
Your drupal-elements.css sounds interesting :)
Hi,
great article. I find it is often easier/cleaner to create my own theme from scratch.
Is anyone able to provide (or point me to) a copy of something like your drupal-elements.css - even if it just has the selectors and no styling?
That would be incredibly useful. Thanks,
This is all about getting a jump start, right? I don't understand some of the comments about "starting from scratch". Squiggy's post is not about starting from scratch. Starter theme or not, have a good starting point. Don't repeat yourself when you don't have to.
I'm an artsy person so I like to use starter themes. I find that I can get really creative with my ideas and what I can do. But I understand your point of view about not using starter themes.
Larry Kelly
iPod docking station store
I have the exact same approach to Drupal theming as I build my designs on top of a custom set of base styles, a css reset and a custom grid system. This is far more flexible than starter themes in my opinion.
However, I would never recommend this method to a newcomer to Drupal theming as it requires a great deal of experience to put a custom cross browser compatible css "framework" together.
I started out using starter themes for a long time and they taught me a great deal on theming. Therefore I recommend themers with little experience to use starter themes until they become skilled enough to create their own custom solution. That day will eventually come for every themer that means business.
I'm so glad i came across this post! It seemed like everyone was using base themes and I was somehow missing some crucial reason for it. I abandoned starter themes somewhat early - it always seemed like there was so much that I didn't need, and I was always fighting with them to wedge my design into existing code.
I also found that I gained a much better understanding of the theming system once I started working from scratch. Last year I wrote an article how to build a theme from scratch (Drupal 6). I'm planning to expand and update it for Drupal 7 soon.
P.S. I have no idea if that HTML will work!
Could we see your drupal-elements.css?