Imagen de karlos

A petición de un comensal en drupal.org.es huy vamos a preparar un plato un tanto especial, tenemos que tener algo de habilidad en el emplatado con el engine phptemplate.

El engine de phptemplate permite trabajar con template .php. En este archivo puedes crear tanto funciones que sobreescribe los themes de los módulos o puedes crearte tus propias historias, para eso el engine dispone de varias funciones que permite trabajar con los tlp.php:

  • _phptemplate_variables: Es la receta con la que trabajaremos hoy

Imaginemos que tenemos un modulo con una función que realizar una llamada a la bbdd para sacar el nid de los nodos que aparecen en la portada algo así.

Modulo bbddportada.module
function nids($tipo){

$uri_resquest_id = $_SERVER['REQUEST_URI'];
if ($uri_resquest_id == '/'){
$sql = "SELECT nid FROM {node} WHERE status = 1 AND type = '$tipo' order BY 'created'";
$result = db_query($sql);
while ($data = db_fetch_object($result)){
$nids = $data->nid;
}
return $nids;
}
}
?>

Sencillo con esta condicion if ($uri_resquest_id == '/') digo que no lo haga más que en la portada. y el resto devuelve los datos según el tipo mandado como argumento.

Después en el archivo template.php añado esta función
function _phptemplate_variables($hook, $vars = array()){

switch ($hook) {
case 'node':
$vars['nid_noticia'] = nids('noticia');
$vars['nid_acti'] = nids('actividad');
break;
}
return $vars;
}
?>

Cada vez que pasa por un hook, por ejemplo un nodo (pero podría ser un comment o un page) realizara lo que este dentro del "case". esto devuelve en el return y puede ser usado en la plantilla a la que haga referencia el hook

También se podría añadir este esquema para entender mejor este plato.

Theme('node') -->
phptemplate_node()
_phptemplate_callback('node',$variables)
_phptemplate_variables('node',$variables)
$nid_noticia = $vars['nid_noticia']
$nid_acti = $vars['nid_acti']

node.tpl.php

Por lo tanto de este esquema de funcionamiento se traduce en que una vez pasa por cada uno de estos paso de la renderización de nuestros nodos podremos añadir a la plantilla node.tpl.php las variables $nid_noticias y $nid_acti

node.tpl.php

?>

Y despues el resto de la plantilla de node con su $content y sus cosicas

Resumen si necestimas crear nuestras propias variables para trabajar con ellas en las plantillas necesitamos _phptemplate_variables

Buen provecho