Mth-presta Posted September 29, 2020 Share Posted September 29, 2020 (edited) 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. 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 September 29, 2020 by Mth-presta (see edit history) Link to comment Share on other sites More sharing options...
Eolia Posted September 29, 2020 Share Posted September 29, 2020 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 Link to comment Share on other sites More sharing options...
Mth-presta Posted September 29, 2020 Author Share Posted September 29, 2020 Je vais regarder de ce côté. Merci pour ce retour rapide 😄 Link to comment Share on other sites More sharing options...
Mth-presta Posted September 29, 2020 Author Share Posted September 29, 2020 (edited) 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". 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 September 29, 2020 by Mth-presta (see edit history) Link to comment Share on other sites More sharing options...
Mediacom87 Posted September 29, 2020 Share Posted September 29, 2020 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". 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 ? Link to comment Share on other sites More sharing options...
Mth-presta Posted September 29, 2020 Author Share Posted September 29, 2020 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. Link to comment Share on other sites More sharing options...
Mediacom87 Posted September 30, 2020 Share Posted September 30, 2020 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. Link to comment Share on other sites More sharing options...
Eolia Posted September 30, 2020 Share Posted September 30, 2020 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 ? 1 Link to comment Share on other sites More sharing options...
Mth-presta Posted September 30, 2020 Author Share Posted September 30, 2020 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. Link to comment Share on other sites More sharing options...
Mth-presta Posted September 30, 2020 Author Share Posted September 30, 2020 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 ? Link to comment Share on other sites More sharing options...
Eolia Posted September 30, 2020 Share Posted September 30, 2020 On peut réinventer la roue aussi, effectivement... mais depuis 11 ans que je travaille sur le code Prestashop et pour votre cas précis je vous ai donné le moyen le plus court. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now