Add CSS class to drupal form fieldset

Tested on:

  • Drupal 5.x
  • Zen custom subtheme

Customizing Drupal form appearance may sound difficult. But to add a CSS class is (surprisingly!) simple using theme_fieldset themeable function.

  • Copy theme_fieldset code from Drupal manual page
  • Paste to your template.php:
    • If you’re using a Zen theme, change theme_fieldset to zen_fieldset. You can try to use this method with your theme prefix.
    • If you’re using a theme based on phptemplate engine, you can change theme_fieldset to zen_fieldset to have the same effect of above (try one of this, not both).
  • Change the resultant code as you wish.

I’ve attached an example to generate CSS class from fieldset title: Add CSS class to drupal form fieldset.

# custom fieldset CSS class from element #title
$css_class = “my-custom-class-”;
$css_class .= str_replace(” “,”-”,strtolower($element['#title']));
# using transliteration module to transliterate/strip non-ASCII character where available
if(module_exists(‘transliteration’)){
# including Transliteration functions
require_once(drupal_get_path(‘module’, ‘transliteration’) .’/transliteration.inc’);
$css_class = transliteration_clean_filename($css_class);
}

Adding this code to your template:

  • Take all Drupal generated fieldset title
    • e.g. “Impostazioni del menù”
  • Transform it in a CSS class using Transliteration module
    • e.g. “my-custom-class-impostazioni-del-menu”
  • Queue it with other CSS classes (where available)
    • e.g “collapsible my-custom-class-impostazioni-del-menu”

I apply a previous substitution of whitespace using “-” (transliteration module use underscore “_”) and you can do the same, but later remember to use transliteration_clean_filename to safely sanitize class name for any other case you’ve not contemplated (accents, special characters).

4 Responses to “Add CSS class to drupal form fieldset”


  1. 1 Necati August 4, 2008 at 9:04 pm

    Thanks for this. I used this to generate fieldset class-names on the registration form where I had the OG-mandatory-group added.

    I was able to hide the fieldset with the mandatory group selection using CSS-only.

  2. 2 Anja December 4, 2008 at 3:34 pm

    Thanks from me too :-) I am using this for pretty much the same purpose as Necati, since you can’t use formfilter to hide og group fieldsets on node edit forms. well, you COULD use it, but upon editing the node the values get lost. so using css is the perfect alternative.

  3. 3 sepp August 26, 2009 at 6:59 pm

    thx works perfect !!! Dont forget to dlete the cache ….

    Sepp

  4. 4 Heather October 16, 2009 at 1:50 pm

    This was so handy! Thank you.

    I had to modify it for 6, easy enough.


Leave a Reply




IE6: Rust in Peace

Blog Stats

  • 104,268 hits
My Bookshelf

Texts double licensed under Creative Commons Attribution - Share Alike license and GNU Free Documentation License. Examples may contain software licensed under GNU General Public License. Images and comments texts aren't necessarily licensed under these terms.