decohogar Posted November 8, 2016 Share Posted November 8, 2016 (edited) Hola! Estoy intentando hacer unas modificaciones sobre mi plantilla en los controllers. No tengo mucha experiencia con presta ni con smarty. Lo que quiero hacer es agregarle una "etiqueta" de envío gratis a determinados productos según una regla. (productos cuyo precio sea mayor a $3000, de un determinado fabricante y que vaya por X transportista). Tomo, por ejemplo, ProductController.php Dentro del parent::initContent() Utilizo este código: $lavar= (int)Tools::getValue('id_product'); $this->context->smarty->assign(array('lavar'=>$lavar)); y en el product.tpl pasa perfectamente la variable $lavar con el id del producto. (el código de la regla no está desarrollado aún pero ese no es el punto.) Ahora bien, al momento de replicar esto en: CategoryController.php / SearchController.php / Indexcontroller.php para pasar el id en cada producto en las páginas de categoría, resultado de búsqueda e index; no me funciona. No me pasa el id. Alguien podría guiarme? Gracias!! Edited November 9, 2016 by decohogar (see edit history) Link to comment Share on other sites More sharing options...
Knowband Plugins Posted November 25, 2016 Share Posted November 25, 2016 El código (por ejemplo, $ lavar = (int) Tools :: getValue ( 'id_product') que está utilizando para obtener el ID del producto ha obtenido el parámetro id_product de la URL. En ProductController.php funciona porque hay un parámetro id_product (puede estar oculto para URLs amigables) en la página del producto, pero este parámetro no existe en ningún otro controlador. English Translation: The code (i.e. $lavar= (int)Tools::getValue('id_product') which you are using to fetch the product ID fetched the id_product parameter from the URL. On ProductController.php it works because there is an id_product parameter (may be hidden for friendly URLs) on a product page, but this parameter doesn't exist on any other controller. Link to comment Share on other sites More sharing options...
Manuel B Posted November 25, 2016 Share Posted November 25, 2016 A lo mejor es más sencillo que implementes en la plantilla donde se muestran los productos "product-list" un código simplemente añadiendo un: {if $product.price>3000} echo "envio gratis con FedEx"; //por ejemplo {/if} $product.price ya es una variable que está asignada en smarty asi que no tendrías que hacer nada, en cambio para el fabricante puede que tengas que asignar esta variable desde la la clase que llama a esta plantilla. (creo que era uno de los front controller) Si quisieras que saliera al escoger transportista sólo podría salir "gratis" cuando el cliente seleccione el transportista en cuyo caso habría que modificar el módulo del transportista. yo lo haría así al menos Link to comment Share on other sites More sharing options...
Recommended Posts