webleads-tracker

[résolu] Hook Gestion des publications du catalogue (page, widget, ...)

Zéphyr Seb
Avatar
Bonjour,

je souhaite modifier la requête de sélection pour un widget de mise en avant de produits. Pour cela je pensais utiliser le hook
widgetGetAdditionnalCondition($class, $boxId, &$condition)
mais je ne sais pas comment ajouter mes conditions.

Le widget utilise un filtre personnalisé qui prend tous les produits pour lesquels la valeur est "oui".
Actuellement $condition contient :
AND pf.id_product IN (653,465,664,655,596) AND TRUE.


Mon but est d'ajouter 2 conditions pour n'afficher que les produits dont la date du jour est compris entre les propriétés additionnelles "date de début" et "date de fin".

Si quelqu'un a déjà utilisé ce hook (y compris chez medialibs ;-) merci du retour.
Sébastien - Zéphyr

Célia - Medialibs
Avatar
Bonjour Sébastien,

Pour faire ce que tu souhaites, je te conseille de faire une requête qui récupère tous les id des produits qui répondent à ta condition de date (via leurs propriétés additionnelles).

Ensuite à partir des résultats obtenus, tu pourras ajouter à la variable $condition ta condition supplémentaire. Ce qui peut donner un code de ce style :
// récupération des id produits dans la variable $idProducts
$condition .= ' AND pf.id_product IN ( '. implode(',', $idProducts) .')';
 

Et voilà, comme la condition est passé par référence elle doit être appliquée sans problèmes sur le widget.

Bonne fin de journée
Célia Dehé - Développeur - Medialibs

Zéphyr Seb
Avatar
Merci Célia! effectivement c'est plus simple comme ça
Sébastien - Zéphyr

Thomas [LE KLUB]
Avatar
Bonjour Seb,
pour un soucis d'optimisation on peut aussi imaginer simplement de passer par une sous-requête :

$condition .= ' AND pf.id_product IN ( SELECT `id_produit` FROM `TABLE_PRODUITS` WHERE condition=TRUE )';


Le résultat est identique, on évite simplement les traitements PHP ;)

Bonne journée,
Thomas