Añadir atributos en un producto virtual

Añadir atributos en un producto virtual

1vote
1 2 3 4 5
Thank you for vote this article

La verdad que no comprendo como algo tan lógico como poder poner atributos en la ficha de producto junto con un producto virtual no se pueda hacer en Prestashop 1.6. Es algo que debería venir de serie... pero no, bueno vamos a ver como lo podemos conseguir y los pasos necesarios para ello.

Recordar que sirve para 1.6 (tutorial hecho en PS 1.6.0.9), aunque si teneis 1.5 no es muy diferente. Pues vamos a ello:

1- Override en AdminProductsController

Vamos a crear un archivo en  override / controllers / admin y llamarlo adminProductsController.php.
Como preludio si nos fjiamos en el archivo controllers/admin/adminProductsController.php cerca de la línea 3993 vemos que pone:

if ($product->is_virtual)
{
$data->assign('product', $product);
$this->displayWarning($this->l('A virtual product cannot have combinations.'));
}
else
{
[...]

Como vemos debemos quitar ese "if", quedando el siguiente código par poder poner en nuestro AdminProductsController.php:
Descargar Archivo (renombrar a .php)

2- Editar el .tpl del backoffice

Dentro de la misma carpeta en la que hemos puesto anteriormente el override, creamos la siguiente estructura: override/ controllers / admin / templates / products.

Ahora vamos  a la carpeta de nuestro backoffice (le diremos admin) con la siguiente ruta: admin / themes / default / template / controllers / products. Copiamos combinations.tpl desde aquí a la otra carpeta que acabamos de crear.  

Una vez copiada abrimos el archivo y vemos la primera linea que pone:
{if isset($product->id) && !$product->is_virtual}
Lo cambiamos por:
{if isset($product->id)}

3- Modificamos los .js de backoffice

Ahora vamos a retocar admin-products.js del admin. Para ello vamos a /js/admin-products.js y lo editamos.

Por la linea 1098, podemos ver:

if (has_combinations)
{
$('#simple_product').attr('checked', true);
$('#warn_virtual_combinations').show();
}
else
{
[...]

Pues como hemos hecho en el anterior punto quitamos el if y dejamos el contenido del else.

También hemos comentado la línea:
//$('a[id*="Combinations"]').hide();
Descargar ejemplo

Recordar que es un trozo de ejemplo

4- Editamos virtualproduct.tpl de nuestro backoffice

Igual que hemos hecho en combinations.tpl, copiamos combinations.tpl de  admin / themes / default / template / controllers / products a la carpeta override/ controllers / admin / templates / products.

Una vez ahi editamos, sobre la linea 76, ya que como podemos ver tenemos otro if que debemos quitar
Descargar Ejemplo
Recordar que es el trozo de ejemplo

5- Modificación del helper

Vamos a admin/themes/default/template/controller/products/helpers/form/form.tpl y editamos.

Cerca de la linea 112 podemos ver:

else if (product_type == product_type_virtual)
{
$('a[id*="Pack"]').hide();
$('a[id*="Shipping"]').hide();
$('a[id*="Combinations"]').hide();
}

Vemos el ultimo hide, pues lo comentamos:
//$('a[id*="Combinations"]').hide();

Recordar que si hacemos override debemos borrar el fichero: /cache/class_index.php

Y listo!! Podemos ver que ya podemos poner atributos en nuestro producto virtual.

Los pasos son un poco "coñazo" pero bueno también podemos obtar por un módulo de pago que tenemos disponible en prestashop addons. Módulo de pago 

Nada más probarlo y cualquier cosa lo dejais en los comentarios. Saludos

Comments

  • Avatar

    Cristina says :

    2016-09-27 18:54:29

    Buenas tardes Alfonso, tengo problemas porque no encuentro en adminProductsController.php el código if ($product->is_virtual) { $data->assign('product', $product); $this->displayWarning($this->l('A virtual product cannot have combinations.')); } else { [...] - See more at: http://www.mundoprestashop.es/blogs/16-anadir-atributos-en-un-producto-virtual.html#sthash.fO6jZ4Lf.dpuf y así ya no se seguir, ¿me puedes echar una mano? Gracias.

  • Avatar

    Jorgito says :

    2016-09-12 19:40:08

    Hola, estaba complicado pero finalmente pude arreglarlo. Gracias por el tutorial. Pude relacionarlo con la renta casas queretaro y salio perfecto. Lo voy a utilizar muy a menudo. Adios

  • Avatar

    Mario says :

    2015-06-01 15:05:58

    Hola, por favor podrias restaurar el acceso a los archivos de ejemplo, dan error. Muchas gracias

  • Avatar

    Daniel Menchini says :

    2015-05-20 03:08:02

    Hola Alfonso. Muchas gracias por el post. He querido descargar el archivo AdminProductsController pero no me lo permite. ¿Cómo puedo obtener ese código? Saludos.

  • Avatar

    Claper says :

    2014-12-17 13:25:16

    Buenos días y gracias x el aporte. He seguido las instrucciones y he conseguido poder ponerle combinaciones a losproductos descargables, ahora el problema es que solo puedo subir un archivo entonces aunque el cliente escoja cualquier opción siempre le llega el mismo archivo. Podrías ayudarme con este detalle? Muchas gracias

  • Avatar

    Jose says :

    2014-12-09 15:40:27

    Hola, seguí tus instrucciones y ahora mi pagina de backoffice del producto no se ve. Alguna idea? Gracias

  • Avatar

    Sandra says :

    2014-10-07 20:25:22

    Hola Alfonso, Necesito que mi producto virtual (que es un servicio y no tiene ningún archivo asociado) tenga atributos... he seguido tus pasos pero no lo consigo. Cuando le doy a la pestaña de combinaciones, me sale en blanco. Alguna idea? Muchas gracias!

Leave a comment

Enter your name
Fill up your name
Fill up your email, we'll never public your email.
Fill up your website
Enter your comment
Enter captcha code above

¡Lo más vendido!