Comment puis-je insérer un champ de recherche (bloc de recherche) dans mon thème par programme?
Selon votre tag, vous recherchez une solution D7. Drupal 7 page.tpl.php n'a plus la variable $ search_box. Cependant, vous pouvez l'ajouter dans une fonction de prétraitement dans votre 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;
}
Ensuite, il vous suffit d'imprimer la variable dans votre page.tpl.php:
<?php print $search_box; ?>
Vous pouvez également utiliser module_invoke, mais vous ne devriez pas avoir de logique php dans les fichiers de modèle:
<?php
$block = module_invoke('search', 'block_view', 'search');
print render($block);
?>
Faites-le à la place et utilisez le bloc.
Les éléments de codage en dur à l'intérieur du page.tpl, est à mon humble avis l'une des choses qui flotte toujours depuis le "bon vieux temps".
Utilisez plutôt le système de blocs; il vous donne beaucoup plus de flexibilité sur la route. Vous pouvez également consulter le module Blockify .
Ce module expose un certain nombre d'éléments de base Drupal sous forme de blocs.
Vous pouvez utiliser le $search_box
variable disponible pour le fichier page.tpl.php .
Vous pouvez également utiliser le système de blocs et ajouter le bloc du formulaire de recherche à la page
Admin> Structure> Blocs: formulaire de recherche
par exemple pour placer dans le menu de navigation, mettre le bloc dans la région
"Navigation"
puis aligner avec CSS.
par exemple pour mettre à droite du menu de navigation:
#navigation #block-search-form{
position: absolute;
right: 10px;
top: 0;
}