RobinsondMantua Posted September 7, 2013 Share Posted September 7, 2013 Muy buenas!! Estoy usando la versión 1.5.4.1. Estoy intentando añadir un campo nuevo (sample) para marcar el envío o no de una muestra de un producto. Para ello, he añadido el campo en la tabla ps_products (sample) y he puesto un campo de texto de tipo checkbox en template\controllers\products\informations.tpl (ver imagen 1) al elegir un producto del catálogo en el bloque de administración. <li> <input type="checkbox" name="sample" id="sample" value="1" {if $product->sample}checked="checked"{/if} /> <label for="sample" class="t">{l s='Muestra'}</label> </li> Además, he añadido en controllers\admin\AdminProductsController.php (aproximadamente en la línea 322) justo debajo de la línea $object->online_only = (int)Tools::getValue('online_only'); la siguiente línea: $object->sample = (int)Tools::getValue('sample'); Y en el método initFormInformations del mismo controlador he modificado la siguiente línea : $product_props = array(); // global informations array_push($product_props, 'reference', 'ean13', 'upc', 'available_for_order', 'show_price', 'online_only', 'id_manufacturer' ); por esta : $product_props = array(); // global informations array_push($product_props, 'reference', 'ean13', 'upc', 'available_for_order', 'show_price', 'online_only','sample', 'id_manufacturer' ); El problema está en que al añadir un producto nuevo o al actualizarlo no se graba la información en la BB.DD. Para agregar el campo, me he ido guiando por los otros check que aparecen en el apartado "Opciones:" de la "Información global sobre el producto", pero está claro que algo se me ha pasado. ¿Podéis ayudarme? Gracias. Link to comment Share on other sites More sharing options...
RobinsondMantua Posted September 8, 2013 Author Share Posted September 8, 2013 ¿Ninguna idea? Link to comment Share on other sites More sharing options...
Enrique Gómez Posted September 8, 2013 Share Posted September 8, 2013 Mirate este artíclo http://nemops.com/extending-prestashop-objects/. Hay que definir el nuevo campo en la clase Product, utiliza exactamente el mismo nombre que en base de datos. class Product extends ProductCore { /** @var tag_weight for order in related products */ public $pele_related_tag_weight; public $pele_related_random_order; public $pele_related_limit_number_products; public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null) { self::$definition['fields']['pele_related_tag_weight'] = array('type' => self::TYPE_STRING,'validate' => 'isTagWeight'); self::$definition['fields']['pele_related_random_order'] = array('type' => self::TYPE_BOOL, 'validate' => 'isBool'); self::$definition['fields']['pele_related_limit_number_products'] = array('type' => self::TYPE_STRING, 'default' => '','validate' => 'isUnsignedInt'); parent::__construct($id_product,$full,$id_lang,$id_shop,$context); } } el tuyo sera de tipo boolean -- A parte de la plantilla no hace falta tocar nada mas (el controlador déjalo como esta), lo hace automáticamente por el nombre del campo Link to comment Share on other sites More sharing options...
RobinsondMantua Posted September 9, 2013 Author Share Posted September 9, 2013 Gracias por tu respuesta Enrique. Voy a probar lo que dice el artículo. En realidad, el problema lo tengo en la parte de administración, en la que no me actualiza ni me muestra el valor del campo nuevo. Saludos. Link to comment Share on other sites More sharing options...
RobinsondMantua Posted September 9, 2013 Author Share Posted September 9, 2013 Funciona!!! Gracias a tu aclaración y al enlace que me has enviado he conseguido que funcione correctamente. Saludos. Link to comment Share on other sites More sharing options...
Recommended Posts