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


27

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

Risposte:


39

Secondo il tuo tag, stai cercando una soluzione D7. Il page.tpl.php Drupal 7 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); 
?>

Grazie, dove devo posizionare il terzo blocco di codice? (Direttamente in page.tpl.php O in template.php e quindi accedervi da page.tpl?)
Nick.h

1
Il terzo blocco dovrebbe essere inserito in page.tpl.php. Come abbreviazione puoi anche usare: "print render (module_invoke ('search', 'block_view', 'search'));"
Bala Clark,

2
Per evitare "Avvertimento rigoroso: solo le variabili devono essere passate per riferimento in [nome-tema] _preprocess_page () (riga xx di [nome-tema] /template.php)." attenzione il tuo theme_preprocess_page dovrebbe essere il seguente: / * * Implementa theme_preprocess_page (). * / function [nome-tema] _preprocess_page (& $ variabili) {$ search_form = drupal_get_form ('search_form'); $ search_box = drupal_render ($ search_form); $ variabili ['search_box'] = $ search_box; }
kbrinner,

7

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. Potresti anche voler dare un'occhiata al modulo Blockify .

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



1

È 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 es. per mettere a destra del menu di navigazione:

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

Funzionerebbe, ma la domanda si riferiva a una soluzione programmatica.
timofey.com
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.