Jump to content

[SOLUCION] Modulo Aeroslider en el Hook TOP


Recommended Posts

Hola a todos.

 

Recientemente adquirí el módulo Aeroslider para insertar una zona de imágenes en slider en el TOP de mi plantilla. Tras instalar y hacer algunas pruebas, veo que solo se instala correctamente en los módulos HomepageContent y Header of Pages, funcionando tal como el vendedor indica (fantásticamente, por cierto).

 

El problema está en que por más que lo instalo / traslado al hook TOP, no se ejecuta, no renderiza nada en esa zona. Incluso instalando todo el contenido del aeroslider.tpl en la zona hook top... nada.

 

Tras leer varios foros, llego a la conclusión de que la solución es la aportada en este hilo:

 

http://todoprestasho...t=3454&start=20

 

Efectivamente, hago la prueba con el archivo aeroslider.php e inserto en la línea 160 106 este código:

 

 

	
function hookTop($params)
		{
		return $this->hookHome($params);
		}

 

justo encima de donde aparece la línea:

 

public function hookHome($params)
{

 

 

Simple y efectivo, solo queda modificar el CSS para que se adapte a mis gustos. Espero que a alguien le sirva ;)

Link to comment
Share on other sites

Además de instalarlo en el TOP, necesitaba que el módulo se muestre SOLO en la portada (index) y no en el resto de las páginas. Eso de que ocupe espacio una vez mostrado y además cargue siempre la primera imagen una y otra vez... no dá el resultado esperado.

 

Por ello decidí incluir un if, tomado del módulo CarouselCN donde lo ví, en el propio PHP aeroslider.php que al fin y al cabo es el encargado de escribir una y otra vez aeroslider.tpl con las imagenes que se mostrarán y el orden y otros elementos elegidos.

 

Así que busco la función fopen que abre el archivo TPL (aprox línea 178) y en la línea siguiente veo la línea que escribe el contenido:

 

$xml = fopen ("modules/aeroslider/aeroslider.tpl", "w");

fwrite ($xml, '
<link rel="stylesheet" href="modules/aeroslider/nivo-slider.css" type="text/css" media="screen" />
<script src="modules/aeroslider/jquery-1.4.js" type="text/javascript"></script>
<script src="modules/aeroslider/jquery.nivo.slider.js" type="text/javascript"></script>
.
.

 

Un poco más adelante se cierra este primer fwrite para ejecutarse un código php y luego vuelve a abrirse el fwrite para finalizar la escritura con el resto del código de la TPL

 

fwrite ($xml,'
  </div>
  <div id="shadow"></div>
  </div>
  {literal}
<script type="text/javascript">

$(window).load(function() {
$(\'#slider\').nivoSlider({
effect:\''.$effect.'\',
.
.
.

 

 

Por lo tanto, el condicional debe abrirse (teclearse) en el primer fwrite y cerrarse en el segundo, ya que son ambos comandos los encargados de escribir todo el aeroslider.tpl.

 

De esta manera, el aeroslider.php queda asi:

 



fwrite ($xml, '
{if $page_name==\'index\'}

<link rel="stylesheet" href="modules/aeroslider/nivo-slider.css" type="text/css" media="screen" />
<script src="modules/aeroslider/jquery-1.4.js" type="text/javascript"></script>
<script src="modules/aeroslider/jquery.nivo.slider.js" type="text/javascript"></script>
<div style="margin:0px auto; width:'.$width.'px; height:'.$height3.'px; position:relative; ">
<div id="shadow2"></div>
<div id="slider" class="nivoSlider" style="width:'.$width.'px; height:'.$height.'px">
'); // se cierra primer fwrite


$links = $this->getLinks();
$i=0;
	foreach ($links AS $link)
	{
	if($link['newWindow'] == "1")
	{
	$tar = " target=_blank ";
	}
	else
	{
	$tar = " target=_self ";
	}
$contenidoxml .= '

<a href="'.$link['url'].'" '.$tar.'><img src="'.__PS_BASE_URI__.'modules/aeroslider/slides/slide'.$link['id'].'.jpg" alt="" title="'.$link['text_'.$cookie->id_lang].': '.$link['description_'.$cookie->id_lang].'" style="width:'.$width.'px; height:'.$height.'px" /></a>

';
	$i++;
	}

fwrite ($xml, $contenidoxml);


fwrite ($xml,'
  </div>
  <div id="shadow"></div>
  </div>
  {literal}
<script type="text/javascript">

$(window).load(function() {
$(\'#slider\').nivoSlider({
effect:\''.$effect.'\',
			slices:'.$slices.',
			animSpeed:500,
			pauseTime:'.$delay.',
			startSlide: 0,
			directionNav:false,
			directionNavHide:true,
			controlNav:true,.
			controlNavThumbs:false,v
			controlNavThumbsFromRel:false,
			controlNavThumbsSearch: \'.jpg\',
			controlNavThumbsReplace: \'_thumb.jpg\',
			keyboardNav:true,
			pauseOnHover:true,
			manualAdvance:false,
			captionOpacity:'.$opacity.',
			beforeChange: function(){},
			afterChange: function(){},
			slideshowEnd: function(){}

});
});

</script>
{/literal}
{/if}
');

 

 

De esta manera, solo se escribe la TPL si la página donde se vá a mostrar es INDEX, quedando en blanco (pero no estando ausente) si es otra página cualquiera.

 

La página donde está instalado este slider es www.elrincondegalicia.com

 

Espero que pueda serle útil a alguien ;)

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...