Étendez les possibilités de l’import avec vos propres champs
Accédez à la partie PRO de l’outil pour l’ajout de champs personnalisés :

Pour accéder à la partie PRO, cliquez sur l'icône + de la colonne de droite intitulée 'Champs Disponibles'
Importer un champ de langue dans une table
Assurez-vous de bien choisir la grille dans laquelle vous voulez ajouter votre champ - dans cet exemple, il s’agira de la grille Catalogue : Import Produit.

Ajout du champ
Clic sur l’icône d’ajout pour créer la ligne du nouveau champ et indiquez son ID “my_field” dans cet exemple précis.

L’ID du champ doit correspondre exactement au nom du champ dans la table de la base de données
La ligne du champ est créée dans la liste. Vous devez voir deux colonnes comme ceci :
Le nom du champ peut être modifié par la suite si besoin.
Ajout des requêtes
Dans le panneau des Propriétés Avancées à droite :

Sélectionner le menu Processus d'import des déclinaisons, et renseignez :
if (in_array($switchObject, ['my_field']))
{
$value = $GLOBALS['import_value'];
$id_lang = (int) $getIDlangByISO[$mappingData['CSV2DBOptions'][$firstLineData[$key]]];
$id_prd = (!empty($id_product) ? (int) $id_product : (int) $newprod->id);
if (!empty($id_lang))
{
$sql = 'SELECT COUNT(*) FROM '._DB_PREFIX_.'mytable_lang
WHERE id_product='.$id_prd.'
AND id_lang = '.$id_lang.'
AND id_shop = '.(int) $id_shop;
if (Db::getInstance()->getValue($sql))
{
Db::getInstance()->execute('UPDATE '._DB_PREFIX_.'mytable_lang
SET `'.$switchObject."`='".pSQL($value)."'
WHERE id_product=".$id_prd.'
AND id_lang = '.$id_lang.'
AND id_shop = '.(int) $id_shop);
}
else
{
Db::getInstance()->execute('INSERT INTO '._DB_PREFIX_.'mytable_lang (id_product, id_lang, id_shop, `'.$switchObject.'`)
VALUES ('.$id_prd.','.$id_lang.','.(int) $id_shop.",'".pSQL($value)."')");
}
}
}ATTENTION : pour les tables product_lang et product_attribute_lang, ne pas ajouter ce bloc de code dans les données ci-dessus :
else
{
Db::getInstance()->execute('INSERT INTO '._DB_PREFIX_.'mytable_lang (id_product, id_lang, id_shop, `'.$switchObject.'`)
VALUES ('.$id_prd.','.$id_lang.','.(int) $id_shop.",'".pSQL($value)."')");
}- Sélectionner Langue sélectionnable, et ajoutez le nom du champ (séparés par une virgule si plusieurs champs à saisir). Exemple : last_field, my_field.
Ce code est à adapter selon vos besoins.
N’oubliez pas de l’enregistrer en cliquant sur ce bouton

Fermez la fenêtre d'édition des champs personnalisés et utilisez le champ dans votre mapping d'import.
Ajouter un champ de la table ps_product
Assurez-vous de bien choisir la grille dans laquelle vous voulez ajouter votre champ - dans cet exemple, il s’agira de la grille Catalogue : Import Produit.
Ajout du champ
Clic sur l’icône d’ajout pour créer la ligne du nouveau champ et indiquez son ID my_field dans cet exemple précis.

L’ID du champ doit correspondre exactement au nom du champ dans la table de la base de donnéestenant renseigner dans la grille :
La ligne du champ est créée dans la liste. Vous devez voir deux colonnes comme ceci :
Le nom du champ peut être modifié par la suite si besoin.
Ajout des requêtes
Dans le panneau des Propriétés Avancées à droite :

- sélectionner le menu Processus d'import des déclinaisons, et renseignez :
if ($switchObject == 'my_field') {
$value = $GLOBALS['import_value'];
$id_prd = (!empty($id_product) ? (int)$id_product : (int)$newprod->id);
if (!empty($id_prd)) {
$sql = "UPDATE " . _DB_PREFIX_ . "product SET `" . $switchObject . "`='" . psql($value) . "' WHERE id_product=" . (int)$id_prd;
Db::getInstance()->Execute($sql);
}
}}Ce code est à adapter à vos besoins.
N’oubliez pas de l’enregistrer en cliquant sur ce bouton :

Fermez la fenêtre d'édition des champs personnalisés et utilisez le champ dans votre mapping d'import.
Importer dans une déclinaison produit
Objectif
Nous souhaitons importer une information (valeur numérique) à un produit depuis un fichier CSV. Si le produit n'a pas de déclinaison, c'est le champ de la table ps_product qui est mis à jour. Si le produit a des déclinaisons, on force la valeur du produit de base à 0 et on met à jour la déclinaison concernée.
Assurez-vous de bien choisir la grille dans laquelle vous voulez ajouter votre champ - dans cet exemple, il s’agira de la grille Catalogue : Import Produit.

Ajout du champ
Clic sur l’icône d’ajout pour créer la ligne du nouveau champ et indiquer son ID my_field dans cet exemple précis.

L’ID du champ doit correspondre exactement au nom du champ dans la table de la base de données
La ligne du champ est créée dans la liste. Vous devez voir deux colonnes comme ceci :
Le nom du champ peut être modifié par la suite si besoin.
Ajout des requêtes
Dans le panneau des Propriétés Avancées à droite :

- Sélectionner le menu Processus d'import, et renseignez :
if ($switchObject == 'my_field' && $GLOBALS['import_value'] != '')
{
$id_prd = (!empty($id_product) ? (int) $id_product : (int) $newprod->id);
Db::getInstance()->execute('UPDATE '._DB_PREFIX_.'product
SET `'.$switchObject."`='".importConv2Float($GLOBALS['import_value'])."'
WHERE id_product=".(int) $id_prd);
}
- Sélectionner le menu Processus d'import des déclinaisons, et renseignez :
if ($switchObject == 'my_field' && isCombinationWithID() && $GLOBALS['import_value'] != '')
{
$id_prd = (!empty($id_product) ? (int) $id_product : (int) $newprod->id);
Db::getInstance()->execute('UPDATE '._DB_PREFIX_.'product SET `'.$switchObject.'`=0 WHERE id_product='.(int) $id_prd);
Db::getInstance()->execute('UPDATE '._DB_PREFIX_.'product_attribute SET `'.$switchObject."`='".importConv2Float($GLOBALS['import_value'])."' WHERE id_product_attribute=".(int) $id_product_attribute);
}Ce code est à adapter à vos besoins.
N’oubliez pas de l’enregistrer en cliquant sur ce bouton

Fermez la fenêtre d'édition des champs personnalisés et utilisez le champ dans votre mapping d'import.
Importer un champ dans une table (insert et update)
Assurez-vous de bien choisir la grille dans laquelle vous voulez ajouter votre champ - dans cet exemple, il s’agira de la grille Catalogue : Import Produit.

Ajout du champ
Clic sur l’icône d’ajout pour créer la ligne du nouveau champ et indiquez son ID “my_field” dans cet exemple précis.

L’ID du champ doit correspondre exactement au nom du champ dans la table de la base de données
La ligne du champ est créée dans la liste. Vous devez voir deux colonnes comme ceci :
Le nom du champ peut être modifié par la suite si besoin.
Ajout des requêtes
Dans le panneau des Propriétés Avancées à droite :

- Sélectionner le menu Processus d'import des déclinaisons, et renseignez :
if (in_array($switchObject, ['my_field'])) {
$value = $GLOBALS['import_value'];
$id_prd = (!empty($id_product) ? (int)$id_product : (int)$newprod->id);
$sql = 'SELECT COUNT(*)
FROM ' . _DB_PREFIX_ . 'my_table
WHERE id_product=' . $id_prd;
if (Db::getInstance()->getValue($sql)) {
Db::getInstance()->execute('UPDATE ' . _DB_PREFIX_ . 'my_table
SET `' . $switchObject . "`='" . pSQL($value) . "'
WHERE id_product=" . $id_prd);
} else {
Db::getInstance()->execute('INSERT INTO ' . _DB_PREFIX_ . 'my_table (id_product, `' . $switchObject . '`)
VALUES (' . $id_prd . ',"' . pSQL($value) . '")');
}
}Ce code est à adapter à vos besoins.
N’oubliez pas de l’enregistrer en cliquant sur ce bouton

Fermez la fenêtre d'édition des champs personnalisés et utilisez le champ dans votre mapping d'import.