Drupal módule: «llamarlo» desde nuestra plantilla

Hola amigos!!!

¿sabéis como se hace para mostrar el resultado HTML de un módulo en vuestra plantilla? Vamos a suponer que tanto el módulo como la plantilla las estamos diseñando nosotros… esto nos puede servir para hacer una separación lógica muy buena entre la funcionalidad del módulo y la propia plantilla (que solo debería preocuparse del diseño del sitio).

Para ello, deberemos añadir en el fichero .module de nuestro plugin el hook_theme correspondiente. Suponemos que nuestro módulo se llama drapps… xD

El siguiente código añade la capacidad de invocar el «tema» del plugin llamado «drapps_content».

[sourcecode language=»plain»]
/**
* Implements hook_theme().
*/
function drapps_theme() {
return array(
‘drapps_content’ => array(
‘template’ => ‘templates/drapps_template’,
‘file’ => ‘/includes/drapps.inc’,
),
);
}

[/sourcecode]

Destacar los parámetros: «template» es usado para la parte del HTML, en él estará todo el código que se corresponderá con la presentación de este contenido. Y «file» es el fichero php que contiene la lógica en PHP y que recoge las variables de la llamada, las transforma y se las pasa a la plantilla drapps_template.tpl.php (de dentro de la carpeta templates relativo a la carpeta de nuestro módulo).

El fichero drapps_template.tpl.php podría ser:

[sourcecode language=»plain»]</pre>
<div>Hola <?php $param1 ?></div>
<pre>
[/sourcecode]

La variable $param1 es recibida desde drapps.inc.
El fichero drapps.inc tiene todo el PHP para entregar las variables a la plantilla, se pueden hacer consultas a la bd, a servicios web, etc… Pero lo imporante de este fichero es que debe contener una función con un nombre determinado ya que, de otro modo, no se ejecutaría nuestro código… Esta función es:

El nombre es especial y tiene el siguiente patrón: nombremodulo_preprocess_nombretheme. Ahora sí que podemos ya empezar a funcionar…

[sourcecode language=»plain»]
function drapps_preprocess_drapps_content(&$vars){
$vars["param1 "] = "Daniel Ruiz";
}
[/sourcecode]

En esa función como digo podemos hacer lo que queramos, comprobaciones de usuario, de campos, consultas, etc…

Para invocar esto desde nuestra plantilla bastará con incluir este php:

[sourcecode language=»plain»]
print theme(‘drapps_content’);
[/sourcecode]

Cuando se procese la plantilla aparecerá nuestro drapps_template.tpl.php renderizado…

Esto es todo!

Un saludo

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.