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

Grille Déclinaisons Multiboutique : ajouter un champ d'une table externe aux tables déclinaison multi boutique (avec liste de ch


Objectif

Nous souhaitons ajouter le champ "Label BIO" qui permettra de distinguer ce type de produit dans le grille déclinaison multi boutique. Pour notre exemple, ce champ est situé dans la table ps_label ( id_product_attribute ; label_bio (0/1); id_shop ).

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

Mise en place

Pour ajouter le champ à la liste des champs disponibles pour votre grille MB - 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 : -
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 = pas.id_product_attribute AND lab.id_shop=pas.id_shop) ';

- sélectionner le menu PHP definition et renseignez :

$product_attr['label_bio'] = $product_attr_by_shop['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.' 
                                                    AND id_shop = '.(int)$id_shop);
    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.' 
                AND id_shop = '.(int)$id_shop;
    }
    else
    {
        $sql = 'INSERT INTO '._DB_PREFIX_.'label (`id_product_attribute`,`label_bio`, `id_shop`)
                VALUES ('.(int) $id_product_attribute.', '.(int) Tools::getValue('label_bio', 0).', '.(int)$id_shop.')';
    }
    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