Pauline Ghiazza Posted January 2, 2013 Share Posted January 2, 2013 (edited) Bonjour à tous, Je cherche, depuis un bout de temps maintenant, à ajouter un textarea dans le back-office de mes produits, sur Prestashop 1.5.3. J'avais donc assidûment suivi ce topic : http://www.prestasho...minproductsphp/ mais la manip de Zulian et Paco112 n'a jamais fonctionné pour ma part. Ce topic étant deserté, j'en crée donc un nouveau. Je souhaite donc rajouter un textarea 'pointsforts', et voici le code que j'ai modifié pour arriver à mes fins : Informations.tpl <tr> <td class="col-left"> {include file="controllers/products/multishop/checkbox.tpl" field="pointsforts" type="tinymce" multilang="true"} <label>{l s='Points forts :'}<br /></label> <p class="product_description">({l s='Points forts du produit'})</p> </td> <td style="padding-bottom:5px;"> {include file="controllers/products/textarea_lang.tpl" languages=$languages input_name='pointsforts' input_value=$product->pointsforts} <p class="clear"></p> </td> </tr> Classe Product.php class Product extends ProductCore { public $pointsforts; public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null) { Product::$definition['fields']['pointsforts'] = array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isString'); parent::__construct($id_product, $full, $id_lang, $id_shop, $context); } } AdminProductsController.php Fonction copyFromPost : $object->available_for_order = (int)Tools::getValue('available_for_order'); $object->pointsforts = Tools::getValue('pointsforts'); $object->show_price = $object->available_for_order ? 1 : (int)Tools::getValue('show_price'); Fonction renderForm : $default_product = new Product(); $fields_to_copy = array('minimal_quantity', 'price', 'additional_shipping_cost', 'wholesale_price', 'on_sale', 'online_only', 'unity', 'unit_price_ratio', 'ecotax', 'active', 'available_for_order', 'pointsforts', 'available_date', 'show_price', 'indexed', 'id_tax_rules_group', 'advanced_stock_management'); foreach ($fields_to_copy as $field) $product->$field = $default_product->$field; Fonction initFormInformations : $product_props = array(); // global informations array_push($product_props, 'reference', 'ean13', 'upc', 'available_for_order', 'pointsforts', 'show_price', 'online_only', 'id_manufacturer' ); Lors de l'enregistrement, j'ai l'erreur suivante : Une erreur s'est produite pendant la mise à jour de l'objet. product (). Ainsi, même si j'écris en dur dans la base du texte dans ce champ, si je repasse par le BO et que j'enregistre, il est directement effacé. Je précise que j'ai créé mon champ 'pointsforts' dans la table 'PREFIX_product_lang', ce qui est probablement une cause à mon problème. J'ai cependant essayé de créer ce champ dans 'PREFIX_product' mais je n'ai constaté aucune amélioration. Quelqu'un aurait-il des pistes (ou encore mieux, des réponses), pour m'aider à faire fonctionner ceci ? Merci d'avance, Pauline. Edited January 2, 2013 by Pauloscorps (see edit history) Link to comment Share on other sites More sharing options...
Paco112 Posted January 3, 2013 Share Posted January 3, 2013 (edited) Si le champs ajouté est de type " lang = true " alors le tpl doit etre construit de manière à avoir 1 champs par langue : <tr> <td class="col-left"> {include file="controllers/products/multishop/checkbox.tpl" field="pointsforts" type="tinymce" multilang="true"} <label>{l s='Points forts :'}<br /></label> <p class="product_description">({l s='Points forts du produit'})</p> </td> <td style="padding-bottom:5px;" class="translatable"> {foreach from=$languages item=language} <div class="lang_{$language.id_lang}" style="{if !$language.is_default}display: none;{/if} float: left;"> <input size="100" type="text" id="pointsforts_{$language.id_lang}" name="pointsforts_{$language.id_lang}" value="{$product->pointsforts[$language.id_lang]|htmlentitiesUTF8}" style="width: 538px;" /> </div> {/foreach} <p class="clear"></p> </td> </tr> De plus il n'y a aucune modification à apporter au fichier : AdminProductsController.php Edited January 3, 2013 by Paco112 (see edit history) Link to comment Share on other sites More sharing options...
Mike West Posted January 9, 2013 Share Posted January 9, 2013 J'ai cette erreur Une erreur s'est produite pendant la mise à jour de l'objet. product (). pourtant je n'ai rien modifié Link to comment Share on other sites More sharing options...
webdigit Posted January 15, 2013 Share Posted January 15, 2013 (edited) J'ai cette erreur Une erreur s'est produite pendant la mise à jour de l'objet. product (). pourtant je n'ai rien modifié Pareil... je travaille sur le sujet ce jour, car ça me prend la tête. Pour ma part j'essaie d'ajouter une checkbox "store_only" sous la checkbox "online_only". Je reproduit donc partout le comportement de "online_only", mais ça clop pas... Remarque/question : - lors de la sauvegarde d'un produit, on passe 3x dans copyFromPost. J'ai déjà eu ce genre de souci avec un module newsletter. Ce module était activé en colonne de droite et désactivé en footer. Malgré le fait qu'il ne soit pas en front, la soumission du form se faisait 2x ! Donc bug, car la première soumission était ok, et la suivante me renvoyait... déjà inscrit... Même souci ici ? SOLUTION ici Edited January 15, 2013 by webdigit (see edit history) Link to comment Share on other sites More sharing options...
ShowYou Posted February 6, 2013 Share Posted February 6, 2013 Bonjour, J'ai lu et tester les tutos mais j'avoue que je sèche !! L'enregistrement ne se fait pas pour un champ descriptionsupp. Je ai crée le champ dans la table ps_product_lang après description_short. J'ai mis les informations dans informations.tpl et cela s'affiche correctement. J'ai mis ceci dans products.php en override public static $definition = array ... /* Lang fields */ ... 'descriptionsupp' => array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isString'), public $var_descriptionsupp public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null) { Product::$definition['fields']['var_descriptionsupp'] = array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isString'); parent::__construct($id_product, $full, $id_lang, $id_shop, $context); } et pour AdminProductsController.php je n'arrive pas à faire l'insertion correcte des données. Link to comment Share on other sites More sharing options...
ShowYou Posted February 19, 2013 Share Posted February 19, 2013 Personne pour m'éclairer ??? Link to comment Share on other sites More sharing options...
webdigit Posted February 19, 2013 Share Posted February 19, 2013 Hey pour product.php, c'est soit l'une ou l'autre méthode, pas les deux. Et tu parles une fois de descriptionsupp puis de var_descriptionsupp, y'a un souci là J'ai essayé de rassembler les idées ici Link to comment Share on other sites More sharing options...
ShowYou Posted February 19, 2013 Share Posted February 19, 2013 Bonjour Webdigit !!! Une fois de plus, avoir du recul permet d'avancer. J'ai supprimé la 2ème méthode. Et je n'ai rien modifié dans AdminProductController. J'ai bien le champ descriptionsupp qui s'affiche dans la page de mon produit et le texte ajouté s'enregistre bien dans la table et le champ adéquat. Merci de m'avoir mis le doigt sur l'erreur. Link to comment Share on other sites More sharing options...
webdigit Posted February 19, 2013 Share Posted February 19, 2013 Bonjour Webdigit !!! Une fois de plus, avoir du recul permet d'avancer. J'ai supprimé la 2ème méthode. Et je n'ai rien modifié dans AdminProductController. J'ai bien le champ descriptionsupp qui s'affiche dans la page de mon produit et le texte ajouté s'enregistre bien dans la table et le champ adéquat. Merci de m'avoir mis le doigt sur l'erreur. You're welcome Moi aussi je rencontre cela parfois, car quand on est trop dedans, on ne vois plus l'essentiel Content d'avoir pu aider Link to comment Share on other sites More sharing options...
ShowYou Posted March 5, 2013 Share Posted March 5, 2013 Bonjour, J'ajoute un petit plus :-) En ajoutant mon champ texte supplémentaire, je voulais lors de mes imports csv pouvoir remplir ce champ !!! Chose faite !! Il suffit de dupliquer chaque ligne concernant "description" et remplacer "description" par "descriptionsupp" puis de préciser que le champ s'appelle "Description Supplémentaire" et hop c'est importé !! Link to comment Share on other sites More sharing options...
ShowYou Posted April 3, 2013 Share Posted April 3, 2013 (edited) Bonjour, En passant en 1.5.4, les informations dans le champ texte supplémentaire ne s'enregistrent plus. J'ai pourtant fait les mêmes modifications... EDIT : finalement 24h plus tard, ça fonctionne...vraiment bizarre ! Edited April 4, 2013 by monvidedressing (see edit history) Link to comment Share on other sites More sharing options...
michaeldesch Posted April 23, 2013 Share Posted April 23, 2013 Bonjour , Pour ma part j'ai ajouter deux CheckBox Modifié les bons fichiers A l'aide de smarty debug je vois bien mes nouvelles variables Mais sur la fiche produit les modifications ne sont pas pris en compte elles sont toujours decochées J'ai tenté de modifier en dur dans la BDD et la les cases sont cochées. Qu'en pensez vous ? Avez vous fais face à ce problème ? Link to comment Share on other sites More sharing options...
Rdev Posted November 18, 2013 Share Posted November 18, 2013 Bonjour, est ce que on peut ajouter le nouveau champ dans le panier et le récapitulatif de la commande et dans le mail de confirmation de la commande Link to comment Share on other sites More sharing options...
webdigit Posted November 18, 2013 Share Posted November 18, 2013 Hello radhia005 Pour peu que tes infos soient stockées en BDD, oui tu peux les ajouter facilement dans tes vues et dans tes emails. ll te suffit d'aller jeter un oeil dans tes vues pour voir la logique d'insertion des infos depuis la BDD et conserver cette même logique pour aller chercher tes propres infos que tu souhaites insérer. Link to comment Share on other sites More sharing options...
Fanantenana Posted April 11, 2016 Share Posted April 11, 2016 Bonjour,J’utilise la version 1.6.0.5.J'ai voulu ajouté un nouveau champ "monchamp" dans ma fiche produit1. j’ai ajouté une colonne sur ps_product: name: monchamp; type: DECIMAL; Taille: 20,6 ;2. sur override/classes/Product.phpclass Product extends ProductCore{public $monchamp=0;public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null){Product::$definition[‘fields’][‘monchamp’] = array(‘type’ => self::TYPE_FLOAT, ‘lang’ => true, ‘validate’ => ‘isPrice’);parent::__construct($id_product, $full, $id_lang, $id_shop, $context);}}3. sur override/controllers/admin/templates/products/prices.tpl <div class="form-group"> <label class="control-label col-lg-3" for="pvmc">Mon champ</label> <div class="input-group col-lg-2"> <span class="input-group-addon">{$currency->prefix}{$currency->suffix}</span> <input maxlength="14" id="monchamp" type="text" value="" name="monchamp" /> </div> </div>le champ s'affiche mais le souci c'est l'enregistrement ne passe pas.Message d'erreur: Une erreur s'est produite pendant la mise à jour de l'objet. product ().Est-ce que quelqu'un à déjà passé par là?Merci d'avance. Link to comment Share on other sites More sharing options...
Paco112 Posted April 11, 2016 Share Posted April 11, 2016 (edited) Bonjour, J’utilise la version 1.6.0.5. J'ai voulu ajouté un nouveau champ "monchamp" dans ma fiche produit 1. j’ai ajouté une colonne sur ps_product: name: monchamp; type: DECIMAL; Taille: 20,6 ; 2. sur override/classes/Product.php class Product extends ProductCore { public $monchamp=0; public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null) { Product::$definition[‘fields’][‘monchamp’] = array(‘type’ => self::TYPE_FLOAT, ‘lang’ => true, ‘validate’ => ‘isPrice’); parent::__construct($id_product, $full, $id_lang, $id_shop, $context); } } 3. sur override/controllers/admin/templates/products/prices.tpl <div class="form-group"> <label class="control-label col-lg-3" for="pvmc">Mon champ</label> <div class="input-group col-lg-2"> <span class="input-group-addon">{$currency->prefix}{$currency->suffix}</span> <input maxlength="14" id="monchamp" type="text" value="" name="monchamp" /> </div> </div> le champ s'affiche mais le souci c'est l'enregistrement ne passe pas. Message d'erreur: Une erreur s'est produite pendant la mise à jour de l'objet. product (). Est-ce que quelqu'un à déjà passé par là? Merci d'avance. Bonjour, A vue d’œil le problème provient de : 'lang' => true qui devrait être a false. En effet un prix de peut pas être multi langue. De plus il me semble (je n'ai pas fait cette manip depuis un moment) que tu dois aussi créer le champ dans la table ps_product_shop en plus de ps_product. Edited April 11, 2016 by Paco112 (see edit history) 1 Link to comment Share on other sites More sharing options...
Fanantenana Posted April 11, 2016 Share Posted April 11, 2016 Merci beaucoup Paco1112, après avoir ajouter ce champ dans mon ps_product_shop, j'ai pu ajouter mon nouveau champ. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now