Отображать форму поиска Solr на каждой странице
Я работаю над сайтом, который использует Apache Solr для поиска по сайту, который находится по URL/поиск/сайт/.
Что я хочу сделать, так это добавить форму на каждую страницу сайта, которая позволяет пользователю вводить текст и отправлять его. Затем форма приведет пользователя к /поиску/сайту/странице, отображающей результаты по их поисковому запросу.
Это звучит так, как будто это должно быть просто, но я не вижу, как это сделать, я не могу найти способ создать для этого блок, и когда я пытаюсь чтобы использовать приведенный ниже код для программного отображения формы, она представляется пользователю, но при отправке они попадают на правильную страницу (/поиск/сайт/), но результаты их поиска не отображаются.
$search_form = drupal_get_form('search_form');
$search_form_box = drupal_render($search_form);
print $search_form_box;
print render(drupal_get_form('search_form'));
Я не был на 100% уверен, что "форма поиска" была правильной, но при отправке она приведет вас на правильную страницу результатов поиска (/поиск/сайт/), но условия или результаты не отображаются.
Я совсем новичок в использовании Drupal & Solr, поэтому, если вам нужна какая-либо информация, я пропустил, пожалуйста, спросите.
1 answers
Мне удалось решить эту проблему, чтобы подготовить блок к отображению, я использовал preproccess_region (см. Код ниже)
function THEMENAME_preprocess_region(&$variables){
$site_search_block = module_invoke('search', 'block_view', 'search');
$variables["site_search_block"] = render($site_search_block);
}
Затем в файле в моем регионе.tpl (region--menu.tpl.php для меня) Я ввел следующий код для его отображения.
<?php if($site_search_block){ print $site_search_block; } ?>
В качестве дополнительной информации, если вы хотите отредактировать вывод формы, как это сделал я, хотя я не спрашивал об этом здесь, эта функция должна вам помочь:
function THEMENAME_form_search_block_form_alter(&$form, &$form_state, $form_id) {
$form['#id'] = 'siteSearchForm'; //Set form element ID
//The form elements (I think)
$form['search_block_form']['#title'] = t('Search'); // Change the text on the label element
$form['search_block_form']['#title_display'] = 'invisible'; // Toggle label visibilty
$form['search_block_form']['#size'] = 10; // define size of the textfield
//$form['search_block_form']['#default_value'] = t('SEARCH'); // Set a default value for the textfield
//Submit button element values
$form['actions']['submit']['#value'] = t('GO!'); // Change the text on the submit button
$form['actions']['submit'] = array('#type' => 'image_button', '#src' => base_path() . path_to_theme() . '/img/search-icn.png');
//Add extra attributes to the text box
//$form['search_block_form']['#attributes']['onblur'] = "if (this.value == '') {this.value = 'SEARCH';}";
//$form['search_block_form']['#attributes']['onfocus'] = "if (this.value == 'SEARCH') {this.value = '';}";
//Prevent user from searching the default text
//$form['#attributes']['onsubmit'] = "if(this.search_block_form.value=='SEARCH'){ alert('Please enter a search'); return false; }";
//HTML5 placeholder attribute instead of using the javascript
$form['search_block_form']['#attributes']['placeholder'] = t('SEARCH');
}