almur316 Posted November 25, 2014 Share Posted November 25, 2014 (edited) Bonjour, Je précise d'abord que je suis sous PS 1.6.0.9 et que j'utilise le thème de base. Je souhaite ajouter les champs Civilité, Prénom, Nom pour l'inscription à la newsletter. J'ai édité le fichier theme/default-bootstrap/modules/blocknewsletter/blocknewletter.tpl et j'ai ajouté mes 3 champs : <form action="{$link->getPageLink('index')|escape:'html':'UTF-8'}" method="post"> <input type="text" name="gender" size="18" placeholder="Votre prénom" /> <input type="text" name="firstname" size="18" placeholder="Votre prénom" /> <input type="text" name="lastname" size="18" placeholder="Votre prénom" /> <input type="text" name="email" size="18" placeholder="Votre email" /> <button type="submit" name="submitNewsletter" class="btn btn-default button button-small"> <span>{l s='Ok' mod='blocknewsletter'}</span> </button> <input type="hidden" name="action" value="0" /> </form> Ensuite, dans le fichier modules/blocknewsletter/blocknewsletter.php, j'ai ,modifié la fonction registerGuest de la façon suivante : protected function registerGuest($email, $firstname, $active = true) { $sql = 'INSERT INTO '._DB_PREFIX_.'newsletter (id_shop, id_shop_group, email, gender, firstname, lastname, newsletter_date_add, ip_registration_newsletter, http_referer, active) VALUES ('.$this->context->shop->id.', '.$this->context->shop->id_shop_group.', \''.pSQL($email).'\', \''.pSQL($gender).'\', \''.pSQL($firstname).'\', \''.pSQL($lastname).'\', NOW(), \''.pSQL(Tools::getRemoteAddr()).'\', ( SELECT c.http_referer FROM '._DB_PREFIX_.'connections c WHERE c.id_guest = '.(int)$this->context->customer->id.' ORDER BY c.date_add DESC LIMIT 1 ), '.(int)$active.' )'; return Db::getInstance()->execute($sql); } Enfin, dans la table ps_newsletter, j'ai ajouté les champs 'gender', 'firstname' et 'lastname' juste après le champ 'email'. Or, seul le champ 'email' s'enregistre dans la table ps_newsletter. Les champs ajoutés, 'gender', 'firstname' et 'lastname' restent désespérément vides ! Auriez-vous une idée pour solutionner mon problème ? Par avance merci. Almur Edited November 26, 2014 by almur316 (see edit history) Link to comment Share on other sites More sharing options...
prestasafe Posted November 25, 2014 Share Posted November 25, 2014 C'est tout a fait normal car vous ne recuperez pas les valeurs des champs juste avant l'insertion Par ex pour le lastname juste avant le $sql placez $lastname = Tools::getValue('lastname'); Et faites pareil pour ceux qu'ils vous manquent. Cordialement 1 Link to comment Share on other sites More sharing options...
almur316 Posted November 26, 2014 Author Share Posted November 26, 2014 Bonjour, Super ! ça marche. J'avais bien détecté que les champs du formulaire n'étaient pas transmis. Mais je ne voyais pas où était le problème. Juste une question supplémentaire pour mon info : j'ai donc sur vos conseils, ajouté 3 lignes pour transmettre mes 3 champs supplémentaire (gender, firstname et lastname). Comment est transmis le champ 'email' ? Je vois pas de ligne du type : $email = Tools::getvalue('email'); ? En tout cas merci beaucoup et bonne journée. Almur Link to comment Share on other sites More sharing options...
prestasafe Posted November 26, 2014 Share Posted November 26, 2014 Bonjour, Le champs email lui est transmis dans les paramètres de la methode protected function registerGuest($email, $firstname, $active = true) { ..... CODE ... } on peut voir le registerGuest($email) Vous aurez pu faire de la même maniere c'est à dire protected function registerGuest($email, $firstname,$lastname,$gender $active = true) { ..... CODE ... } Mais cela vous aurez fait modifier l'appel également lorsque que le formulaire est soumis il aurait fallu placer les nouveaux champs en amout de la methode puis les placer dans les paramètres de celle ci. 1 Link to comment Share on other sites More sharing options...
almur316 Posted November 26, 2014 Author Share Posted November 26, 2014 D'accord, je comprend. Merci d'avoir pris du temps et pour vos explications claires. Bonne journée. Almur Link to comment Share on other sites More sharing options...
prestasafe Posted November 26, 2014 Share Posted November 26, 2014 Si c'est claire tant mieux car c'est assez rare bonne journée Link to comment Share on other sites More sharing options...
mpellerin Posted January 30, 2019 Share Posted January 30, 2019 Bonjour, J'ai bien suivi les recommandations et cela fonctionne très bien. En revanche j'aimerai utiliser la variable "firstname et lastname" enregistré dans la PS_newsletter pour les inserer dans l'email de confirmation d'inscription. Mais cela ne fonctionne pas... Auriez vous une idée ? Merci PS ver 1.6.12 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