{"id":1023,"date":"2015-06-29T15:08:54","date_gmt":"2015-06-29T13:08:54","guid":{"rendered":"http:\/\/www.h-hennes.fr\/blog\/?p=1023"},"modified":"2018-11-22T18:17:48","modified_gmt":"2018-11-22T16:17:48","slug":"prestashop-ajouter-des-champs-a-linscription","status":"publish","type":"post","link":"https:\/\/www.h-hennes.fr\/blog\/2015\/06\/29\/prestashop-ajouter-des-champs-a-linscription\/","title":{"rendered":"Prestashop : Ajouter des champs \u00e0 l&rsquo;inscription"},"content":{"rendered":"<p>C&rsquo;est une question qui revient souvent sur Prestashop, comment ajouter des champs lors de l&rsquo;inscription d&rsquo;un client ?<br \/>\nNous allons voir ensemble comment r\u00e9aliser cela simplement.<\/p>\n<p>Pour l&rsquo;exemple, nous allons permettre \u00e0 l&rsquo;utilisateur de choisir son groupe client lors de l&rsquo;inscription.<br \/>\nSi vous souhaiter rajouter des champs dans le formulaire d&rsquo;\u00e9dition client, vous pouvez consulter l&rsquo;article : <a href=\"https:\/\/www.h-hennes.fr\/blog\/2015\/10\/25\/prestashop-ajouter-des-champs-edition-dun-client\/\" target=\"_blank\" rel=\"noopener\">Prestashop : Ajouter des champs dans l\u2019\u00e9dition client<\/a><br \/>\nSi vous souhaitez pouvoir envoyer des fichiers lors de la cr\u00e9ation du compte client vous pouvez consulter l&rsquo;article : <a href=\"https:\/\/www.h-hennes.fr\/blog\/2016\/02\/18\/prestashop-envoyer-des-fichiers-lors-de-la-creation-du-compte-client\/\" target=\"_blank\" rel=\"noopener\">Prestashop : Envoyer des fichiers lors de la cr\u00e9ation du compte client<\/a><\/p>\n<p><strong>Edit :<\/strong> Le fonctionnement change avec prestashop 1.7 , consulter l&rsquo;article pour le tutoriel actualis\u00e9 : <a href=\"https:\/\/www.h-hennes.fr\/blog\/2017\/10\/10\/prestashop-1-7-ajouter-des-champs-clients\/\">Prestashop 1.7 : Ajouter des champs clients<\/a><\/p>\n<p>Pour faire cela nous allons cr\u00e9er un nouveau module qui va se greffer sur les hooks prestashop disponibles pour cet usage :<\/p>\n<ul>\n<li><strong>displayCustomerAccountForm<\/strong> : ce hook permets de rajouter du contenu dans le formulaire de cr\u00e9ation de compte.<\/li>\n<li><strong>actionCustomerAccountAdd<\/strong> : ce hook permets de r\u00e9cup\u00e9rer les informations transmises lors de la cr\u00e9ation du compte client.<\/li>\n<\/ul>\n<p>C&rsquo;est donc parti pour le code du module qui va s&rsquo;appeller hhregistration<br \/>\nCr\u00e9er un fichier dans <em>modules\/hhregistration\/hhregistration.php<\/em> avec le contenu suivant :<br \/>\n( les diff\u00e9rentes fonctions sont comment\u00e9es )<\/p>\n<pre lang=\"php\" escaped=\"true\">&lt;?php\r\n\r\n\/**\r\n\u00a0* Module Hh Registration : Ajout de champs au formulaire d'inscription\r\n\u00a0*\r\n\u00a0*\/\r\nclass hhregistration extends Module\r\n{\r\n\r\n\u00a0\u00a0 \u00a0public function __construct()\r\n\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$this-&gt;name = 'hhregistration';\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$this-&gt;tab = 'hhennes';\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$this-&gt;author = 'hhennes';\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$this-&gt;version = '0.1.0';\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$this-&gt;need_instance = 0;\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0parent::__construct();\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$this-&gt;displayName = $this-&gt;l('HH Registration');\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$this-&gt;description = $this-&gt;l('Sample module which show how to add fields to registration');\r\n\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0 \u00a0\/**\r\n\u00a0\u00a0 \u00a0 * Installation du module : Installation Standard + greffe sur les hooks n\u00e9cessaires\r\n\u00a0\u00a0 \u00a0 * @return boolean\r\n\u00a0\u00a0 \u00a0 *\/\r\n\u00a0\u00a0 \u00a0public function install()\r\n\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0if (\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0!parent::install() || !$this-&gt;registerHook('displayCustomerAccountForm') || !$this-&gt;registerHook('actionCustomerAccountAdd')\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0)\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0return false;\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0return true;\r\n\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0 \u00a0\/**\r\n\u00a0\u00a0 \u00a0 * D\u00e9sintallation du module\r\n\u00a0\u00a0 \u00a0 * @return boolean\r\n\u00a0\u00a0 \u00a0 *\/\r\n\u00a0\u00a0 \u00a0public function uninstall()\r\n\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0if (!parent::uninstall())\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0return false;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0return true;\r\n\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0 \u00a0\/**\r\n\u00a0\u00a0 \u00a0 * Nouveaux champs \u00e0 rajouter sur le formulaire de cr\u00e9ation de compte\r\n\u00a0\u00a0 \u00a0 * @param type $params\r\n\u00a0\u00a0 \u00a0 *\/\r\n\u00a0\u00a0 \u00a0public function hookDisplayCustomerAccountForm($params)\r\n\u00a0\u00a0 \u00a0{\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/R\u00e9cup\u00e9ration des groupes clients Prestashop\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$groups = Group::getGroups($this-&gt;context-&gt;language-&gt;id);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/On supprime les groupes syst\u00e8mes de prestashop ( Les 3 premiers ids )\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0unset($groups[0]);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0unset($groups[1]);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0unset($groups[2]);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n        \/\/Assignation des variables au template\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$this-&gt;context-&gt;smarty-&gt;assign('customerGroups', $groups);\r\n        \r\n        \/\/Affichage du template du module ( situ\u00e9 dans views\/templates\/hook )\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0return $this-&gt;display(__FILE__, 'hookDisplayCustomerAccountForm.tpl');\r\n\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0 \u00a0\/**\r\n\u00a0\u00a0 \u00a0 * Traitement des nouveaux champs du formulaire d'inscription\r\n\u00a0\u00a0 \u00a0 *\/\r\n\u00a0\u00a0 \u00a0public function hookActionCustomerAccountAdd($params)\r\n\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/On r\u00e9cup\u00e8re notre variable groupe\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$id_customer_group = Tools::getValue('customer_group','');\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/Si elle n'est pas vide on ajoute le client au groupe\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0if ( $id_customer_group != '')\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$params['newCustomer']-&gt;addGroups(array($id_customer_group));\r\n\r\n\u00a0\u00a0 \u00a0}\r\n\r\n}\r\n<\/pre>\n<p>Cr\u00e9ez ensuite un fichier dans modules<em>\/hhregistration\/views\/templates\/hook\/hookDisplayCustomerAccountForm.tpl\u00a0 <\/em>avec le contenu suivant<\/p>\n<pre lang=\"smarty\" escaped=\"true\">{* Template d'affichage du module hhregistration *}\r\n&lt;!-- Module hhregistration --&gt;\r\n&lt;div class=\"form-group\"&gt;\r\n\u00a0\u00a0\u00a0 &lt;label for=\"customer-group\"&gt;{l s='Customer group' mod='hhregistration'}&lt;\/label&gt;\r\n\u00a0\u00a0\u00a0 &lt;select name=\"customer_group\" id=\"customer_group\" class=\"form-control\"&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;option value=\"\"&gt;{l s='Choose your customer group' mod='hhregistration'}&lt;\/option&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {foreach from=$customerGroups item=group}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;option value=\"{$group.id_group}\"&gt;{$group.name}&lt;\/option&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\/foreach}\r\n\u00a0\u00a0\u00a0 &lt;\/select&gt;\r\n&lt;\/div&gt;\r\n&lt;!-- Module hhregistration --&gt;\u00a0 \r\n<\/pre>\n<p>Installer le module, cr\u00e9ez de nouveaux groupes clients et le rendu sera similaire \u00e0 cette capture :<\/p>\n<p><a href=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2015\/06\/prestashop-champ-inscription.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1024\" src=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2015\/06\/prestashop-champ-inscription.jpg\" alt=\"prestashop-champ-inscription\" width=\"300\" height=\"584\" srcset=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2015\/06\/prestashop-champ-inscription.jpg 300w, https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2015\/06\/prestashop-champ-inscription-154x300.jpg 154w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>C&rsquo;est une question qui revient souvent sur Prestashop, comment ajouter des champs lors de l&rsquo;inscription d&rsquo;un client ? Nous allons voir ensemble comment r\u00e9aliser cela simplement. Pour l&rsquo;exemple, nous allons permettre \u00e0 l&rsquo;utilisateur de choisir son groupe client lors de l&rsquo;inscription. Si vous souhaiter rajouter des champs dans le formulaire d&rsquo;\u00e9dition client, vous pouvez consulter [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[245],"tags":[363,362,104],"class_list":["post-1023","post","type-post","status-publish","format-standard","hentry","category-prestashop-2","tag-hooks","tag-inscription","tag-prestashop","prestashop-1-5","prestashop-1-6","prestashop-1-7","prestashop-1-7-7","prestashop-1-7-8","prestashop-8-0","prestashop-8-1"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/1023","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/comments?post=1023"}],"version-history":[{"count":6,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/1023\/revisions"}],"predecessor-version":[{"id":1630,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/1023\/revisions\/1630"}],"wp:attachment":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/media?parent=1023"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/categories?post=1023"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/tags?post=1023"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}