Jump to content

[Solucionado] Productos destacados en nuevo hook


Recommended Posts

Buenas,

 

Estoy intentando trasladar el Módulo de Productos destacados (Plantilla default PS 1.5.) fuera del div "columns", pero no hay forma.

 

Lo que quiero, es que el módulo productos destacados se posicione bajo las columnas izquierda, central y derecha, que tendrán un alto fijo. (os adjunto un esquema)

 

He creado un nuevo hook en el footer siguiendo este tutorial http://www.luiscambr...prestashop-1-5/, pero en el tutorial el hook lo escribe en el header y a mi me interesa posicionarlo después del cierre de <div id="columns"> que se encuentra en el footer.tpl, pero en el footer no me deja ponerlo.

 

Alguien se le ocurre como puedo hacerlo?

 

post-169392-0-25593400-1373481850_thumb.jpg

Edited by perar (see edit history)
Link to comment
Share on other sites

Gracias Nadie!

 

Nada, no hay forma.

Resumo los pasos que he seguido por si estoy haciendo algo mal y no lo veo:

 

Añado el nuevo Hook directamente en la base de datos: (la fila 'posición' queda con valor 1)

Name= displayProductosHook

 

Añado el alias del Hook directamente en la base de datos:

Alias= ProductosHook

Name= displayProductosHook

 

No creo el override de momento pero edito el /classes/controller/FrontController.php y añado dentro de la función initContent la línea:

'HOOK_PRODUCTOSHOOK' => Hook::exec('displayProductosHook'),

 

Hay que añadir esta línea en alguna función más? Porque veo que en la función displayHeader también se asignan los hooks. (lo pruebo también pero nada)

 

Luego voy al módulo HomeFeatured.php y añado: (pienso que igual por aquí viene el problema? No debería asignarlo al footer aquí?)

 

public function hookDisplayProductosHook($params)
{
	$this->hookHeader($params);
}

 

luego edito el footer.tpl y añado justo después de cerrar el div de la columna right:

 

<div id="caja_productos">
{$HOOK_DISPLAYPRODUCTOSHOOK}
</div>

 

y por último reinstalo el módulo y lo traslado al hook, pero ná de ná!!

 

Una cosa nadie, he seguido lo que comentas y, que parte del tutorial que menciono arriba no es necesaria con el método que tu propones? Como dices que no hace falta tanto...

 

Luego, si intento hacerlo como tu dices, lo primero que veo es que en el módulo homefeatured.php no aparece esa línea a la que tu te refieres dentro del blockadvertising.php, supongo que en el caso del homefeatured debe ir en esta función.

function install()
{
 if (!Configuration::updateValue('HOME_FEATURED_NBR', 8) || !parent::install() || !$this->registerHook('displayHome')|| !$this->registerHook('displayProductosHook')  || !$this->registerHook('header'))
  return false;
 return true;
}

 

Bueno pués no hay forma, qué hago mal?

Link to comment
Share on other sites

El enlace que te he pasado es un ejemplo, solo un ejemplo, y como he dicho en la 1.5, no tienes que añadir nada a la base de datos, ni editar ningún controlador (esto no me lo invento) porque al hacerlo como comento, en el ejemplo el ya se encarga automáticamente de añadir lo que tenga añadir en los correspondientes sitios. (Lo que te he pasado es un ejemplo, ya tu te encargas de adaptarlo)

 

Por cierto, no hace falta tanto follon para crear un nuevo hook en Prestashop 1.5 xDDDDDDDD (Ahora que me he puesto a leer el articulo he flipado xD)

 

Te digo como crear un nuevo hook con el modulo bloque de publicidad y tu ya lo aplicas esa modificacion donde quieras.

 

Vas al fichero:

 

/modules/blockadvertising/blockadvertising.php

 

Buscas esto:

 

 return (parent::install() && $this->registerHook('leftColumn'));

 

Y lo dejas asi:

 

 return (parent::install() && $this->registerHook('leftColumn') && $this->registerHook('DisplayNadie'));

 

(Al volver a instalar el modulo, el te va a crear el hookDisplayNadie automaticamente. (Esto antes no lo hacia, pero en Prestashop 1.5, te lo crea automaticamente)

 

Despues, por ejemplo creas la funcion:

 

public function hookDisplayNadie($params)
{
	   return $this->hookRightColumn($params);

}

 

En este caso indico lo que en la función hookRightColumn se muestre, se mostrara en el hookDisplayNadie

 

Luego en el fichero/s ".tpl" donde vayas a mostrar el modulo:

 

Añades esto:

 

{hook h='DisplayNadie'}

 

(En la 1.5, no es necesario añadir nada en la base de datos manualmente, porque automáticamente el te registra el nuevo hook)

Link to comment
Share on other sites

Te lo explico en base al modulo de productos destacados, ya que he tenido que corregir una errata.

 

1- Fichero:

 

/modules/homefeatured/homefeatured.tpl

 

Buscas esto:

 

function install()
{
 if (!Configuration::updateValue('HOME_FEATURED_NBR', 8) || !parent::install() || !$this->registerHook('displayHome') || !$this->registerHook('header'))
  return false;
 return true;
}

 

Y lo dejas así:

 

 if (!Configuration::updateValue('HOME_FEATURED_NBR', 8) || !parent::install() || !$this->registerHook('displayHome') || !$this->registerHook('header') || !$this->registerHook('DisplayNadie'))
  return false;
 return true;
}

 

2 - En el mismo, fichero, por ejemplo debajo de:

 

public function hookDisplayHeader($params)
{
 $this->hookHeader($params);
}

 

añades esto:

 

public function hookDisplayNadie($params)
	{
			   return $this->hookDisplayHome($params);
	}

 

3 - Reinicias o desinstalas y vuelve a instalar el modulo.

 

4 - Donde quieras que se vea el modulo añade esto (en el tpl correspondiente):

 

{hook h='DisplayNadie'}

 

5 - El modulo al estar instalado en 2 hook, supongo que ahora lo querras borrar del DisplayHome, (Eso lo puedes hacer desde la pestaña Módulos -> Posiciones)

Link to comment
Share on other sites

Hola nadie, no me he ido no, disculpa la tardanza pero me lié con otras cosas!!

 

Al final solo lo conseguí cambiando el nombre a la función hookDisplayHome por hookFooter y cambiando la posición del módulo al footer directamente, pero claro, una chapuza, porque además me heredaba estilos del footer, etc etc.

 

Ahora si, lo he cambiado como dices y funciona a la perfección!! :)

 

Muchas gracias!!

Link to comment
Share on other sites

Hola nadie, no me he ido no, disculpa la tardanza pero me lié con otras cosas!!

 

Al final solo lo conseguí cambiando el nombre a la función hookDisplayHome por hookFooter y cambiando la posición del módulo al footer directamente, pero claro, una chapuza, porque además me heredaba estilos del footer, etc etc.

 

Ahora si, lo he cambiado como dices y funciona a la perfección!! :)

 

Muchas gracias!!

 

Como añado el [solucionado]? No lo encuentro!!

 

Un placer ayudarte y servirte!

 

Si das el tema como solucionado, edita el titulo del tema, editando el primer mensaje, pulsando en editar, y después en "Usar editor completo", añadiendo la palabra "Solucionado" al titulo, esto ayudara, a mantener una mayor organización en el foro.

 

Un saludo y recuerda que estaremos en el foro, para guiarte por este mundo oscuro y tenebroso.

Link to comment
Share on other sites

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