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

Grille produits : Ajouter une colonne affichant une caractéristique produit (éditable)

Pré-requis

  • Version 2014-03-12 de Store Commander
  • Extension SC Éditeur de grilles Pro - Version 1.0

 

Objectif 

Nous souhaitons ajouter une colonne qui reprend les valeurs d'une caractéristique pour les produits affichés dans la grille des produits et afficher une liste de choix lorsqu'on clique sur la cellule pour l'éditer.

Nous pourrons ainsi :

  • utiliser les filtres dans les grilles pour affiner nos sélections de produits
  • exporter rapidement la grille des produits avec ce champ
  • modifier en masse une caractéristique de plusieurs produits

 

Mise en place

  • Pour ajouter le champ à la liste des champs disponibles pour vos grilles produit, cliquez sur le bouton  de l'interface "Ajout de champ", puis saisissez les informations suivantes :


Quel est l'ID du champ ? : myfeature

 

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


Nom du champ : Livraison

Table : saisissez : special

Rafraîchir les déclinaisons : laisser sur Non

Type : Choix multiples

 

  •  Dans le panneau des propriétés avancées :

 

SQLSelectDataSelect :

 

return ' , (SELECT fp.id_feature_value FROM `ps_feature_product` fp 
where fp.id_feature = "3" 
and fp.id_product = p.id_product) 
as myfeature ';

 

Liste de choix


$sql = "SELECT fvl.* 
FROM "._DB_PREFIX_."feature_value_lang fvl 
INNER JOIN "._DB_PREFIX_."feature_value fv ON (fv.id_feature_value=fvl.id_feature_value) 
WHERE fvl.id_lang=1 
AND fv.id_feature = 3"; 
$res=Db::getInstance()->ExecuteS($sql); 
$tmp = array(); 
$tmp[0]=" "; 
foreach($res as $row) 
$tmp[$row["id_feature_value"]]=$row["value"]; 
return $tmp;

 

onAfterUpdateSQL
 

if ($feature_value = (int)Tools::getValue('myfeature',0))
{

$sql = "SELECT * FROM "._DB_PREFIX_."feature_product WHERE id_product='".(int)$idproduct."' AND id_feature='3'"; 
$res=Db::getInstance()->ExecuteS($sql); 
if (count($res)) 

if ($feature_value) 

$sql = "UPDATE "._DB_PREFIX_."feature_product SET id_feature_value='".(int)$feature_value."' WHERE id_product='".(int)$idproduct."' AND id_feature='3'"; 
Db::getInstance()->Execute($sql); 
}else{ 
$sql = "DELETE FROM "._DB_PREFIX_."feature_product WHERE id_product='".(int)$idproduct."' AND id_feature='3'"; 
Db::getInstance()->Execute($sql); 

}else{ 
$sql = "INSERT INTO "._DB_PREFIX_."feature_product (id_feature,id_product,id_feature_value) VALUES ('3','".(int)$idproduct."','".(int)$feature_value."')"; 
Db::getInstance()->Execute($sql); 
}

}

 

On prend ici la caractéristique ID 3. Vous pouvez changer de caractéristique en allant chercher l'ID voulu dans la fenêtre des caractéristiques (menu Catalogue > Caractéristiques de SC).

 

  • Fermez la fenêtre d'édition des champs personnalisés et ajoutez le champ à vos grilles.