In Drupal 6, I would often resort to using my theme's template.php file to implement template_preprocess(), and add in the class to Drupal's $body_classes array. In Drupal 7, some new hooks were introduced that allow me to do this more easily, and inside my .module files.
Introducing hook_preprocess_HOOK()
<?php
/**
* Implements hook_preprocess_HOOK().
*/
function custom_preprocess_html(&$vars) {
$vars['classes_array'][] = 'my-class-here';
}
?>
You can literally hook into any hook's preprocess function. In the code above (inside a custom.module for one of my sites), I added a class to the html.tpl.php 'classes_array,' but you can manipulate any variable going to any template_preprocess function by simply hooking into it using hook_preprocess_html()
. If you want to see all the different hooks available on a given page (that you can hook into), put the following code into your own custom.module:
<?php
/**
* Implements hook_preprocess().
*/
function custom_preprocess(&$variables, $hook) {
// Print out all the preprocess_ hooks available on a given page.
dpm($hook); // dpm() requires devel.module to be enabled.
}
?>
Apparently hook_preprocess() worked somewhat in Drupal 6, but I didn't find much documentation for the hook :-/