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

Grille Déclinaisons : ajouter un champ d'une table externe aux tables déclinaisons (avec liste de choix)


Objectif

Nous souhaitons ajouter le champ "Label BIO" qui permettra de distinguer ce type de déclinaisons dans les grilles. Pour notre exemple, ce champ est situé dans la table ps_label ( id_product_attribute ; label_bio (0/1) ).

Nous pourrons ainsi :

  • utiliser les filtres dans les grilles pour affiner nos sélections de déclinaisons
  • éditer en masse ce champ par le système de copier coller de SC
  • exporter rapidement la grille des déclinaisons avec ce champ

Mise en place

Pour ajouter le champ à la liste des champs disponibles pour votre grille déclinaisons, cliquez sur le bouton de l'interface "Ajout de champ", puis saisissez les informations suivantes :


Quel est l'ID du champ ? : label_bio (doit correspondre exactement au nom du champ dans la base de données)

SC crée le champ, il faut maintenant renseigner dans la grille :

Nom du champ : Label BIO
Table : Another table
Type : Choix multiples

Dans le panneau des Propriétés Avancées à droite :

- sélectionner le menu SQL Select et renseignez :

return ' ,lab.label_bio';

- sélectionner le menu SQL Leftjoin et renseignez :

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

- sélectionner le menu PHP definition et renseignez :

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


- sélectionner le menu PHP onAfterUpdateSQL et renseignez :

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, sélectionnez le menu Liste de choix et renseignez :

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

Fermez la fenêtre d'édition des champs personnalisés.

Le nouveau champ est présent dans la liste des champs disponibles, et vous pouvez l'ajouter à votre grille déclinaisons.




Articles associés