Drupal: Publicar un banner o mensaje despues del primer (o segudo) post

Posted by alexmoreno on Thu, 10/11/2011 - 14:02

Seguro que te ha ocurrido alguna vez. Tienes un banner o un determinado mensaje que quieres colocar en el teaser, después del primer o segundo post, pero no más. No quieres que se repita de forma indefinida, sobre todo porque queda muy intrusivo.

La solución? Mas fácil de lo que en principio había estado tratando de hacer. Si usamos una variable global, su contenido se va a mantener a lo largo de todo el ciclo de vida de carga de la web (mientras un usuario abre la página). Por ejemplo:

<?php

global $nodenumber;

if($teaser){

//if(drupal_is_front_page()){

 

Fijaos que lo pongo al principio del fichero, justo antes de la declaración de inicio del $teaser de Drupal. De esta forma la varible ya está inicializada y evitamos que cada vez que vaya a mostrarse un post en la misma página se reinicie de nuevo la varible.

Ahora vamos al final de la plantilla del tipo de contenido, y hacemos lo siguiente:

<?php //print_r ($node); 

echo 'page:: ' . $page;

$nodenumber = $nodenumber + 1;

echo $nodenumber;

if($nodenumber == 1 || $nodenumber == 3) {

?>

<a href="http://bit.ly/sBPXWg"><img src="<?php echo base_path() . path_to_theme()?>/imagenes/BANNER.jpg" alt="" ></a>

<?php

}

?>

 

Facil, verdad? En nuestro caso estamos mostrando la imagen después del post número 1 y del tercero.

El código tendremos que insertarla en la plantilla del tipo de contenido que estamos usando, por ejemplo en node-blog.tpl.php, o en node-TIPOCONTENIDO.tpl.php