Le champ doit être déjà présent en base de données
Nous souhaitons importer des informations complémentaires à un produit depuis un fichier CSV vers le champ d'une table. Si l'information existe déjà dans la table, elle est mise à jour. Si elle n'existe pas, elle est créée.
Pour ajouter le champ à la liste des champs disponibles dans le mapping d'import produits, cliquez sur le bouton de l'interface "Ajout de champ", puis saisissez les informations suivantes :
SC crée le champ, il faut maintenant renseigner dans la grille :
ID : my_field
Nom : my_field
Dans le panneau des Propriétés Avancées à droite :
- sélectionner le menu Processus d'import des déclinaisons, et ajoutez:
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.
Fermez la fenêtre d'édition des champs personnalisés et utilisez le champ dans votre mapping d'import.