Nous souhaitons ajouter le champ "Action spécifique" qui est stocké dans la table ps_specific_action (cette table n'existe pas par défaut dans PrestaShop).
Nous pourrons ainsi :
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 ? : action_specifique (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 : Action spécifique
Table : Another table
Type : Choix multiples
Rafraîchir les déclinaisons : Non
On imagine dans cet exemple, que la table ps_specific_action contient les champs :
id_specific_action, id_product, specific_action
Dans le Panneau des Propriétés Avancées à droite :
- sélectionner le menu Liste de Choix et renseigner :
return array(0=>_l('Aucune'), 1=>_l('Colis fragile, emballer avec carton A1'), 2=>_l('Colis long, emballer avec carton B3'));
- sélectionner le menu SQL Select et renseigner :
return ' ,sact.specific_action';
- sélectionner le menu SQL Leftjoin et renseigner :
return " LEFT JOIN "._DB_PREFIX_."specific_action sact ON (sact.id_product= p.id_product)";
- sélectionner le menu PHP onAfterUpdateSQL et renseigner :
if (isset($_POST["specific_action"])) {
$sql = "SELECT * FROM " . _DB_PREFIX_ . "specific_action WHERE id_product=" . (int)$idproduct;
$res = Db::getInstance()->ExecuteS($sql);
$specific_action = (int)Tools::getValue('specific_action', 0);
if (count($res)) {
if ($specific_action) {
$sql = "UPDATE " . _DB_PREFIX_ . "specific_action SET specific_action=" . (int)$specific_action . " WHERE id_product=" . (int)$idproduct;
Db::getInstance()->Execute($sql);
} else {
$sql = "DELETE FROM " . _DB_PREFIX_ . "specific_action WHERE id_product=" . (int)$idproduct;
Db::getInstance()->Execute($sql);
}
} else {
$sql = "INSERT INTO " . _DB_PREFIX_ . "specific_action (id_product,specific_action) VALUES (" . (int)$idproduct . "," . (int)$specific_action . ")";
Db::getInstance()->Execute($sql);
}
}
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 à vos grilles produits.