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_lang = (int) $getIDlangByISO[$mappingData['CSV2DBOptions'][$firstLineData[$key]]];
if (!empty($id_lang))
{
$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.