Don't you just feel the sweet taste of new possibilities right now?
And still, any new Drupal 8 project comes with its own set of challenges, as well, and choosing a theme, from the very start, is probably one of the greatest ones.
What should it be then?
Should you go for a classic base theme (AdaptiveTheme or Zen, maybe), for a contributed theme instead or maybe you prefer implementing the framework yourself or build your very own theme, from scratch, relying on Drupal core?
Before you make the decision that will have a huge impact on your whole project's structure, take some time to go through this quick “quizz” here and try to give yourself some clear answers:
- are you dealing with a multi-site project (meaning that your theme, once chosen and implemented, will be used across all the other websites, too)?
- is the person maintaining the theme a HTML guru or a CSS expert?
- will this theme be used just on the website itself or for internal apps as well?
- what level of front-end performance optimization does it imply?
Classy vs Stable: Which Base Theme Works Best for You?
This might just be the most important choice to take during your Drupal project's life-cycle!
It's your theme that dictates/overrides your CSS, JS and Drupal's markup, you know. Where do you add that your chosen theme can feature a parent-child relationship, where the sub-theme inherits the base theme's templates, JS and CSS.
In short: think through your theme choice for the sake of your project's success and your whole workflow!
“And still, which one to choose: Classy or Stable?”, you might ask yourself.
Here's how you can tell which one suits you (as a Drupal developer, with certain goals in mind and with a certain theming experience) and your particular web project (which comes with its own set of particularities):
- are you planning to add classes only where the context demands them? Then Stable's The base theme for you!
- do you want lean markup, with very little classes (e.g toolbar and contextual links), giving you the freedom to customize your own markup patterns in your theme, to create only those classes that are required by your project? Stable again, is the “lucky” word, in this case!
- do you want to have a set of classes at your disposal, to tweak and use as styling hooks, right from the starting point? Then it "write" Classy all over your Drupal project!
This being said, let's see which are the 5 factors that you should consider before you choose your Drupal 8 base theme:
1. How Much CSS and Markup Updating Does it Require?
How much CSS out-of-the-box does your chosen theme come “equipped” with?
It makes a great difference, you know. Take these two examples for instance:
- You decide to build your website on Classy theme, which in Drupal 8 comes with very little core CSS, so you will have to write your own classes and occasionally even to override the templates, depending on what you want your classes to style.
- You're building your theme on Zurb Foundation or Boostrap, which come with their own of out-of-the-box classes that all you need to do is apply to your markup. What's important for you to keep in mind, if you incline for this particular work scenario, is that once you have your Drupal site built, there's going to be a lot of template customization to do for adding all those out-of-the-box classes to your site's new components!
2. Has Your Client Expressed Any Preference?
Your client may or may not come with his/ her own preferences when it comes to the theme that you and your team should to build his website on.
Be sure to have one aspect settled with your client, during your before-the-project meetings: are you supposed to maintain the theme that you two will decide upon on the starting point or is there a chance that this should be replaced with a new one, as the project unfolds? It's essential that you discuss this aspect with your client, for it's important for both of you to consider the learning curve (and implicitly the extra time) of each new theme.
In case your client has no specific preferences regarding the theme to be used for his site, your own theming experience and your development process preferences will be the only factors that will influence your theme choice!
3. Consider the Design
It's no news for any developer, no matter his/her level of experience, that Drupal is tremendously flexible! When it comes to theming, it allows you to build practically anything you want: ranging from a large web app, to great customer-facing websites in the latest design and functionality trends!
Depending on what exactly you need to design in Drupal, you get to choose among several platforms:
- Ember or Adminimal make some great administrative themes, that will do their job superbly helping you build your back-end app
- Zurb Foundation or Bootstrap make great choices if your web project includes components such as tables and forms
4. Will You Be Using a Pattern Library?
A base theme always makes the perfect choice if you're planning to create your own patterns.
In other words
: keep it simple, at the theme level, especially if you'll be applying your own classes, which will then get themed by your own pattern library styles!
5. Consider Performance
Less is always better! You keep that in mind and let this common-sense motto guide you through your theme selection!
The more functions, JS libraries and settings your website needs to load, the heavier its “burden” will be (and the longer its load time will be, as well).
Go for a light theme based on Drupal core, which won't come equipped with its own heavy load of out-of-the-box JS libraries and CSS and remember that if less is always more, so does “testing makes it perfect”!
Remember to test all the theme settings on your website, thus keeping its front-end performance closely monitored!
These is our list of factors that any Drupal developer should take into account and think through before choosing the base theme for his/her project. Do you have any other aspects that you usually consider and which determine you to go for a specific base theme or another once you start your Drupal web projects?