Ответы:
Согласно вашему тегу, вы ищете решение D7. В Drupal 7 page.tpl.php больше нет переменной $ search_box. Однако вы можете добавить его в функцию предварительной обработки в вашем template.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;
}
Тогда вам просто нужно напечатать переменную в вашем page.tpl.php:
<?php print $search_box; ?>
Вы также можете использовать module_invoke, но у вас не должно быть логики php в файлах шаблонов:
<?php
$block = module_invoke('search', 'block_view', 'search');
print render($block);
?>
Сделайте это правильно и используйте блок.
Жесткое кодирование элементов внутри page.tpl, ИМХО, является одной из вещей, которая все еще витает со времен «старых добрых времен».
Вместо этого используйте систему блоков; это дает вам больше гибкости в будущем. Вы также можете проверить модуль Blockify .
Этот модуль представляет ряд основных элементов Drupal в виде блоков.
Вы можете использовать $search_box
переменную, которая доступна для файла page.tpl.php .
Вы также можете использовать систему блоков и добавить блок формы поиска на страницу в
Админ> Структура> Блоки: Форма поиска
например, разместить в меню навигации, поставить блок в регионе
«Навигация»
а затем выровнять с CSS.
например, поставить справа от меню навигации:
#navigation #block-search-form{
position: absolute;
right: 10px;
top: 0;
}