Jak mogę programowo wstawić pole wyszukiwania (blok wyszukiwania) do motywu?
27
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 .
źródło
Możesz użyć
$search_box
zmiennej dostępnej dla pliku page.tpl.php .źródło
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:
źródło