[Drupal] How to create a colorize theme by using Drupal 7 color module

Zyxware default image4

This is an article about how you can create a custom color switching theme with the help of Drupal 7 color module. Color module is a Drupal core module comes with Drupal and you can use this module to colorize your theme. Garland is a Drupal theme which uses color module to colorize its various content. If you want to know more about how to create a colorized theme by using Drupal 7 color module read on.

Before you start using the color module, you need to create a custom theme for your Drupal installation. After you create a custom theme follow the steps.

  1. Create a directory called "color" inside your custom theme directory.
  2. Create a file called color.inc inside your color directory.
  3. Add an image file called base.png. Drupal color module requires this file so we have to create one. You can use this link to create a base.png file.
  4. Next create a CSS file, which you can create inside your theme/color directories. Only thing you have to specify is the correct path in .info file, because all color styles will be in a separate file. Now you can start editing your color.inc file.

In color.inc file you have to specify an array with some settings. This array contains all settings that you want to give to color module.

Creating a color.inc file.

First thing you have to write is items and labels. For example see the code below.

<?php

$info = array();

$info['fields'] = array(
  'bg' => t('Background'),
  'text' => t('Text'),
  'titles' => t('Titles'),
);

Next thing you have to do is to define color schemes for the theme. You can use the above array to create a color scheme. Here you have to give color code for each color so that color module will replace color from our CSS. One more thing here you have to use lowercase letters for colors otherwise color module get the color you specify. Here you can create as many schemes you want and you can separate them with names. Now I will show you how to create color schemes. You can add this code in the same color.inc file


$info['schemes'] = array(
  'default' => array(
    'title' => t('Default'),
    'colors' => array(
      'bg' => '#ffffff',
      'text' => '#777777',
      'titles' => '#333333',
    ),
  ),
  'orange' => array(
    'title' => t('Orange'),
    'colors' => array(
      'bg' => '#008CFF',
      'text' => '#ffffff',
      'titles' => '#ffffff',
    ),
  ),
);

Now you have to tell which style sheet you are going to use. You have to create a CSS file called colors.css inside your theme directory. Once you specify this file inside your color.inc, this file will be called by Drupal color module.


$info['css'] = array(
  'colors.css',
);

You must also define this style sheet in your theme.info file. So add

stylesheets[all][] = colors.css

Now lets look into CSS styles. Here I am going to show you only a few color changes in body and titles. In colors.css you have to specify the colors those we already defined in "default" scheme. See a sample colors.css below.


body { 
  background-color: #ffffff; color: #777777; 
}

h1, h2 { 
  color: #333333; 
}

Next you have to alter some function which is specified in Drupal color module. For this use the following code in your theme template.php file.


function YOURTHEME_process_html(&$variables) {
 if (module_exists('color')) {
 _color_html_alter($variables);
 }
}

function YOURTHEME_process_page(&$variables, $hook) {
 if (module_exists('color')) {
 _color_page_alter($variables);
 }
}

Replace "YOURTHEME" with name of your theme. Now you are created a color.inc file but there are some other advanced settings you can write. But now I am not going to write all that because it cannot be covered in this small article.

Now clear your Drupal cache and enable color module if you have not.

After enabling your custom theme, go to your theme settings page and there you can see colorizing options for your theme. just play with the color picker and choose a nice color combination. If you have some error related to preview just clear the Drupal cache. That's it! you are created a theme with colorizing settings and you can change your site heading/background color whenever you like :)