Odpowiedzi:
Zgodnie z tagiem szukasz rozwiązania D7. Drupal 7 page.tpl.php nie posiada już zmienną search_box $. Możesz jednak dodać go w funkcji przetwarzania wstępnego w szablonie. Php:
<?php
/*
* Preprocess page.tpl.php to inject the $search_box variable back into D7.
*/
function MYTHEME_preprocess_page(&$variables){
$search_box = drupal_render(drupal_get_form('search_form'));
$variables['search_box'] = $search_box;
}
Następnie wystarczy wydrukować zmienną na swojej stronie.tpl.php:
<?php print $search_box; ?>
Możesz także użyć module_invoke, ale nie powinieneś mieć logiki php w plikach szablonów:
<?php
$block = module_invoke('search', 'block_view', 'search');
print render($block);
?>
Zamiast tego zrób to we właściwy sposób i użyj bloku.
Elementy hardcoding wewnątrz page.tpl, to IMHO, jedna z rzeczy, które wciąż krążą od czasów „starych dobrych czasów”.
Zamiast tego użyj systemu blokowego; zapewnia większą elastyczność w dalszej części drogi. Możesz także sprawdzić moduł Blockify .
Moduł ujawnia wiele podstawowych elementów Drupala w postaci bloków.
Możesz użyć $search_box
zmiennej dostępnej dla pliku page.tpl.php .
Możesz także użyć systemu bloków i dodać blok formularza wyszukiwania do strony w
Administrator> Struktura> Bloki: Formularz wyszukiwania
np. aby umieścić w menu nawigacyjnym, umieść blok w regionie
"Nawigacja"
a następnie dostosuj do CSS.
np. w prawym menu nawigacyjnym:
#navigation #block-search-form{
position: absolute;
right: 10px;
top: 0;
}