Déclinaisons - Champ d'une table externe aux tables déclinaisons (avec liste de choix)

Instructions pour ajouter une colonne dans la grille des déclinaisons, indiquant la valeur d'un champ qui se trouve dans une table externe aux tables produits

Accédez à la partie PRO de l’outil pour l’ajout de champs personnalisés :

Assurez-vous de bien choisir la grille dans laquelle vous voulez ajouter votre champ - dans cet exemple, il s’agira de la Grille Produits.

Ajout du champ

Clic sur l’icône d’ajout pour créer la ligne du nouveau champ et indiquez son ID label_bio
(doit correspondre exactement au nom du champ dans la base de données)

La ligne du champ est créée dans la liste. Il faut maintenant renseigner les informations :

Table

Another table

Nom

Label BIO

Type

Choix Multiples

Rafraîchir les déclinaisons

Non

Il faut ensuite ajouter les éléments de configuration techniques, dans les propriétés spécifiques, dans le panneau de droite :

Copiez/collez le contenu ci-dessous dans le menu SQL Select et enregistrez :

return ' ,lab.label_bio';

Copiez/collez le contenu ci-dessous dans le menu SQL Leftjoin et enregistrez :

return ' LEFT JOIN '._DB_PREFIX_.'label lab ON (lab.id_product_attribute = pa.id_product_attribute) ';

Copiez/collez le contenu ci-dessous dans le menu PHP definition et enregistrez :

$combArray[$combinaison['id_product_attribute']]['label_bio'] = $combinaison['label_bio'];

Copiez/collez le contenu ci-dessous dans le menu PHP onAfterUpdateSQL et enregistrez :

if (isset($_POST['label_bio']))
{
    $the_id = (int) Db::getInstance()->getValue('SELECT id_product_attribute 
                                                    FROM '._DB_PREFIX_.'label 
                                                    WHERE id_product_attribute = '.(int) $id_product_attribute);
    if ($the_id)
    {
        $sql = 'UPDATE '._DB_PREFIX_.'label 
                SET label_bio = '.(int) Tools::getValue('label_bio', 0).' 
                WHERE id_product_attribute='.(int) $id_product_attribute;
    }
    else
    {
        $sql = 'INSERT INTO '._DB_PREFIX_.'label (`id_product_attribute`,`label_bio`) 
                VALUES ('.(int) $id_product_attribute.', '.(int) Tools::getValue('label_bio', 0).')';
    }
    Db::getInstance()->execute($sql);
}

Si vous souhaitez ajouter un choix Oui/Non, Copiez/collez le contenu ci-dessous dans le menu Liste de choix et enregistrez :

return [1 => _l('Yes'), 0 => _l('No')];

Vous pouvez maintenant fermer cette fenêtre.
De retour dans la fenêtre précédente, le nouveau champ se trouve dans la liste des champs disponibles (surligné en orange) et vous pouvez l’ajouter à votre grille de déclinaisons.