web-dev-qa-db-fra.com

Comment puis-je insérer un champ de recherche dans page.tpl?

Comment puis-je insérer un champ de recherche (bloc de recherche) dans mon thème par programme?

27
Nick.h

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); 
?>
39
ipwa

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.

7
mortendk

Vous pouvez utiliser le $search_box variable disponible pour le fichier page.tpl.php .

2
Nikola Kotur

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;
}
1
David Thomas