apositivo Posted August 21, 2015 Share Posted August 21, 2015 (edited) Buenas. saludos comunidad ! queremos imprimir todos los campos del objeto Product que realizamos en la siguiente consulta : * Version de prestashop : 1.6.1.0 (con los productos que trae por defecto) tenemos los siguientes archivos : en el php que realizamos el query : $productObj = new Product(1); $this->context->smarty->assign('products', $productObj); en el .TPL tratamos de imprimir toda la información del producto, empezando por el nombre con el siguiente contenido en el archivo: {foreach from=$products item=product name=products} {$product.name} {/foreach} y el resultado es : 1 1 5 1 0 1 1 0 4 0 0 0 0 d 0 0 0 0 0 0 0 0 0 1 4 0 1 0 n 1 1 b 2 2 1 0 2 0 0 0 1 3 hemos tomado como muestra product.tpl, product-list.tpl , blocklayered.tpl, pero nos muestra el mismo error. aqui la pregunta, como imprimir todas esas variables en smarty, considerando que en los otros modulos si funciona , no estamos considerando algun factor en especial ? Edited August 21, 2015 by apositivo (see edit history) Link to comment Share on other sites More sharing options...
tamu secreto Posted August 22, 2015 Share Posted August 22, 2015 (edited) Pruebe asi: $productObj = new Product(1, null, null);$this->context->smarty->assign('name' => $productObj->name);en el tpl:{$name} o este otro metodo, no estoy seguro pero si mal no recuerdo el objeto product en el controller es "protec" y no public static, ahora en la clase product es public y hay algunas funciones para obtener informaciòn sobre un producto. Por ejemplo para imprimir el nombre: $this->context->smarty->assign('nombre_producto', $product::getProductName(1, null, null)); el valor "1" es el id de producto, null (atributo), null idioma, estos pueden vacios o no eso lo decide usted. en el tpl {$nombre_producto} para los precios seria algo asi: Product::getPriceStatic((int)$id_product, true, null, _PS_PRICE_DISPLAY_PRECISION_); etc, etc... otra forma seria hacerse una funcion que devuelva un Arreglo Bidimensional. saludos Edited August 22, 2015 by tamu secreto (see edit history) Link to comment Share on other sites More sharing options...
apositivo Posted August 22, 2015 Author Share Posted August 22, 2015 saludos tamu secreto gracias por contestar, la idea es traerme de un query por ejemplo los primeros 4 NEW PRODUCTS (nombre, precio, foto, imagen, link), luego en otra peticion 4 mas. y asi sucesivamente esto solo me asignaria una variable $this->context->smarty->assign('nombre_producto', $product::getProductName(1, null, null)); necesitaria todo el objeto preferiblemente. si coloco este codigo si me funciona: $productObj =Product::getNewProducts((int) $this->context->language->id, 0, (int)Configuration::get('NEW_PRODUCTS_NBR')); pero la idea es saber como funciona o si puedo constuir uno propio con las estructuras predefinidas de prestashop. pd: con respecto a la pregunta de la mascosta de prestashop link oficial: http://www.prestashop.com/preston/es/ Link to comment Share on other sites More sharing options...
apositivo Posted August 22, 2015 Author Share Posted August 22, 2015 mira una explicación mas detallada en mi post en ingles (disculpaa mi mal ingles hehehe): https://www.prestashop.com/forums/topic/462682-load-tpl-content-from-ajax-request/ Link to comment Share on other sites More sharing options...
tamu secreto Posted August 22, 2015 Share Posted August 22, 2015 UPs! ahora entiendo, mira en realidad no recuerdo mucho prestashop, pero en su momento yo he pasado por un dilema similar ahi le he enviado un privado. saludos Link to comment Share on other sites More sharing options...
tamu secreto Posted August 22, 2015 Share Posted August 22, 2015 (edited) Bien esta es mi ultima ayuda en este hilo, estuve mirando nuevamente Prestashop para refrescarme un poco. Vamos con su ejemplo: $productObj = new Product(1); $this->context->smarty->assign('products', $productObj); para visualizar los indices del arreglo use print_r directametne en samarty asi: {$products|print_r} observe todo el despliegue del arreglo. voy darle un ejemplo mas preciso de como usarlo: en su php dentro de function : $product = new Product(AQUI_ID-PRODUCTO, false, AQUI_ID-IDIOMA); /* EJEMPLOS $product = new Product(2, false, 1); RECIBIENDO VALORES $product = new Product(Tools::getValue('id_product'), false, Tools::getValue('id_lang')); */ /* valores de la imagen */ $imagen_defecto = Product::getCover((int)$product->id); /* para obtener link por defecto y ruta de imagen */ $mylink = new Link(); $this->context->smarty->assign(array( 'product' => $product, 'img_mostrar' => (int)$product->id.'-'.(int)$imagen_defecto['id_image'], 'mylink' => $mylink, )); return $this->display(__FILE__, 'suplanilla.tpl'); recuerde que en su tpl puede imprimir todo los indices del array usando print_r. En su tpl: Nombre producto: {$product->name} <br /> Descripcion: {$product->description_short} <br /> cantidad: {$product->getQuantity($product->id, null, null)} <br /> {* precio por defecto seis decimales y como separador usa el punto, para operaciones matematicas *} Precio: {$product->getPriceStatic($product->id)} <br /> {* OTROS METODOS *} {assign var='convertime' value={$product->getPriceStatic($product->id)[spam-filter] {assign var='precioFormato' value={$product->convertAndFormatPrice($convertime, null, null)[spam-filter] precio moneda y formato: {$precioFormato} <br /> {*otra forma*} precio directo: {$product->convertAndFormatPrice($convertime, null, null)} <br /> {* o *} Precio final: {$product->convertAndFormatPrice({$product->getPriceStatic($product->id)}, null, null)} <br /> {*imagen producto *} <img src="{$mylink->getImageLink($product->link_rewrite, $img_mostrar, 'small_default')|escape:'html'}" alt="" title="" /> {* si no funciona pruebe asi *} <img src="http://{$mylink->getImageLink($product->link_rewrite, $img_mostrar, 'small_default')|escape:'html'}" alt="" title="" /> <br /> La informacion a obetener puede hacerse mas compleja y por ende tambien la metodología para solicitarlas. Porejemplo obtener la imagen de determinada combinacion, el precio de determinado atributo, etc... Por ello sigue en pie mi oferta envianda en privado. SUERTE!!! Edited August 23, 2015 by tamu secreto (see edit history) Link to comment Share on other sites More sharing options...
apositivo Posted August 24, 2015 Author Share Posted August 24, 2015 Gracias tamu secreto excelente explicacion! pero pense que podia reutilizar algun metodo de prestashop para traer y mostrrar toda la informacion Link to comment Share on other sites More sharing options...
tamu secreto Posted August 24, 2015 Share Posted August 24, 2015 usted se refiere a hacer algo asi: san-producto-muestrate! -> aca producto pues lo ignoro, de todos modos yo no se mucho de prestashop. Seguramente mirando las classes y demas archivos encuentre algun metodo mas abreviado. saludos Link to comment Share on other sites More sharing options...
apositivo Posted August 24, 2015 Author Share Posted August 24, 2015 (edited) hola tamu secreto lo que buscamos es traer productos por demanda, tal como el modulo blocklayered ( http://fo.demo.prestashop.com/en/3-women ). en ese modulo se traen N cantidad de productos VIA AJAX, bueno en el ejemplo no se mira el efecto, ya que solo existen 7 productos, pero si tienes prestashop instalado configura que se muestren 2 o 3 productos y podras visualizarlo. ejemplo de contenido que se carga a peticion: http://addons.prestashop.com/demo/FO9373.html Edited August 24, 2015 by apositivo (see edit history) 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