Jump to content

Retirer bloc newsletter quand on connait déjà l'email


 Share

Recommended Posts

Bonjour tout le monde,

Comme le dit le titre, je souhaiterais retirer le bloc newsletter (du module ps_emailsubscription) lorsque le client a déjà souscrit à la newsletter ce qui paraît LOGIQUE, mais pas pour les développeurs qui ont codé ce module natif apparemment.

image.thumb.png.d042312db88bbefbc63f0a51838104e5.png

Je connais un peu le code smarty, j'aimerais juste connaître la condition (nom de variable ? requête SQL obligatoire ?) me permettant de satisfaire cette requête.

Merci à tous d'avance.

Edited by Mth-presta (see edit history)

Share this post


Link to post
Share on other sites

Possible mais pas infaillible si l'internaute n'est pas connecté. Sans on email on ne peut rien faire.

Vérifiez si l'email du cookie présent est dans la table ps_newsletter ou dans la table ps_customer avec le champ newsletter à 1

Share this post


Link to post
Share on other sites

Pour ceux que ça intéresse, je viens de réussir et la méthode est assez simple je dois dire.

 

En analysant bien le code du fichier ps_emailsubscription.tpl, on remarque qu'à la ligne 37, une variable smarty existe déjà "nw_error".image.png.9213eef0a42b9f9612aa1343f4309f8e.png

Cette condition est vérifiée si nw_error vaut true, c'est-à-dire lorsque l'email a déjà souscrit à la newsletter !

Il suffit simplement de rajouter un bloc {if $nw_error} encadrant tout le code du fichier de template.

Edited by Mth-presta (see edit history)

Share this post


Link to post
Share on other sites

Il y a 4 heures, Mth-presta a dit :

Pour ceux que ça intéresse, je viens de réussir et la méthode est assez simple je dois dire.

 

En analysant bien le code du fichier ps_emailsubscription.tpl, on remarque qu'à la ligne 37, une variable smarty existe déjà "nw_error".image.png.9213eef0a42b9f9612aa1343f4309f8e.png

Cette condition est vérifiée si nw_error vaut true, c'est-à-dire lorsque l'email a déjà souscrit à la newsletter !

Il suffit simplement de rajouter un bloc {if $nw_error} encadrant tout le code du fichier de template.

Vous êtes certain de cela ?

La variable $nw_error ne serait elle pas simplement renseigné lorsque le module retourne une erreur lors de l'inscription d'une adresse email ?

Share this post


Link to post
Share on other sites

En ayant fait un test, j'ai remarqué que la variable $nw_error permettait également de retourner la valeur "L'adresse email est déjà vérifiée" lorsque l'utilisateur s'était déjà inscrit à la newsletter. J'en ai conclue que cette erreur vérifiait la présence de l'adresse mail en base.

Mais après vérification, cela ne fonctionne pas comme prévu (bloc non présent même lors du vidage du cache) car forcément, si un seul enregistrement en base pour le champs newsletter vaut 1, alors la variable $nw_error vaut toujours vraie. Je ne sais du coup pas exactement quelle condition vérifie cette erreur. C'est mon gros problème avec les variables smarty qui sortent de nul part .. et aucune information dans la documentation.

Share this post


Link to post
Share on other sites

La variable smarty ne sort pas de nul part, elle est générée lors du test de validation d'inscription d'une adresse dans le module, il suffit de regarder le code source du module en question.

Pour votre besoin, soit vous développez un module tiers qui va tester sur chaque page (on peut utiliser un cache) si l'adresse email enregistrée dans les cookies lorsqu'un client est connecté est oui ou non inscrite à la newsletter et produire un code en conséquence pour cacher ou non le module d'inscription.

Soit vous modifiez directement ce module par une surcharge ou autre pour cacher le module.

Dans tous les cas, vous risquez de provoquer des effets de bord sur le design de votre site en cachant un élément de cette manière.

Share this post


Link to post
Share on other sites

C'est génial....

Vous posez une question, je vous donne le moyen de vérifier, vous décidez de faire autrement en utilisant une variable qui vous semble sympa sans savoir réellement comment sa valeur a été affectée puis vous vous rendez compte que ça ne fonctionne pas comme vous l'auriez voulu.

Vous voulez quoi en fait ? Qu'on vous écrive le code ou essayer de comprendre ce que vous faites ?

  • Confused 1

Share this post


Link to post
Share on other sites

Il y a 3 heures, Mediacom87 a dit :

La variable smarty ne sort pas de nul part, elle est générée lors du test de validation d'inscription d'une adresse dans le module, il suffit de regarder le code source du module en question.

Pour votre besoin, soit vous développez un module tiers qui va tester sur chaque page (on peut utiliser un cache) si l'adresse email enregistrée dans les cookies lorsqu'un client est connecté est oui ou non inscrite à la newsletter et produire un code en conséquence pour cacher ou non le module d'inscription.

Soit vous modifiez directement ce module par une surcharge ou autre pour cacher le module.

Dans tous les cas, vous risquez de provoquer des effets de bord sur le design de votre site en cachant un élément de cette manière.

Merci pour votre retour constructif. Je me doutais un peu qu'en disant "nul part" ça allait en titiller certain haha. Je ne savais simplement pas où regarder exactement. Merci à vous en tout cas je vais essayer dans ce sens.

Share this post


Link to post
Share on other sites

Il y a 2 heures, Eolia a dit :

C'est génial....

Vous posez une question, je vous donne le moyen de vérifier, vous décidez de faire autrement en utilisant une variable qui vous semble sympa sans savoir réellement comment sa valeur a été affectée puis vous vous rendez compte que ça ne fonctionne pas comme vous l'auriez voulu.

Vous voulez quoi en fait ? Qu'on vous écrive le code ou essayer de comprendre ce que vous faites ?

Que dire ... Un petit café peut-être ?

Ma question paraissait claire, je voulais qu'on m'aiguille, pas qu'on fasse le boulot à ma place. Vous m'avez donné une piste, qui vous dit qu'il n'y en a pas d'autres ?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More