views:

619

answers:

1

I have a form, and want to programmatically alter the help text that displays at the top of the page. Is there a hook available to do this?

EDIT: by "help text", I mean the text entered into the CCK form at: admin/content/node-type/sample-form

Above the textbox, it is labeled:

Explanation or submission guidelines:

The textarea has the id edit-help

Below, there is the text:

This text will be displayed at the top of the submission form for this content type. It is useful for helping or instructing your users.

Is this specific enough?

+3  A: 

The help texts are returned by the modules hook_help() implementations, so for adding your own, this would be the place to look.

As for altering a help text that gets set by a different modules hook_help(), this is a bit more tricky. Take a look at theme_help() - this is where the help text gets assembled, via a call to menu_get_active_help(), which in turn invokes the modules hook_help() implementations.

So your first option for this seems to be an override of theme_help(), either by omitting the call to menu_get_active_help() and setting your own value directly, or you make the call and modify the result before returning it.

It will be a bit difficult to determine your context in that override, as the theme_help() function gets called for every page rendered and does not offer any parameters from which you could get the information if you are on the right page (the form page you want to alter). You'd probably have to use the arg() function for this, if the forms page has a distinctly recognizable path structure.

A second option to get at the help text would be one step later, by altering the content of the $help variable passed to page.tpl.php. You could implement your own preprocess_page(&$variables) function and alter the content of $variables['help'] there. You'd still need to find out if you are on the right page, but the $variables array contains a lot of information that could help you there.

Henrik Opel
I tried doing this, but I couldn't find the value to unset. (I did a print_r and looked through the whole thing.) It's not the help text for a specific field, but for the entire form.
Rosarch
Yup, I missunderstood your question completely in my first try, so that could not work. Rewrote answer completely to match your question now (hopefully ;)
Henrik Opel
Is there a way I could do the second option without tying myself to the theme I edit? I'd like to have separate files, so if I switch themes I'll still have my modifications.
Rosarch
oh, and the second option worked great btw.
Rosarch
As for not tying yourself to the theme, you can implement preprocess functions in modules also. That way they will be called regardless of the active theme, as long as the module is enabled.
Henrik Opel
jackocnr