Как я могу вставить поле поиска в page.tpl?


Как я могу программно вставить поле поиска (блок поиска) в свою тему?

Author: Nick.h, 2011-08-31

4 answers

Согласно вашему тегу, вы ищете решение D7. Друпал 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); 
?>
 39
Author: ipwa, 2011-09-07 16:19:05

Вместо этого сделайте это правильно и используйте блок.
Жесткое кодирование элементов внутри страницы.tpl - это ИМХО одна из вещей, которая все еще существует со времен "старых добрых времен".

Вместо этого используйте систему блоков; это дает вам гораздо больше гибкости в дальнейшем. Вы также можете проверить модуль Блокировать.

Этот модуль предоставляет ряд основных элементов Drupal в виде блоков.

 7
Author: mortendk, 2011-08-31 13:22:43

Вы можете использовать переменную $search_box, доступную для page.tpl.php файл.

 2
Author: Nikola Kotur, 2011-08-31 12:34:16

Вы также можете использовать систему блоков и добавить блок формы поиска на страницу в

Администратор > Структура > Блоки: Форма поиска

Например, чтобы разместить в меню навигации, поместите блок в область

" Навигация"

, А затем выровняйте с CSS.

Например, чтобы поместить справа от меню навигации:

#navigation #block-search-form{
  position: absolute;
  right: 10px;
  top: 0;
}
 1
Author: David Thomas, 2014-01-03 04:54:47