Comment puis-je insérer un champ de recherche (bloc de recherche) dans mon thème par programme?
27
Selon votre tag, vous recherchez une solution D7. Le 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 de la 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; cela vous donne beaucoup plus de flexibilité plus loin sur la route. Vous pouvez également consulter le module Blockify .
la source
Vous pouvez utiliser la
$search_box
variable disponible pour le fichier page.tpl.php .la source
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
"La navigation"
puis aligner avec CSS.
par exemple pour mettre à droite du menu de navigation:
la source