Jump to content

Como mostrar información de producto diferente según categoría


adcrea

Recommended Posts

Buenos días. Estoy creando una tienda en prestashop, la tercera que voy a hacer, y me gustaría saber si lo que me gustaría hacer, es posible realizarlo.

 

Es posible tener varias categorías y que los productos de cada una muestren una información de producto diferente a través de diferentes archivos product.tpl?

 

En la tienda que estoy haciendo he modificado el archivo product.tpl para que muestre la ianformación que considero mejor y ahora me gustaría crear un archivo product1.tpl y que una de las categorías mostrase los artículos de mi tienda con este archivo producto1.tpl, y poder hacerlo con product2.tpl, product3.tpl y así sucesivamente.

 

Espero haberme explicado bien.

 

Alguien podría decirme si esto es posible y cómo podría hacerlo?

 

Muchas gracias!

Link to comment
Share on other sites

Tal y como lo veo, si los cambios en la plantilla son sencillos en la misma plantilla product.tpl puedes poner los if (condicionales) para si el producto es de una categoria se muestre tal cosa y si es de otra pues de otra forma.

 

Si el cambio es grande, como dices, puedes tener varias plantillas y el condicional se tendría que hacer en el controlador del producto. Esto es en ProductController.php al final de initContent() donde se le indica la plantilla $this->setTemplate(_PS_THEME_DIR_.'product.tpl');

 

La condición es para el identificador de la categoría por defecto del producto:

 

if($this->product->id_category_default==2){

$this->setTemplate(_PS_THEME_DIR_.'product.tpl');

}else if($this->product->id_category_default==5){

$this->setTemplate(_PS_THEME_DIR_.'product1.tpl');

}...etc

 

 

A ver si te sirve.

 

--

 

Ten en cuenta que si haces los cambios directamente en el fichero ProductController.php perderás los cambios al actualizar. Siempre puedes utilizar el sistema de override de Prestashop

Link to comment
Share on other sites

Gracias Enrique. Ya lo estoy probando, pero en el productcontroller.php no he sido capaz de encontrar lo que me indicas. La única referencia a la plantilla product.tpl me aparece así:

 

public function displayContent()

{

parent::displayContent();

self::$smarty->display(_PS_THEME_DIR_.'product.tpl');

}

 

Es aquí donde tengo que añadir la condición? Cómo podría hacerlo?

 

Gracias!

Link to comment
Share on other sites

Tienes PS 1.4 no? Creo que si. donde self::$smarty->display(_PS_THEME_DIR_.'product.tpl'); poner el if

 

if($this->product->id_category_default==2){

self::$smarty->display(_PS_THEME_DIR_.'product.tpl');

}else if($this->product->id_category_default==5){

self::$smarty->display(_PS_THEME_DIR_.'product1.tpl');

}...etc

Link to comment
Share on other sites

Gracias Enrique!

 

Sí, la versión es 1.4.9.

 

Lo he cambiado, y casi funciona. Lo he hecho así, tal y como me comentabas, modificando el id de categoría:

 

if($this->product->id_category_default==15){

self::$smarty->display(_PS_THEME_DIR_.'product1.tpl');

}else if($this->product->id_category_default==5){

self::$smarty->display(_PS_THEME_DIR_.'product.tpl');

}

 

Al acceder a la categoría 15 y entrar a uno de los productos, sí se carga el product1.tpl, pero al acceder a la categoría 5 y entrar a algún producto no consigo que cargue product.tpl. Tampoco se carga el otro product1.tpl y simplemente aparece el producto como en un listado de categoría pero él solo.

Link to comment
Share on other sites

Gracias Enrique!

 

Sí, la versión es 1.4.9.

 

Lo he cambiado, y casi funciona. Lo he hecho así, tal y como me comentabas, modificando el id de categoría:

 

if($this->product->id_category_default==15){

self::$smarty->display(_PS_THEME_DIR_.'product1.tpl');

}else if($this->product->id_category_default==5){

self::$smarty->display(_PS_THEME_DIR_.'product.tpl');

}

 

Al acceder a la categoría 15 y entrar a uno de los productos, sí se carga el product1.tpl, pero al acceder a la categoría 5 y entrar a algún producto no consigo que cargue product.tpl. Tampoco se carga el otro product1.tpl y simplemente aparece el producto como en un listado de categoría pero él solo.

 

Date cuenta que con esto:

 

$this->product->id_category_default

 

obtienes la categoría por defecto del producto, no la categoría de procedencia.

 

Es decir un producto, solo tiene una categoria por defecto, pero puede estar vinculado a muchas otras categorias, que actuan como secundarias en ese producto.

 

Estoy en el movil y no recuerdo la instrucción exacta que la tengo apuntada en mi pc.

 

Como supongo que Enrique se pasara por el tema, lo dejo en sus manos, sino se puede pasar, pues ya te lo comento yo cuando vuelva. (Sorry)

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

Sigo haciendo pruebas, pero me pasa algo muy extraño. Estoy probando diferentes combinaciones de id de categorías con los dos archivos de product.tpl. Haga la combinación que haga, carga bien el archivo de la categoría 15, sea el que sea (product.tpl o product1.tpl) y haga la combinación que haga con el resto de categorías no aparece nada en el producto. he probado la categoría 15 en la primera parte de la condición, con product.tpl y con product1.tpl, y he probado con el id de categoría 15 en el else if, también con product.tpl y con product.tpl. En todos los casos carga bien la plantilla correspondiente.

 

Sin embargo, el resto de categorías no cargan nada. Vacío.

 

La única diferencia es que todas las categorías estaban ya creadas, y esta la acabo de crear. Por lo demás, no sé que puede estar pasando...

Link to comment
Share on other sites

Date cuenta que con esto:

 

$this->product->id_category_default

 

obtienes la categoría por defecto del producto, no la categoría de procedencia.

 

Es decir un producto, solo tiene una categoria por defecto, pero puede estar vinculado a muchas otras categorias, que actuan como secundarias en ese producto.

 

Estoy en el movil y no recuerdo la instrucción exacta que la tengo apuntada en mi pc.

 

Como supongo que Enrique se pasara por el tema, lo dejo en sus manos, sino se puede pasar, pues ya te lo comento yo cuando vuelva. (Sorry)

 

Gracias Sergio. Sí, los algunos productos están en más de una categoría. No estaba teniendo en cuenta esto que me comentas. Voy a echarle un vistazo para ver si pudiera tener algo que ver.

Link to comment
Share on other sites

Solucionado! ya he encontrado el motivo por el que no me cargaba el resto de categorías. Gracias Sergio! Al comentarme lo de la categoría por defecto, he entrado en el BO y he comprobado que todos los productos están en su categoría, pero creé una categoría con todos los productos y esta categoría la tenía desactivada. Y al crear productos en el BO, se me han creado todos con la categoría desactivada por defecto. Ahora ya funciona perfectamente!!! Cuando la tenga activada, online y funcionando vendré a poner el enlace para que veáis el resultado.

Link to comment
Share on other sites

Ok, si, como dice Sergio cada producto tiene una categoría por defecto y sólo una y viene bien para distinguirlos. Si quisieras distinguir por la categoría de llegada al producto también se puede, pero si ya te va bien con la por defecto mejor.

 

Si tienes cualquier problema ya sabes.

 

Un saludos

  • Like 1
Link to comment
Share on other sites

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