Un module pour créer des alertes personnalisées

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour à tous,

Savez-vous comment procéder pour créer des alertes personnalisées ? Par exemple pour un sites d'annonces automobile, les membres enregistrent leurs critères de recherche (clio, < 5000km, < 3000€, etc.) et receoivent une alertes mail lorsqu'une annonce contenant ces caractéristiques est publiée ?

Je n'ai pas trouvé de modules proposant cette fonctionnalité, si quelqu'un a une idée ...

Merci !

Forum : 
Version de Drupal : 

Essaye de voir le tout nouveau module "rules". Je ne l'ai pas encore testé mais à ce que j'ai compris il permet de remplacer les modules triggers/actions (et aussi workflow) et de mettre en place des règles conditionnelles.

Si tu as des retours sur ce module je suis intéressé :)

Merci pour la réponse.

Le module Rules je l'utilise déjà et il est vraiment puissant! Je te conseille de le tester.

Par contre ce qui m'intéresse c'est de proposer aux membres de créer leurs propres alertes. Rules n'offre pas cette possibilité (a ma connaissance)

Peut-être devrais-je créer mon propre module ? Mais ça je n'ai jamais fait !

Je ne connais pas non plus de module qui fait cela. Pour cela il faudrait déjà que tu permettes à tes utilisateur de stocker leurs préférences de recherche (peut être en jouant tout simplement avec les modules altérant les champs du profil ?).

Si tu n'as jamais créer de module ça va être chaud de te lancer là dedans (tu sais développer du php?).

En partant sur la création de module je partirais sur un module genre profil qui permet d'ajouter des champs dans le profil, je créerai un onglet "préférences de recherche" avec les plages de prix, les marques désirées etc... et je créerai également un onglet "abonnement" avec des checkboxes à cocher où le gens cocheraient dans quels cas ils souhaitent etre avertis.

Ensuite il faudrait coder un petit module probablement dans un hook_nodeapi en operation "insert" : au moment de l'insertion des données il faut lancer une recherche php de tous les utilisateurs dont les critères correspondent à l'annonce et leur envoyer un mail.

Je ne connais pas rules ni les triggers / actions (je suis resté bloqué dans une faille spatio temporelle avec drupal 5) mais workflow ng permettait de tester la valeur de champ CCK lors de l'insert d'un node et d'envoyer un mail selon le résultat des tests sur les champs CCK : donc peut être qu'en se triturant bien la cervelle on peut utiliser ce biais?

"Si tu n'as jamais créer de module ça va être chaud de te lancer là dedans (tu sais développer du php?)."

Je suis développeur web pro en freelance, mais en effet je n'ai jamais développé de modules, mais ça s'apprend...

En fait oui, le plus gros du boulot c'est de proposer aux utilisateurs d'enregistrer, de modifier et de supprimer des critères de recherche. Ensuite pour les alertes, j'hésite entre ton idée : envoyer les alertes à la soumission, ou faire ça via le CRON, ça permettrai de recevoir par exemple (3 annonces correspondent à votre recherche), plutot qu'une annonce à chaque fois.

Mais je crois que ton idée de faire ça a la soumission est plus simple et peut être moins gourmande.

En tout cas merci pour les pistes de reflexions, ça me donnes des idées...

Par exemple avec Rules, il est possible d'excecuter un code PHP après une action. Je pourrais créer un webform "Alertes", a la soumission du formulaire, j'enregistre les données reçues dans une table spéciale "alertes". Ensuite à la soumission d'une annonce, je vais voir dans les "alertes" si j'ai des entrées correspondantes et j'envois les mails...

De la pure théorie pour l'instant mais à crueuse.

"Je suis développeur web pro en freelance, mais en effet je n'ai jamais développé de modules, mais ça s'apprend..."

Quand tu as les bonnes infos, apprendre à developper son premier module Drupal ca va très très vite ;-) (ce qui explique à mon avis le succès de ce CMS).
Surtout que dans ce cas ça consiste peut être à mettre uniquement en oeuvre un hook_nodeapi du genre :

<?php
nom_de_mon_module_nodeapi
(signature de la fonction){
  switch(
$op){
    case
'insert' :
   
//// TON CODE ICI ////
   
break;
  }
}
?>

"En fait oui, le plus gros du boulot c'est de proposer aux utilisateurs d'enregistrer, de modifier et de supprimer des critères de recherche."

Je pense que Drupal peut gérer cette partie les doigts dans les nez avec la solution que je propose plus haut (créer de nouveaux onglets dans le profil). Je pense que la seule partie coquine c'est la requete sql pour chercher les utilisateurs dont les critères matchent avec l'annonce qui vient d'être posté.

