French English German Italian Russian Spanish

Recherche

Ceci est un tutoriel pour prestashop 1.5 et 1.6 pour ajouter un champ dans le formulaire d'inscription de Prestashop pour tout client et pas seulement dans le formulaire d'adresse, cela fonctionne pour l'inscription "one step account mais aussi pour l'inscription compléte".

Les fichiers à modifier pour l'ajout d'un champ

4 fichiers sont à modifier pour ajouter une ligne au formulaire prestashop d'inscription

themes/NOM_DU_THEME/authentication.tpl

controllers/front/AuthController.php

class/Customer.php

controllers/admin/AdminCustomersController.php

Modification de la base de donnée Prestashop pour ajouter une colonne pour le client

ALTER TABLE `ps_customer` 
ADD `champ` VARCHAR(250)

A noter :

Adapter le préfixe de table que vous avez choisi dans votre installation prestashop au lieu de "ps_"

La taille, le nom et le format du champ "champ" sont à décider selon votre besoin.

Modification du formulaire d'authentification Prestashop

Tout se joue dans themes/NOM_DU_THEME/authentication.tpl

Vous pouvez ajouter votre code là ou vous le souhaitez dans le fichier en adaptant par rapport à la présentation du code (div, p, span ...)

<div class="text">

<label for="champ">{l s='Champ'}</label>

<input name="champ" type="text" class="" id="champ" />

</div>

 Vous pouvez chercher dans le code lastname par exemple et faire un même paragraphe mais avec votre "champ"

Modification du controller Prestashop avec le nouveau champ

Là on est dans le lourd, 3 modifications sont nécessaires dans le fichier controllers/front/AuthController.php :

Première

Dès que vous voyez : "$this->errors[] = Tools::displayError('Invalid date of birth.');"

Vous ajoutez juste en dessous : $customer->champ= $champ;

Seconde

ATTENTION la seconde modification est dure :) c'est la même chose mais comme le code existe en double dans le fichier on reprend :

Dès que vous voyez : "$this->errors[] = Tools::displayError('Invalid date of birth.');"

Vous ajoutez juste en dessous : $customer->champ= $champ;

Troisième

Cherchez ce bout de code

$this->context->customer = $customer;

$this->context->smarty->assign('confirmation', 1);

$this->context->cookie->id_customer = (int)$customer->id;

Et ajoutez juste en dessous : 

$this->context->cookie->customer_champ = $customer->champ;

Modification du customer.php pour ajouter le champ

Dans le fichier class/Customer.php

Etape 1

juste après : public $id;

ajoutez :

public $champ;

Etape 2

juste après la définition :

'firstname' => array('type' => self::TYPE_STRING, 'validate' => 'isName', 'required' => true, 'size' => 32),

Ajoutez :

'champ' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'required' => true, 'size' => 20),

size est la taille à modifier suivant la déclaration faite dans la table.

nous avons mis le "champ" en obligatoire avec l'option required => true, changer à false si vous ne voulez pas.

Voir sa nouvelle variable dans l'administration des clients Prestashop

Maintenant nous allons ajoutez le "champ" dans le résumé des clients de votre boutique :

A la place de :

  'title' => $this->l('Last visit'),

  'width' => 100,

  'type' => 'datetime',

  'search' => false,

  'havingFilter' => true

  )

);

vous placez le code suivant :

  'title' => $this->l('Last visit'),

  'width' => 100,

  'type' => 'datetime',

  'search' => false,

  'havingFilter' => true

  ),

  'champ' => array(

  'title' => $this->l('champ'),

  'width' => 'auto',

  'search' => true

  )

);

J'espère que ce petit tutoriel vous a aidé, bon code Prestashop ...