adcrea Posted July 19, 2013 Share Posted July 19, 2013 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 More sharing options...
Enrique Gómez Posted July 19, 2013 Share Posted July 19, 2013 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 More sharing options...
adcrea Posted July 19, 2013 Author Share Posted July 19, 2013 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 More sharing options...
Enrique Gómez Posted July 19, 2013 Share Posted July 19, 2013 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 More sharing options...
adcrea Posted July 19, 2013 Author Share Posted July 19, 2013 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 More sharing options...
Sergio Ruiz Posted July 19, 2013 Share Posted July 19, 2013 (edited) 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 July 19, 2013 by Sergio Ruiz (see edit history) Link to comment Share on other sites More sharing options...
adcrea Posted July 19, 2013 Author Share Posted July 19, 2013 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 More sharing options...
adcrea Posted July 19, 2013 Author Share Posted July 19, 2013 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 More sharing options...
adcrea Posted July 19, 2013 Author Share Posted July 19, 2013 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 More sharing options...
Enrique Gómez Posted July 19, 2013 Share Posted July 19, 2013 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 1 Link to comment Share on other sites More sharing options...
Recommended Posts