It has been stated by some that creating good generic Drupal themes for download at the dot org site is impossible because an accomplished theme is dependent on the use of modules. I disagree. It is possible to create a visually pleasing theme that has a eclectic user base without worrying about the need to reach into the add-on depositary.
I’ve created five Drupal themes now that have been uploaded and distributed under a GPL license at drupal.org but before my first creation I looked at the most popular WordPress templates to see if I could gather any ideas about the reasons for their popularity. It soon became clear that those that were using these WordPress themes were doing so with little or no changes to their original layout and design.
A Drupal theme that was going to have a wide a potential user base as possible was going to need to style all aspects of the core installation. This meant space for all three types of navigation menu, the different search boxes and the slogan, the mission and breadcrumbs amongst much else. It also meant styling for all the core modules: polls, contact form, forum, user profiles and search.
It’s quite a challenge as Drupal is far more versatile than the WordPress blogging platform.
Not only was styling all the Drupal core important but I needed to include the possibility of most types of HTML elements been used including, but not limited to all six headers, ordered and unordered lists, blockquotes and quotes.
I don’t necessarily consider advanced theming a necessity when creating a quality Drupal theme. There are thousands of third party modules catering for all aspects of Drupal functionality and these are easy to plug in and go. For instance, the standard date and time format is quite ugly. It’s a fairy easy process of using PHP to change this in the template.php file. But what exactly is the best format is a subjective opinion and the Submitted By module can change this node information easily enough.
One aspect though of advanced theming that is essential in any build is the use of the body classes. This allows the designer to create a layout that doesn’t look stupid or falls apart if only some of the available module regions are used. For further information on this read Dana Pellerin’s article Drupal Theming: Regions and $Body_Classes.
I chose as well to keep a $left region in every theme. The standard Drupal install starts with three modules in the left region and in no other. I wanted to make the theme much as plug-in-and-go as possible.
Having a $left region in every theme does cramp the designers room to manoeuvre somewhat and using these guidelines will not create radically different layouts. It is the same with WordPress templates. There’s no doubt that their feel is often very alike and as Drupal is similarly module-based it will be the same here too.
Finding images to use in a Drupal theme is quite easy as they can be found at Stock.XCHNG or Multimedia-stock.
In the case of Stock.XCHNG it states in their license agreementthat if you intent to use a featured picture in a template then you need to contact the photographer for permission, but once I’ve explained that it will be used on a free Drupal theme and distributed under a GPL license they have always been more than happy to say yes.
Other common aspects of a Drupal theme fit in with general usability rules: the search box above the fold, the breadcrumbs at the top of the page and a logo or header that links back to the home page.
On every theme too I have made sure that the headings are semantically ordered and do not repeat more than once on any one page.
For fonts I kept to the much trusted and loved Helvetica for headlines and Verdana for the main body of text. I not really a great fan of using @font-face although it does increasingly seeming to be coming into fashion and although I use image replacement techniques for headlines and menus all the time (see above as an example) it is not possible to do so for a theme.
It’s worth keeping the main column at least 468px wide as that leaves the user room to place a banner advert if they so do desire.
You may not be enthusiastic about creating a theme for Drupal.org but if you are professional web designer then there is no better way of familiarising yourself with the Drupal code and its idiosyncrasies (hello compose tips!). Although I stated that advanced theming with heavy PHP is not necessary, if you do want to become more familiar with Drupal as a framework than just a CMS, then creating a free theme provides a practical means of learning the backend code.
Of the Drupal themes that I’ve created I’ve particularly focused on playing around with the advanced CSS that I wouldn’t ordinarily have used on a clients site, and I’ve also gradually increased my knowledge of the scripting code, creating new PHP theming chunks as I’ve gone on.
To finish off I’ll state that the most important reason to create a theme for drupal.org is because Drupal is an open source project and relies on everybody providing their time for free, and this includes designers as much as developers.