Jump to content

Imprimir / Mostrar campos de el objeto product en smarty


apositivo

Recommended Posts

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 by apositivo (see edit history)
Link to comment
Share on other sites

Pruebe asi:

 

$productObj = new Product(1, null, null);
$this->context->smarty->assign('name' => $productObj->name);

en el tpl:
{$name}

 

o este otro metodo, :mellow:  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 by tamu secreto (see edit history)
Link to comment
Share on other sites

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

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. Por
ejemplo obtener la imagen de determinada combinacion, el precio de determinado atributo, etc...

Por ello sigue en pie mi oferta envianda en privado.
 
SUERTE!!!
 

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

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 by apositivo (see edit history)
Link to comment
Share on other sites

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...