Jump to content

Ajouter des champs supplémentaires produits + import CSV


Recommended Posts

Bonjour,

je cherche à ajouter des champs supplémentaires pour les produits.

Et aussi que ça soit possible d'importer ces champs perso en CSV.

 

J'ai créé mes champs dans la table ps_product mais l'import CSV n'ajoute rien dans ces champs.

Je l'avais fait avec prestashop 1.5x mais avec la nouvelle version 1.6 ça ne marche plus.

 

 

 

Si quelqu'un a la solution je suis preneur.

 

Merci.

Link to comment
Share on other sites

Bonjour, 

 

Pour ajouter un champ pour l'import de CSV il faut modifier le fichier AdminImportController.php .

 

Par exemple, pour ajouter "monChamp" à la fin du menu déroulant il faut insérer vers la ligne 160 environ de ce fichier, les lignes suivante :

 

'monChamp' => array(

'label' => $this->l('Mon Champ'),
'help' => $this->l('ID de monChamp.')
),
 
Codialement, 
 
Henki
Link to comment
Share on other sites

Bonjour, ça marchait très bien dans la version 1.5 de prestashop mais ça ne marche pas dans la 1.6. C'est pour cela que je fais appelle à vous. Désolé d'écrire un message sans sauts de lignes mais mon Smartphone ne veut pas en faire :(

 

Bonjour, 

 

Pour ajouter un champ pour l'import de CSV il faut modifier le fichier AdminImportController.php .

 

Par exemple, pour ajouter "monChamp" à la fin du menu déroulant il faut insérer vers la ligne 160 environ de ce fichier, les lignes suivante :

 

'monChamp' => array(

'label' => $this->l('Mon Champ'),
'help' => $this->l('ID de monChamp.')
),
 
Codialement, 
 
Henki

 

 

c

Link to comment
Share on other sites

C'est pas très compliqué !

 

Le fichier en question se trouve à l'adresse suivante : "monDomaine.com/prestashop/controllers/admin/AdminImportControllers.php"

 

Ensuite il vous suffit de repérer les lignes suivantes (chez moi lignes 118 à 160) : 

 

$this->available_fields = array(
'no' => array('label' => $this->l('Ignore this column')),
'id_product' => array('label' => $this->l('Product ID').'*'),
'group' => array(
'label' => $this->l('Attribute (Name:Type:Position)').'*'
),
'attribute' => array(
'label' => $this->l('Value (Value:Position)').'*'
),
'supplier_reference' => array('label' => $this->l('Supplier reference')),
'reference' => array('label' => $this->l('Reference')),
'ean13' => array('label' => $this->l('EAN13')),
'upc' => array('label' => $this->l('UPC')),
'wholesale_price' => array('label' => $this->l('Wholesale price')),
'price' => array('label' => $this->l('Impact on price')),
'ecotax' => array('label' => $this->l('Ecotax')),
'quantity' => array('label' => $this->l('Quantity')),
'minimal_quantity' => array('label' => $this->l('Minimal quantity')),
'weight' => array('label' => $this->l('Impact on weight')),
'default_on' => array('label' => $this->l('Default (0 = No, 1 = Yes)')),
'image_position' => array(
'label' => $this->l('Image position')
),
'image_url' => array('label' => $this->l('Image URL')),
'delete_existing_images' => array(
'label' => $this->l('Delete existing images (0 = No, 1 = Yes).')
),
'shop' => array(
'label' => $this->l('ID / Name of shop'),
'help' => $this->l('Ignore this field if you don\'t use the Multistore tool. If you leave this field empty, the default shop will be used.'),
),
'advanced_stock_management' => array(
'label' => $this->l('Advanced Stock Management'),
'help' => $this->l('Enable Advanced Stock Management on product (0 = No, 1 = Yes)')
),
'depends_on_stock' => array(
'label' => $this->l('Depends on stock'),
'help' => $this->l('0 = Use quantity set in product, 1 = Use quantity from warehouse.')
),
'warehouse' => array(
'label' => $this->l('Warehouse'),
'help' => $this->l('ID of the warehouse to set as storage.')
),
);
 
Ensuite il vous suffit d'ajouter après :
 
'warehouse' => array(
'label' => $this->l('Warehouse'),
'help' => $this->l('ID of the warehouse to set as storage.')
),
 
le code cité ci-dessus. 
 
 
Edited by Henki (see edit history)
Link to comment
Share on other sites

Je n'avais pas compris désolé ! 

 

Je te remercie pour ton aide.

Avec la version 1.6 de prestashop, ça importe sans erreur mais mes champs supplémentaires de la table ps_product restent vides.

 

En 1.5.6 j'avais déjà fait cette modif, ça marchait bien.

Link to comment
Share on other sites

Après quelques recherches, je pense avoir trouvé la solution. Il faut non seulement faire ce que je t'ai dis de faire plus tôt, mais il faut également changer un bout de code, quelques lignes plus bas. 

 

Tout d'abord tentes de repérer cette ligne là : "$this->available_fields = array("

puis tu insères ton même bout de code en bas de cette requête : 

 

 

même bout de code =>

 

'test' => array(
'label' => $this->l('Test'),
'help' => $this->l('ID of the test to set as storage.')
),
 
à placer après => 
 
$this->available_fields = array(
'no' => array('label' => $this->l('Ignore this column')),
'id' => array('label' => $this->l('ID')),
'active' => array('label' => $this->l('Active (0/1)')),
'name' => array('label' => $this->l('Name *')),
'category' => array('label' => $this->l('Categories (x,y,z...)')),
'price_tex' => array('label' => $this->l('Price tax excluded')),
'price_tin' => array('label' => $this->l('Price tax included')),
'id_tax_rules_group' => array('label' => $this->l('Tax rules ID')),
'wholesale_price' => array('label' => $this->l('Wholesale price')),
'on_sale' => array('label' => $this->l('On sale (0/1)')),
'reduction_price' => array('label' => $this->l('Discount amount')),
'reduction_percent' => array('label' => $this->l('Discount percent')),
'reduction_from' => array('label' => $this->l('Discount from (yyyy-mm-dd)')),
'reduction_to' => array('label' => $this->l('Discount to (yyyy-mm-dd)')),
'reference' => array('label' => $this->l('Reference #')),
'supplier_reference' => array('label' => $this->l('Supplier reference #')),
'supplier' => array('label' => $this->l('Supplier')),
'manufacturer' => array('label' => $this->l('Manufacturer')),
'ean13' => array('label' => $this->l('EAN13')),
'upc' => array('label' => $this->l('UPC')),
'ecotax' => array('label' => $this->l('Ecotax')),
'width' => array('label' => $this->l('Width')),
'height' => array('label' => $this->l('Height')),
'depth' => array('label' => $this->l('Depth')),
'weight' => array('label' => $this->l('Weight')),
'quantity' => array('label' => $this->l('Quantity')),
'minimal_quantity' => array('label' => $this->l('Minimal quantity')),
'visibility' => array('label' => $this->l('Visibility')),
'additional_shipping_cost' => array('label' => $this->l('Additional shipping cost')),
'unity' => array('label' => $this->l('Unity')),
'unit_price_ratio' => array('label' => $this->l('Unit price ratio')),
'description_short' => array('label' => $this->l('Short description')),
'description' => array('label' => $this->l('Description')),
'tags' => array('label' => $this->l('Tags (x,y,z...)')),
'meta_title' => array('label' => $this->l('Meta title')),
'meta_keywords' => array('label' => $this->l('Meta keywords')),
'meta_description' => array('label' => $this->l('Meta description')),
'link_rewrite' => array('label' => $this->l('URL rewritten')),
'available_now' => array('label' => $this->l('Text when in stock')),
'available_later' => array('label' => $this->l('Text when backorder allowed')),
'available_for_order' => array('label' => $this->l('Available for order (0 = No, 1 = Yes)')),
'available_date' => array('label' => $this->l('Product available date')),
'date_add' => array('label' => $this->l('Product creation date')),
'show_price' => array('label' => $this->l('Show price (0 = No, 1 = Yes)')),
'image' => array('label' => $this->l('Image URLs (x,y,z...)')),
'delete_existing_images' => array(
'label' => $this->l('Delete existing images (0 = No, 1 = Yes)')
),
'features' => array('label' => $this->l('Feature(Name:Value:Position:Customized)')),
'online_only' => array('label' => $this->l('Available online only (0 = No, 1 = Yes)')),
'condition' => array('label' => $this->l('Condition')),
'customizable' => array('label' => $this->l('Customizable (0 = No, 1 = Yes)')),
'uploadable_files' => array('label' => $this->l('Uploadable files (0 = No, 1 = Yes)')),
'text_fields' => array('label' => $this->l('Text fields (0 = No, 1 = Yes)')),
'out_of_stock' => array('label' => $this->l('Action when out of stock')),
'shop' => array(
'label' => $this->l('ID / Name of shop'),
'help' => $this->l('Ignore this field if you don\'t use the Multistore tool. If you leave this field empty, the default shop will be used.'),
),
'advanced_stock_management' => array(
'label' => $this->l('Advanced Stock Management'),
'help' => $this->l('Enable Advanced Stock Management on product (0 = No, 1 = Yes).')
),
'depends_on_stock' => array(
'label' => $this->l('Depends on stock'),
'help' => $this->l('0 = Use quantity set in product, 1 = Use quantity from warehouse.')
),
'warehouse' => array(
'label' => $this->l('Warehouse'),
'help' => $this->l('ID of the warehouse to set as storage.')
),
 
J'ai vérifié et maintenant je vois mon champ "Test" dans le menu déroulant lorsque j'importe mon csv.
Edited by Henki (see edit history)
Link to comment
Share on other sites

 

Après quelques recherches, je pense avoir trouvé la solution. Il faut non seulement faire ce que je t'ai dis de faire plus tôt, mais il faut également changer un bout de code, quelques lignes plus bas. 

 

Tout d'abord tentes de repérer cette ligne là : "$this->available_fields = array("

puis tu insères ton même bout de code en bas de cette requête : 

 

'test' => array(
'label' => $this->l('Test'),
'help' => $this->l('ID of the test to set as storage.')
),
 
J'ai vérifié et maintenant je vois mon champ "Test" dans le menu déroulant lorsque j'importe mon csv.

 

 

En fait moi aussi je vois mes champs dans les menus déroulants, je les fais correspondre aux colonnes, je lance l'importation, pas d'erreurs, mais quand je regarde les données dans la table ps_product, les champs additionnels restent vides.

 

As tu tenté d'importer ?

 

Bon, je vais recommencer encore une fois :blink:

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

J'appelle "champs additionnels" les champs perso que j'ai rajouté dans la table ps_product.

(= une colonne supplémentaire dans phpmyadmin)

 

Je vois, je commence à cerner ton vrai problème ! Tentes avec les caractéristiques ce que ça donne, n'oublie pas de nous tenir au courant de ton avancement !

 

Bon courage

Link to comment
Share on other sites

  • 7 years later...

Bonjour,

Est-ce que cette méthode pour être utilisée pour rajouter le champs "Emplacement du Stock" dans l'import, car actuellement je n'ai pas trouvé de manière d'importer en CSV la donnée de la case "Emplacement du Stock" dans la fiche produit sur PS1.7 ?

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...