views:

610

answers:

1

I need the node titles to be able to display some text formatting.

As far as I understand, Drupal's title field is just plain text, it doesn't allow html or any other input format.

Is that true? Is there a way to override this, or another solution?

I am working with Drupal 6.

+4  A: 

You can pretty easily do this in your theme, there are different ways to do with. The simplest would probably to do it in your template.php

/* this function generates the variables that are available in your node.tpl,
 * you should already have this in your template.php, but if not create it
 */
function mytheme_preprocess_node(&$vars) {
    // It's important to run some kind of filter on the title so users can't
    // use fx script tags to inject js or do nasty things.
    $vars['title'] = filter_xss($vars['node']->title);
}

What happens in the function is that it overwrites the default value for $title in the node.tpl which holds the variable used for the title. It is usually placed within a h1 or h2 tag, so you should be aware of that. The filter_xss is used to only allow basic html tags, so protect the site, you can look at that function here. That are some other filter functions, like check_markup, and filter_xss_admin, but you can give a second param for filter_xss which is an array of allowed tags, so should the default not be good enough, you can just change it to fit your needs.

googletorp

related questions