Altering the basic properties of a Drupal textarea

The following example, when placed in your theme's template.php file, will shrink the size of all of the "body" textareas on your site to 5 rows, and set the textarea as resizable. The function we're using to alter the textareas is theme_textarea().

/**
 * Resize the body field in all edit forms
 **/
function mytheme_textarea($element) {
  if ($element['#name'] =='body') {
    $element['#rows'] = 5;
    $element['#resizable'] = true;
  }
  
  return theme_textarea($element);
}

I could have named the function either mytheme_textarea() or phptemplate_textarea (though the first is preferred). Here is a blurb from the "Default theme implementations" page on api.drupal.org. I encourage you to read that page in its entirety!

...the standard set by phptemplate is that theme functions should be named either phptemplate_HOOK or THEMENAME_HOOK. For example, for Drupal's default theme (Garland) to implement the 'table' hook, the phptemplate.engine would find phptemplate_table() or garland_table(). The ENGINE_HOOK() syntax is preferred, as this can be used by sub-themes (which are themes that share code but use different stylesheets).

Your ability to alter Drupal form elements doesn't stop here! Check out similar functions (theme_xxxxx()) on the form_api page on api.drupal.org!

Tags: 

Add new comment