0

我想在我的 Drupal 站点中显示自定义搜索表单。

搜索表单旁边只有一个文本框和一个提交按钮,不需要任何隐藏字段。

我尝试在我的模板中使用一个简单的 html 表单,它模仿了正常的 drupal 搜索表单:

<form accept-charset="UTF-8" id="search-form" method="post" action="/drupal/?q=search/page" class="search-form">
<div id="edit-basic" class="container-inline form-wrapper">
<div class="form-item form-type-textfield form-item-keys">
<input type="text" autocomplete="off" class="form-text" maxlength="255" size="40" name="keys" id="edit-keys" value="search" onBlur="if(this.value == '') { this.value = 'search'; }" onFocus="if(this.value == 'search') { this.value = ''; }" style="right:15px;">
</div>
</div>
<input type="hidden" value="form-Og2HsMomOhfRkoS262LFbqpN2NyIGeHHYfTF43Kynjs" name="form_build_id">
<input type="hidden" value="mfLsAR-y7CVQLcWY7hgZRGPbu3F3R5uQKKpZe3ppAi4" name="form_token">
<input type="hidden" value="search_form" name="form_id">
</form>

但这有一些问题,例如:“<strong>表格已经过时了。复制下面表格中所有未保存的作品,然后重新加载此页面。”</p>

有没有办法可以使用自定义 html 表单作为 Drupal 搜索表单?基本上我想重新设计默认的 Drupal 搜索表单,以满足我的需要。

4

1 回答 1

1

使用默认的 drupal 搜索表单并根据需要使用hook_form_FORM_ID_alter进行更改

/** Implements hook_form_FORM_ID_alter */
function mymodule_form_search_form_alter (& $form, & $form_state)
{
  /* Do your alterations here */
}

参考Form API以帮助了解您需要进行哪些更改。

在上面的代码中将 mymodule 替换为您的自定义模块的名称。要在模板中输出表单,请使用以下代码:

$form = drupal_get_form('search_form');
print render($form);
于 2013-05-24T01:16:04.163 回答