Afficher des champs extras dans le formulaire d’inscription à une newsletter

, par jeanmarie

Vous avez créé des champs extras pour avoir des informations complémentaires sur les inscrits à votre newsletter (ville, code postal...) mais ils n’apparaissent pas par magie dans le formulaire public d’inscription ?

Voici comment les afficher avec les fonctions formulaire_charger et pre_insertion.

Créez un petit plugin nommé CForm (préfixe cform) avec 2 fichiers :

paquet.xml

  1. <paquet
  2.         prefix="cform"
  3.         categorie="communication"
  4.         version="1.0.0"
  5.         etat="test"
  6.         compatibilite="[3.2.0;3.2.*]"
  7. >
  8.  
  9.         <nom>Champs Extras dans le formulaire d'inscription à la newsletter</nom>
  10.        
  11.         <pipeline nom="formulaire_charger" inclure="cform_pipelines.php" />
  12.         <pipeline nom="pre_insertion" inclure="cform_pipelines.php" />
  13.  
  14.         <necessite nom="cextras" compatibilite="[3.11.0;]" />
  15.        
  16. </paquet>

Télécharger

cform_pipelines.php

  1. <?php
  2.  
  3. if (!defined('_ECRIRE_INC_VERSION')) return;
  4.  
  5. function cform_formulaire_charger($flux) {
  6.     if ($flux['args']['form'] == 'newsletter_subscribe') {
  7.         include_spip('inc/cextras');
  8.         if ($saisies = cextras_obtenir_saisies_champs_extras('mailsubscribers')) {
  9.             $flux['data']['_champs_extras_saisies'] = $saisies;
  10.         }
  11.     }
  12.     return $flux;
  13. }
  14.  
  15. function cform_pre_insertion($flux) {
  16.         if ($flux['args']['table'] == 'spip_mailsubscribers') {
  17.                 include_spip('cextras_pipelines');
  18.                 $_flux = $flux;
  19.                 $_flux['args']['id_objet'] = null;
  20.                 $_flux = cextras_pre_edition($_flux);
  21.                 $flux['data'] = $_flux['data'];
  22.         }
  23.         return $flux;
  24. }

Télécharger

Et... ben c’est tout !

Activez ce plugin et les champs extras créés via le plugin Champs Extras Interface ou directement via l’API Champs Extras (voir la doc) apparaitront dans le formulaire public.

Sur contrib : https://contrib.spip.net/5184