2013-05-22 3 views
0

Я хотел бы показать пользовательскую форму поиска на моем сайте Drupal.Drupal Custom HTML Search Form

Форма поиска содержит только текстовое поле и кнопку отправки рядом с ним, без каких-либо скрытых полей.

Я попытался с помощью простой формы HTML в шаблоне, который имитирует нормальный поиск друпал форма:

<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> 

Но это имеет некоторые проблемы, как: «форма устарела. Скопируйте любую несохраненную работу в форму ниже, а затем перезагрузите эту страницу. "

Есть ли способ, которым я могу использовать пользовательскую форму html в качестве формы поиска Drupal? В основном я хочу изменить форму поиска по умолчанию Drupal, чтобы удовлетворить мои потребности.

ответ

1

Используйте форму поиска на Друпали по умолчанию и изменить его по мере необходимости, используя

/** 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); 
+0

Ну, я, наконец, использовал код module_invoke, чтобы показать форму поиска в шаблоне в качестве блока: ** ** –

+0

Почему вы не могли просто использовать страницу Blocks в admin/structure/block для отображения блока формы поиска? Я представил себе, очевидно, неправильно, что была причина, по которой использование блока было неуместным в вашем случае. – turibe

+0

Использование module_invoke было одним из способов, я также попытался с theme_form_alter() в template.php и внес некоторые пользовательские изменения в форму css. Он работал хорошо. Все еще принимаю ваш ответ, так как он мотивировал меня взглянуть на hook_form_alter(). –