Jump to content

Lista de productos en php


Edlloro

Recommended Posts

Buenas tardes!

Estoy creando unas páginas tpl a mano (es decir, he creado el fichero php en la raíz, el controller en la carpeta determinada y el fichero tpl dentro de la carpeta de mi tema). En eso no he tenido problemas, porque se ve todo a la perfección.

El problema lo tengo cuando intento mostrar la lista de productos de una categoría, tal y como lo hace el fichero cateroy.tpl. Lo he intentado con la secuencia que usa este fichero:

 {include file="./product-list.tpl" products=$products} 

Pero no me funciona... No me muestra nada... ¿Puede que sea porque no puede acceder a la variable $products? La página no tiene nada en especial, sólo unos párrafos de texto. ¿Cómo podría solucionarlo? ¿Tengo que modificar algún controller para poder tener acceso a esta variable? ¿O se necesita de algún código especial para que funcione? ¿Tengo que incluir alguna cosa?

Espero vuestra ayuda.

Un saludo!

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

No sé exactamente cómo lo estás haciendo, pero para comprobar si estás recibiendo la variable $products o cualquier otra, puedes usar en el TPL:

{$products|var_dump}

No sé si hablamos de la versión 1.6 o de la 1.7 de Prestashop. Si es la 1.7, en los includes mejor poner rutas absolutas desde la carpeta "templates" del tema (por ejemplo file='catalog/listing/product-list.tpl').

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

Perdona, estoy en prestashop 1.6.

No lo estoy haciendo de ninguna manera por ahora... Pensaba que con esa línea de código sería suficiente... Pero no, porque no me muestra nada...

De hecho, he probado con lo que me dices, y me devuelve el valor NULL, señal que no está accediendo bien... No sé cómo lo tengo que hacer para que la reciba...

Me explico un poco más. Será una página suelta, que queremos usar para ayudar a mejorar el SEO de nuestra página. Vamos, que no será invocada por ninguna página, si no que va "por libre"...

La página es esta...

https://www.milcolchones.com/tienda-de-colchones-en-madrid

El contenido son sólo pruebas para ver cómo imprimir variables, ver si el código php funcionaba, etc.

Link to comment
Share on other sites

De hecho, adjunto el archivo... Hasta la línea 48 tengo controlado el contenido... Pero a partir de esta línea, que contiene la secuencia que me has comentado, son partes de código copiadas de otros archivos del prestashop, para ver el resultado que se obtenía por pantalla. Pero, visto lo visto, se ve que no accede bien a ninguna variable, porque no muestra nada.

Si me pudieras ayudar, te lo agradecería.

tienda-de-colchones-en-madrid.tpl

Link to comment
Share on other sites

47 minutes ago, gusman126 said:

Estas asignando las variables en los ficheros php?

$productos = Product::getProducts($id_lang, 0,0, 'name', 'asc', $categoria,$only_active = true);

$this->context->smarty->assign('products', $productos);

 

Tengo que añadir alguna cosa? He añadido tu primera línea de código tal que así:

{$productos = Product::getProducts($id_lang, 0,0, 'name', 'asc', $category_id, $only_active = true);}

{$this->context->smarty->assign('products', $productos);}

 

Definiendo la variable $id_lang antes, y dándole el valor 1.... La variable $category_id también la he creado y le he asignado el valor 16.

Con esto, la página me deja de funcionar...

Adjunto de nuevo el archivo...

 

tienda-de-colchones-en-madrid.tpl

Link to comment
Share on other sites

Bueno, puede que sepa dónde esta el error... He buscado la definición de la función getProducts y es la siguiente:

public function getProducts($id_lang, $p, $n, $order_by = null, $order_way = null, $get_total = false, $active = true, $random = false, $random_number_products = 1, $check_access = true, Context $context = null)

Me imagino que me deja de funcionar porque me faltan parámetros.

Link to comment
Share on other sites

hace 11 minutos, Edlloro dijo:

Tengo que añadir alguna cosa? He añadido tu primera línea de código tal que así:

{$productos = Product::getProducts($id_lang, 0,0, 'name', 'asc', $category_id, $only_active = true);}

{$this->context->smarty->assign('products', $productos);}

 

Definiendo la variable $id_lang antes, y dándole el valor 1.... La variable $category_id también la he creado y le he asignado el valor 16.

Con esto, la página me deja de funcionar...

Adjunto de nuevo el archivo...

 

tienda-de-colchones-en-madrid.tpl 1.56 kB · 0 downloads

No debes añadir el codigo que te he dicho en el fichero tpl

Dices que has añadido un controller, no se que has hecho exactamente, pero es el controller o el fichero PHP el que debe enviar los datos al fichero tpl

Que yo sepa no puedes leer los productos directamente en el fichero tpl, debe ser antes un controller quien lo haga

 

  • Like 1
Link to comment
Share on other sites

17 minutes ago, gusman126 said:

Dices que has añadido un controller, no se que has hecho exactamente, pero es el controller o el fichero PHP el que debe enviar los datos al fichero tpl

Que yo sepa no puedes leer los productos directamente en el fichero tpl, debe ser antes un controller quien lo haga

Sí, a eso me refería yo también con lo de que no sabía exactamente cómo lo estaba haciendo. Aquí el kid de la cuestión está en el controlador, no en la vista, que sólo va a mostrar de una u otra forma lo que les pases desde el controlador.

El código que te ha comentado gusman126 va en el controlador. Tal vez lo que deberías adjuntar aquí para que veamos cómo está creado es el controlador, como digo la vista no tiene mucho misterio.

Link to comment
Share on other sites

Prueba a añadir 

public function initContent(){
	parent::initContent();
	$id_lang = Configuration::get('PS_LANG_DEFAULT');
	$productos = Product::getProducts($id_lang, 0,0, 'name', 'asc', 16,$only_active = true);
	$this->context->smarty->assign('products', $productos);
	$this->setTemplate(_PS_THEME_DIR_.'tienda-de-colchones-en-madrid.tpl');
}

 

  • Like 1
Link to comment
Share on other sites

Ahora sí! Ya va mostrando cosillas... Había añadido el código en el controller, pero se me había pasado por alto definir la variable del idioma, y por eso no me funcionaba...

Ahora ya muestra algo de los productos... Faltará coger bien las imágenes (porque no las muestra) y mirar qué pasa con algunos botones "Ver" que también han desaparecido. Así como su funcionalidad, porque no enlazan con los productos. 

https://www.milcolchones.com/tienda-de-colchones-en-madrid

Seguiré investigando!!

Gracias!

Link to comment
Share on other sites

Ya he visto porque no muestra la imagen... No monta bien la url, porque no coge el id del producto... En lugar de coger:

/3034-home_default/colchon-valencia.jpg

 (con www.milcolchones.com delante, pero si lo copio tal cual enlaza directamente con la imagen y no me deja escribir la ur) Me está cogiendo

/-home_default/colchon-valencia.jpg

lógicamente no encuentra la imagen, porque la ruta no es válida...

 

Link to comment
Share on other sites

  • 3 weeks later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...