当您报告的代码正在寻找节点表单的表单ID时,有两种情况。
Drupal 6
如果代码试图更改用于设置内容类型设置的格式,则应使用以下IF语句。
if ($form_id == 'node_type_form' && isset($form['identity']['type'])) { /* … */ }
如果代码试图更改节点编辑形式,则代码应使用以下IF语句。
if (isset($form['type']) && isset($form['#node']) && $form['type']['#value'] . '_node_form' == $form_id) { /* … */ }
Drupal 7及更高版本
在第一种情况下,IF语句应为以下内容:
if ($form_id == 'node_type_form') { /* … */ }
使用另一种方法,假设mymodule是模块的简称,则可以使用mymodule_form_node_type_form_alter(&$form, &$form_state, $form_id)
。从Drupal 7开始,所有用于更改另一个模块实现的表单的钩子都$form_id
作为最后一个参数。参见hook_form_alter(),hook_form_FORM_ID_alter(),hook_form_BASE_FORM_ID_alter()。
在第二种情况下,IF语句与Drupal 6相同。
if (isset($form['type']) && isset($form['#node']) && $form['type']['#value'] . '_node_form' == $form_id) { /* … */ }