¿Cómo puedo insertar el cuadro de búsqueda en page.tpl?


27

¿Cómo puedo insertar el cuadro de búsqueda (bloque de búsqueda) en mi tema mediante programación?

Respuestas:


39

Según su etiqueta, está buscando una solución D7. El Drupal 7 page.tpl.php ya no tiene la variable $ search_box. Sin embargo, puede agregarlo en una función de preproceso en su 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;
}

Entonces solo necesita imprimir la variable en su page.tpl.php:

<?php print $search_box; ?>

También podría usar module_invoke, pero no debería tener lógica php en archivos de plantilla:

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

Gracias, ¿Dónde debo colocar el tercer bloque de código? (Directamente en page.tpl.php O en template.php y luego acceder a él desde page.tpl?)
Nick.h

1
El tercer bloque debe colocarse en page.tpl.php. Como abreviatura también puede usar: "print render (module_invoke ('search', 'block_view', 'search'));"
Bala Clark

2
Para evitar la "Advertencia estricta: solo se deben pasar las variables por referencia en [theme-name] _preprocess_page () (línea xx de [theme-name] /template.php)". advirtiendo que su theme_preprocess_page debe ser como sigue: / * * Implementa theme_preprocess_page (). * / function [theme-name] _preprocess_page (& $ variables) {$ search_form = drupal_get_form ('search_form'); $ search_box = drupal_render ($ search_form); $ variables ['search_box'] = $ search_box; }
kbrinner

7

Hazlo de la manera correcta y usa el bloque.
Elementos de codificación dentro de page.tpl, en mi humilde opinión, es una de las cosas que todavía flota desde los "buenos viejos tiempos".

Utilice el sistema de bloques en su lugar; te da más flexibilidad más adelante. También puede consultar el módulo Blockify .

Este módulo expone una serie de elementos centrales de Drupal como bloques.



1

También puede usar el sistema de bloques y agregar el bloque del formulario de búsqueda a la página en

Admin> Estructura> Bloques: formulario de búsqueda

Por ejemplo, para colocar en el menú de navegación, poner el bloque en la región

"Navegación"

y luego alinear con CSS.

Por ejemplo, para poner a la derecha del menú de navegación:

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

Esto funcionaría, pero la pregunta era hacer referencia a una solución programática.
timofey.com
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.