如何覆盖Drupal中的非主题函数

时间:2012-10-28 22:03:30

标签: function drupal drupal-7 override

我需要更改指示我的搜索表单行为的函数。我希望文本是“GO”而不是“搜索”,输入类型是搜索而不是文本。

现在,我已经通过编辑search.module来做到这一点,但是有更方便的方法吗?我希望主题是1个包交易并准备好了,而不是必须从Drupal安装中编辑其他文件。

适用于Drupal v.7.16

谢谢!

2 个答案:

答案 0 :(得分:3)

在您主题的template.php中,您可以通过实现MYTHEME_form_alter来覆盖搜索表单的任何部分。

对于您的示例,它可能看起来像这样:

function MYTHEME_form_alter(&$form, &$form_state, $form_id) {
    if ($form_id == 'search_block_form') {
        // Change form submit text
        $form['actions']['submit']['#value'] = t('GO!');

        // Change type to 'search'
        $form['search_block_form']['#type'] = 'search';
    }
}

答案 1 :(得分:2)

有关Tanis'的更多背景信息。解决方案,请参阅hook_form_alter()hook_form_FORM_ID_alter()的API文档。