Edlloro Posted October 24, 2019 Share Posted October 24, 2019 (edited) 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 October 24, 2019 by Edlloro (see edit history) Link to comment Share on other sites More sharing options...
Prestafan33 Posted October 24, 2019 Share Posted October 24, 2019 (edited) 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 October 24, 2019 by Prestafan33 (see edit history) Link to comment Share on other sites More sharing options...
Edlloro Posted October 24, 2019 Author Share Posted October 24, 2019 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 More sharing options...
Edlloro Posted October 24, 2019 Author Share Posted October 24, 2019 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 More sharing options...
gusman126 Posted October 24, 2019 Share Posted October 24, 2019 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); Link to comment Share on other sites More sharing options...
Edlloro Posted October 24, 2019 Author Share Posted October 24, 2019 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 More sharing options...
Edlloro Posted October 24, 2019 Author Share Posted October 24, 2019 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 More sharing options...
gusman126 Posted October 24, 2019 Share Posted October 24, 2019 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 1 Link to comment Share on other sites More sharing options...
Prestafan33 Posted October 24, 2019 Share Posted October 24, 2019 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 More sharing options...
Edlloro Posted October 25, 2019 Author Share Posted October 25, 2019 Hola! Gracias por vuestra ayuda! Pues el Controlador poca cosa tiene la verdad... Os lo adjunto a ver si me podéis echar una mano. De todas formas, ahora intentaré hacer pruebas... Gracias de nuevo! tiendadecolchonesenmadridController.php Link to comment Share on other sites More sharing options...
gusman126 Posted October 25, 2019 Share Posted October 25, 2019 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'); } 1 Link to comment Share on other sites More sharing options...
Edlloro Posted October 25, 2019 Author Share Posted October 25, 2019 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 More sharing options...
Edlloro Posted October 25, 2019 Author Share Posted October 25, 2019 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 More sharing options...
Edlloro Posted October 25, 2019 Author Share Posted October 25, 2019 ¿Alguna sugerencia sobre cómo arreglar este nuevo problema? Link to comment Share on other sites More sharing options...
gusman126 Posted November 13, 2019 Share Posted November 13, 2019 Finalmente creo que ya se soluciono. En vez de usar el codigo Product::getproducts(......) Se ha usado el de $category->getproducts(...) @Edlloro Si esta solucionado pon por aqui la solución y cambia el titulo a solucionado Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now