Pour créer un ticket support, commencez par une recherche

Import Produits : importer un champ de langue dans une table


Pré-requis

Le champ doit être déjà présent en base de données

Objectif

Nous souhaitons importer un champ de langue dans une table, la langue sera préalablement sélectionnée dans le mapping d'import.

Mise en place

Pour ajouter le champ à la liste des champs disponibles dans le mapping d'import produits, cliquez sur le bouton add_dis.png de l'interface "Ajout de champ", puis saisissez les informations suivantes :

Quel est l'ID du champ ? : my_field (doit correspondre exactement au nom du champ dans la table)

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 Langue sélectionnable, et ajoutez le nom du champ (séparés par une virgule si plusieurs champs à saisir). Exemple :

another_field,my_field

- 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]]];
    $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)."')");
        }

Si votre champ accepte du code HTML, si le code que vous utilisez contient: pSQL($value) 

alors il faut ajouter un paramètre : pSQL($value, true)

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.



Articles associés