Jump to content

Mostrar campo personalizado en carrito de la compra


zekinash

Recommended Posts

Tengo un campo personalizado en el artículo, campo que he añadido mediante la utilización de overrides. Todo funciona correctamente, se muestra en el backoffice para dar de alta/modificar un artículo, lo guarda correctamente en la base de datos e incluso lo muestro en la vista de la ficha del artículo bajo el nombre del mismo.

 

En product.tpl he añadido esto:

<h5>Ref. Proveedor: {if $product->ref_prov}{$product->ref_prov}{/if}</h5>

 

Y se visualiza sin problemas

post-637612-0-35274900-1444296626_thumb.png

 

El caso es que ahora quiero hacer lo mismo para mostrarlo en el resumen del Pedido, pero me encuentro que no aparece ya que la carga de los datos se hace de forma diferente. Intento acceder a $product->ref_prov y no carga nada desde la plantilla shopping-cart-product-line.tpl e incluso fijándome como muestra otros campos $product.ref_prov pero no hay forma. El código sería esta:

 

{if $product.description_short}<p>{$product.description_short|strip_tags:'UTF-8'|truncate:360:'...'}</p>{/if}

<small class="cart_ref">{l s='Ref. Prov'}{$smarty.capture.default}{$product.ref_prov|escape:'html':'UTF-8'}</small>

 

En este caso no se accede a la totalidad de los datos del producto, imagino que debe haber una consulta previa de los campos extraídos de dicho artículo, pero no sé donde poder personalizar dicha consulta para cargar también éste campo.

 

A ver si alguien me puede echar un mano.

 

 

Link to comment
Share on other sites

He visto que en la tabla de productos hay un campo que se llama supplier_reference Justo lo que yo necesito, pero que no se le da uso en ninguno de los formularios de PrestaShop, no al menos hasta dónde he podido ver. Así que he quitado el Override de la clase Product.php ya que no me hace falta añadir ningún campo personalizado. He modificado el override de Informations.tpl para que muestre en el formulario de altas de artículos dicho campo, y lo muestro también de forma correcta en product.tpl

 

Problema, pues que en el carrito de la compra no puedo mostrarlo. Utilizo cualquier campo de la tabla Product y lo muestra, pero al intentar apuntar al campo supplier_reference no saca nada. ¿Alguién me podría echar una mano?

 

Yo voy a seguir investigando a ver por qué ese campo no es accesible desde el carrito de la compra.

Link to comment
Share on other sites

Para que te aparezca en el resumen de compra tienes que añadirlo en la funcion getproducts en

classes\Cart.php

para acceder a la referencia del proveedor en el select añade 

ps.`product_supplier_reference` AS supplier_reference

luego en el .tpl añade

$product.supplier_reference
Edited by ventura (see edit history)
  • Like 1
Link to comment
Share on other sites

Muchísimas gracias por la respuesta, me estaba volviendo loco entre manuales, libros, foros... No sabía de dónde se alimentaba la vista y mira que estuve repasando la clase en cuestión. Ahora lo tengo mucho más claro, incluso me servirá para un futuro.

 

Sin embargo me he encontrado con esto:

// Build SELECT
        $sql->select('cp.`id_product_attribute`, cp.`id_product`, cp.`quantity` AS cart_quantity, cp.id_shop, pl.`name`, p.`is_virtual`,
                        pl.`description_short`, pl.`available_now`, pl.`available_later`, product_shop.`id_category_default`, p.`id_supplier`,
                        p.`id_manufacturer`, product_shop.`on_sale`, product_shop.`ecotax`, product_shop.`additional_shipping_cost`,
                        product_shop.`available_for_order`, product_shop.`price`, product_shop.`active`, product_shop.`unity`, product_shop.`unit_price_ratio`,
                        stock.`quantity` AS quantity_available, p.`width`, p.`height`, p.`depth`, stock.`out_of_stock`, p.`weight`,
                        p.`date_add`, p.`date_upd`, IFNULL(stock.quantity, 0) as quantity, pl.`link_rewrite`, cl.`link_rewrite` AS category,
                        CONCAT(LPAD(cp.`id_product`, 10, 0), LPAD(IFNULL(cp.`id_product_attribute`, 0), 10, 0), IFNULL(cp.`id_address_delivery`, 0)) AS unique_id, cp.id_address_delivery,
                        product_shop.advanced_stock_management, ps.`product_supplier_reference` AS supplier_reference, IFNULL(sp.`reduction_type`, 0) AS reduction_type');

Como se puede apreciar en la última línea del SELECT ya estaba incluído ps.`product_supplier_reference` tan sólo que estaba así:

ps.`product_supplier_reference` supplier_reference

En vez de:

ps.`product_supplier_reference` AS supplier_reference

Desde la vista "shopping-cart-product-line.tpl" intento acceder a este campo de la siguiente manera:

<small class="cart_ref">
      {l s='Ref. Prov'}{$smarty.capture.default}
      {$product.supplier_reference|escape:'html':'UTF-8'}
</small>

Es decir, empleo $product.supplier_reference para mostrar dicho campo pero nada, sigue vacío. ¿Qué estoy haciendo mal?

 

 

Por otra parte, ¿sería posible hacerlo mediante override para evitar tocar los archivos del core de PrestaShop?

 

-override

-classes

-Cart.php

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

Solu cionado. Veamos, el campo que he de añadir es el siguiente:

p.`supplier_reference` AS supplier_reference2

De ta tabla p = products y no de la tabla ps = product supplier

 

Y en la vista "shopping-cart-product-line.tpl" muestro el campo así:

<small class="cart_ref">
      {l s='Ref. Prov'}{$smarty.capture.default}
      {$product.supplier_reference2|escape:'html':'UTF-8'}
</small>

¡OJO! Ya que como alias hay que darlo un nombre diferente al campo, ya que sino no funcionará correctamente, en mi caso le he dado supplier_reference2 ya que ya existe un campo con el mismo nombre.

 

Y también me contesto a lo de hacerlo con override. Así es. He creado la estructura que antes mencionaba y he incluído lo que necesitaba cambiar de la clase Cart.php para conseguir este campo, que como apunte personal me ha sorprendido que no estuviera ya contemplado en la SELECT ya que pienso puede ser un campo de valor para el cliente, más incluso que la referencia propia de la tienda.

 

Muchísimas gracias por la ayuda!!!

Edited by zekinash (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...