我有一个表单,并希望以编程方式更改显示在页面顶部的帮助文本。有没有可用的钩子来做到这一点?
编辑:“帮助文本”是指在 CCK 表单中输入的文本:admin/content/node-type/sample-form
在文本框上方,它被标记为:
解释或提交指南:
textarea 有 idedit-help
下面,有文字:
此文本将显示在此内容类型的提交表单的顶部。它对于帮助或指导您的用户很有用。
这足够具体吗?
帮助文本由模块hook_help()
实现返回,因此要添加您自己的,这将是查看的地方。
至于更改由不同模块设置的帮助文本hook_help()
,这有点棘手。看一下theme_help()
- 这是通过调用来组装帮助文本的地方menu_get_active_help()
,这反过来又调用模块hook_help()
实现。
因此,您的第一个选项似乎是覆盖theme_help()
,或者通过省略调用menu_get_active_help()
并直接设置您自己的值,或者您在返回结果之前进行调用并修改结果。
在该覆盖中确定您的上下文会有点困难,因为该theme_help()
函数会为每个呈现的页面调用,并且不提供任何参数,如果您在正确的页面(您想要的表单页面)上,您可以从中获取信息改变)。如果表单页面具有明显可识别的路径结构,您可能必须为此使用arg()函数。
获取帮助文本的第二个选项是稍后一步,通过更改传递给 page.tpl.php 的 $help 变量的内容。您可以实现自己的preprocess_page(&$variables)
功能并更改$variables['help']
那里的内容。您仍然需要确定您是否在正确的页面上,但是 $variables 数组包含很多可以帮助您的信息。