Jump to content

Añadir check información global del producto en administración


RobinsondMantua

Recommended Posts

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.

post-697602-0-00236800-1378589485_thumb.png

Link to comment
Share on other sites

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

Guest
This topic is now closed to further replies.
×
×
  • Create New...