"Mais je crois que ton idée de faire ça a la soumission est plus simple et peut être moins gourmande. "
Je ne sais pas ce qui est le plus performant mais si je m'inscris à un systeme de ce genre je m'attends à recevoir le mail dès que l'annonce parait donc le plus rapidement possible (et pas quelques heures après coup via un cron).

"Je pense que Drupal peut gérer cette partie les doigts dans les nez avec la solution que je propose plus haut (créer de nouveaux onglets dans le profil). Je pense que la seule partie coquine c'est la requete sql pour chercher les utilisateurs dont les critères matchent avec l'annonce qui vient d'être posté."

Je ne connais pas très bien le module Profile. Créer un onglet dans le profil, c'est avec le champs Catégories lorsqu'on veut créer un champ personalisé ?

Si ce que tu me propose est viable et que la seule partie compliquée est la requete, alors ça devrait aller, et je t'en remercierai grandement !

Bon je vais quand meme voir ce que donne le module Flag avant, en plus il peut me servir pour d'autres choses...

"Je ne connais pas très bien le module Profile. Créer un onglet dans le profil, c'est avec le champs Catégories lorsqu'on veut créer un champ personalisé ?"

Je connais très mal les modules de gestion de profil donc je pourrais pas te donner la marche à suivre mais je me souviens nettement que dans drupal 5 on pouvait créer des champs custom pour le profil (donc module profile) et les répartir dans différents onglets lorsqu'on édite le profil. Ca me parait une bonne manière d'enregistrer des souhaits de recherche.

Même si ce n'est pas le module profile qui fait ça, il existe pleins de modules pour gérer l'organisation du profil : l'API des formulaires de Drupal rend leur manipulation extrement aisé, une vraie pate à modeler :-)

Rules est effectivement extrêmement puissant et comme Views, Workflow ou CCK c'est plusieurs mois pour vraiment se roder à fond... je n'en suis qu'à la découverte !

Bon mais pour en revenir à ta problématique je pense que le module Flag (http://drupal.org/project/flag) peut éventuellement être une piste sur lequel je me pencherai si j'étais toi :
- il est intégré avec Views
- on peut afficher les flags comme case à cocher directement depuis le formulaire d'édition d'un noeud
- il supporte Token
- et surtout, il est intégré avec Actions

Potentiellement ça permettrait de créer des flags comme par exemple 5000 km ou 3000 € et déclencher des actions conditionnelle comme l'envoi d'un email "token-isé" alertant l'utilisateur des contenus flaggués avec ces valeurs seuil... Aussi l'utilisateur peut normalement gérer ses flags via son profil.

Mais là je théorise car je n'ai jamais mis ça en oeuvre, juste la première idée qui me vient par rapport à ton problème ce n'est peut-être pas applicable mais à tester à mon avis...

Bon je crois que je vais garder Flags pour proposer aux membres de sauvegarder des annonces dans leur compte, et surement pour d'autres choses quand j'aurais pris le temps de le prendre en main.

Merci pour l'info en tout cas !

Je pense que je vais partir sur la piste des champs de profils personnalisés, ça m'a l'air pas mal ! Pour la requete, je me creuserai la tete !

Je vous ferai part de l'avancement ici !

Je vais essayer avec Rules : exectuer un code PHP à la publication d'un contenu de type Annonce.

Comme ça dès que mon action a lieu, j'execute le code PHP qui va bien pour aller chercher les utilisateurs intéressés par cette annonce.

Par contre comment fait-on avec Drupal pour excecuter des requetes sur la base de données ? Si je fais quelque chose du genre mysql_query($marequete); ça va marcher ? Ou il faut procéder de manière spécifique ?

Merci

Bonjour !

J'ai finalement utilisé le module Profile pour ajouter un onglet et des champs supplémentaire aux profils utilisateurs.

Donc un onglet "Alerte mail" avec des champs supplémentaires "Marque", "Modele", "Prix max", etc.

Ensuite j'ai crée un script PHP qui est appelé à chaque publication d'annonce et qui va chercher tous les utilisateurs "interressés" par cette annonce, en fonction des critères. Je ne vais pas détailler le code ici, mais voici les grandes étapes :

1) Selection de l'ensemble des criteres tous users confondus
2) Pour chaque user, on va voir si l'annonce correspond aux criteres enregistrés (champs profile)
3) Si les caractéristiques de l'annonce correspondent aux critères de l'user, on lui envoi une alerte mail et on enregistre l'action dans le watchdog.

Voila en gros...j'espère que ça peut t'aider !