Drupal 7在搜索块表单配置中添加一个字段

时间:2012-06-16 22:13:51

标签: drupal

我想构建一个模块,在搜索表单块配置页面上添加一个额外字段,以存储将显示为HTML5占位符属性的文本。我需要使用哪些钩子,如何修改搜索表单块,以便在页面上打印出额外的texbox?

2 个答案:

答案 0 :(得分:2)

这是最终有效的代码,感谢您的帮助:

function yourmodule_form_alter(&$form, &$form_state, $form_id) {  
  if (($form_id == 'block_admin_configure') && ($form['module']['#value'] == 'search')) {
    $form['settings']['theplaceholder'] = array(
      '#type' => 'textfield', 
      '#title' => t('Add placeholder text'), 
      '#default_value' => variable_get('theplaceholder'),
      '#maxlength' => 64,
      '#description' => 'Override the default placeholder',
      '#weight' => 2,
      '#access' => TRUE,
    );
    $form['#submit'][] = 'yourmodule_submit_function';
  }

if ($form_id == 'search_block_form') {
    $form['search_block_form']['#attributes']['placeholder'] = variable_get('theplaceholder');
  }
}
function yourmodule_submit_function($delta = '', $edit = array()){  
    variable_set('theplaceholder', $edit['values']['theplaceholder']);
}

答案 1 :(得分:1)

您可以使用以下挂钩修改任何表单:

function MODULE_NAME_form_FORM_ID_alter(&$form, &$form_state, $form_id) {

}

插入您自己的模块名称和您尝试更改的表单的表单ID。在你的情况下,它只是块的搜索形式或搜索块形式。通过查看页面的html源并从元素中获取id,找出您尝试更改的表单的ID。

无论如何,一旦你想出了要插入的正确id,就开始在表单中添加元素:

function MODULE_NAME_form_FORM_ID_alter(&$form, &$form_state, $form_id) {
  $form['my_new_field'] = array(
    '#type' => 'item',
    '#markup' => t('Just testing'),
    '#weight' => 10, 
  );
}

加载表单以确保您的新标签,字段或其他任何内容都显示出来。

这对你有用吗?

有关此功能的更多文档,请访问:http://api.drupal.org/api/drupal/modules!system!system.api.php/function/hook_form_FORM_ID_alter/7