Drupal hook_form_alter()在节点表单上

我只是花了最后几分钟来寻找解决方案,所以我认为其他人也许可以从中受益。

hook_form_alter()仅使用模块名称就可以在模块中调用该挂钩,这可以使您将系统中的所有表单作为目标。对于名为“我的模块”的模块,它将称为mymodule_form_alter()。

的力量hook_form_alter()挂钩的是,它阿洛斯可以专门针对一个模块内的特定名称的形式。一个很好的例子是,如果您想更改搜索表单以添加一个类,这是一项常见的任务。为此,创建一个模块,以便您可以将hook_form_alter()钩子添加到其中,然后通过以下方式构造函数名称:

module name + '_form_' + form ID + '_alter'

请注意,表单ID中的所有连字符均更改为下划线。如上面给出的示例所示,当专门查看搜索表单时,这将创建以下功能。

function mymodule_form_search_theme_form_alter(&$form, &$form_state) {
    $vars['#attributes'] = array('class' => 'search-form-thing'); 
}

hook_form_alter()通常,在使用时,请查看页面的HTML来查找相关表格的ID,以便从该ID构造函数名称。但是,当尝试查看节点编辑表单时,此格式略有不同,这导致我花了几分钟时间尝试弄清楚发生了什么。在这种情况下,表单的ID不是“ node-form”,而是“ contenttype-node-form”。因此,为了更改博客节点编辑表单,您将创建以下功能:

function mymodule_form_blog_node_form_alter(&$form, &$form_state) {
    $vars['#attributes'] = array('class' => 'node-edit-form'); 
}

这将允许您更改节点编辑表单。