it-swarm.it

Come posso inserire la casella di ricerca in page.tpl?

Come posso inserire la casella di ricerca (blocco di ricerca) nel mio tema a livello di programmazione?

27
Nick.h

Secondo il tuo tag, stai cercando una soluzione D7. Drupal 7 page.tpl.php non ha più la variabile $ search_box. Tuttavia puoi aggiungerlo in una funzione di preelaborazione nel tuo 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;
}

Quindi devi solo stampare la variabile nel tuo page.tpl.php:

<?php print $search_box; ?>

Puoi anche usare module_invoke, ma non dovresti avere la logica php nei file template:

<?php
  $block = module_invoke('search', 'block_view', 'search');
  print render($block); 
?>
39
ipwa

Fallo nel modo giusto invece e usa il blocco.
Elementi hardcoding all'interno di page.tpl, è IMHO una delle cose che galleggia ancora dai "bei vecchi tempi".

Utilizzare invece il sistema a blocchi; ti dà molta più flessibilità lungo la strada. Puoi anche dare un'occhiata al modulo Blockify .

Questo modulo espone un numero di elementi core Drupal come blocchi.

7
mortendk

Puoi usare il $search_box variabile disponibile per il file page.tpl.php .

2
Nikola Kotur

È inoltre possibile utilizzare il sistema a blocchi e aggiungere il blocco del modulo di ricerca alla pagina in

Ammin.> Struttura> Blocchi: modulo di ricerca

ad es. per posizionarlo nel menu di navigazione, posizionare il blocco nella regione

"Navigazione"

e quindi allineare con CSS.

ad esempio per mettere a destra del menu di navigazione:

#navigation #block-search-form{
  position: absolute;
  right: 10px;
  top: 0;
}
1
David Thomas