Jump to content
almur316

[Résolu]Ajouter des champs dans le formulaire d'inscription à la newsletter

Recommended Posts

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 by almur316 (see edit history)

Share this post


Link to post
Share on other sites

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

  • Like 1

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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.

:)

  • Like 1

Share this post


Link to post
Share on other sites

D'accord, je comprend.

Merci d'avoir pris du temps et pour vos explications claires.

Bonne journée.

 

Almur

Share this post


Link to post
Share on other sites

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

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

×
×
  • Create New...

Important Information

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