Personnaliser les formulaires d’abonnement de SPIP-listes

SPIP-Listes crée deux balises SPIP qui permettent d’afficher les formulaires d’abonnement et de désabonnement.

-  #FORMULAIRE_ABONNEMENT
-  #FORMULAIRE_MODIF_ABONNEMENT

[SPIP 2] Un formulaire simplifié facile à modifier (CVT en SPIP 2) est également disponible #FORMULAIRE_SPIP_LISTES_INSCRIPTION. Idéal pour la page d’accueil du site par exemple.

SPIP-listes fournit ces deux balises dans un fichier abonnement.html.

Vous pouvez naturellement placer le formulaire d’abonnement dans n’importe quel squelette. Par exemple : insérez #FORMULAIRE_ABONNEMENT sur le squelette de la page d’accueil.

SPIP-listes [1.9.2] utilise la balise #FORMULAIRE_MODIF_ABONNEMENT pour gérer les abonnés qui reviennent sur le site via le lien mis dans un courrier. Cette balise doit nécessairement se trouver dans un squelette portant le nom « abonnement.html ».

Fonctionnement de la balise #FORMULAIRE_ABONNEMENT

** Affichage par défaut **

L’affichage de la balise #FORMULAIRE_ABONNEMENT s’adapte au nombre de listes que vous avez créées :

  • avec 0 ou 1 liste, le formulaire s’affiche sans préciser le titre de la liste de diffusion,
  • à partir de 2 listes, le formulaire présente le titre des listes avec une case à cocher.

** Affichage pour une liste en particulier **

[Plugin 1.9b2] Pour afficher un formulaire d’abonnement pour une liste en particulier, utiliser la notation #FORMULAIRE_ABONNEMENT{liste12} où 12 est le numéro de la liste.

Personnaliser l’apparence du formulaire d’abonnement

** Personnaliser l’apparence générale **

Pour modifier le formulaire d’abonnement, faites une copie du fichier formulaire_abonnement.html situé dans le répertoire /formulaires de SPIP-listes. Appelez-le par exemple, mon_formulaire_abonnement.html et éditez son code pour modifier l’aspect du formulaire. Déposez-le également dans le répertoire /formulaires du plugin.

Pour utiliser votre formulaire dans vos squelettes, il suffit d’indiquer son nom en paramètre de la balise : par exemple #FORMULAIRE_ABONNEMENT{mon_formulaire_abonnement}

** [1.9.2] Personnaliser l’apparence pour une liste en particulier**

Si vous avez créé plusieurs listes et souhaitez proposer un formulaire d’abonnement dédié à une seule liste : faites une copie du fichier formulaire_abonnement_une_liste.html situé dans le répertoire /formulaires de SPIP-listes. Appelez-le par exemple, formulaire_abonnement_maliste12.html et éditez son code pour modifier l’aspect du formulaire. Déposez-le également dans le répertoire /formulaires du plugin.

Pour utiliser votre formulaire dans vos squelettes, il suffit d’indiquer son nom en paramètre de la balise : par exemple #FORMULAIRE_ABONNEMENT{formulaire_abonnement_maliste12}

Discussion

23 discussions

  • Salut,

    Je rejoins les remarques de Manu ci-dessous. Le fonctionnement des formulaires d’inscription par défaut n’est pas très clair ni très pratique...

    Ce que je voulais dire , c’est que lorsque l’internaute donne son adresse mail, il pense être inscrit C’est tout particulièrement vrai dans le cas de l’inscription en un clic puisqu’il ne choisit pas la liste à laquelle il veut s’inscrire. Il s’inscrit, c’est tout. Qu’on lui demande de confirmer, ça peut se comprendre. Mais ce qui est difficile à comprendre c’est qu’il reçoit un mail lui disant qu’il n’est pas inscrit et il faut qu’il coche la liste à laquelle il veut s’inscrire....

    Il me semble que donner son mail devrait suffire à l’inscrire. La confirmation est chargée de... confirmer ou de renoncer : le mail devrait lui dire qu’il est abonné ( = la case est cochée) et qu’il doit confirmer.
    Enfin, il me semble... non ?

    Comment modifier les messages de confirmation pour avoir juste un lien à cliquer pour confirmer ? (et donc pas de page avec formulaire pour re-cocher la liste à nouveau), avec un texte plus clair et plus court.

    J’ai peur qu’en l’état la plupart des gens renoncent, ou croient qu’ils sont déjà inscrits...

    Merci !

    Répondre à ce message

  • 2
    Philippe B

    Bonsoir,

    J’utilise SPIP-listes (3.0.6-66570) et j’ai créé une liste de diffusion publique.

    En mettant la balise #FORMULAIRE_ABONNEMENT (#FORMULAIRE_MODIF_ABONNEMENT) dans mes squelettes, rien ne s’affiche.

    Y a-t-il une condition supplémentaire pour que le formulaire s’affiche ?

    Merci de votre aide.

    Philippe

    • Philippe B

      Bonjour,

      Je n’arrive pas à afficher le formulaire FORMULAIRE_ABONNEMENT (voir mon message du 15/10/2012, et j’utilise donc le formulaire SPIP_LISTE_INSCRIPTION, mais je n’arrive pas à traduire complètement le formulaire (en particulier le libellé du champ adresse email, et les messages d’erreur).

      Je modifie le fichier spip_liste_en.php sans succès.

      Merci de votre aide !

      Philippe B

    • Le formulaire d’abonnement #FORMULAIRE_ABONNEMENT est corrigé depuis mes commits d’aujourd’hui. Utilisez la version 3.0.10 de SPIP-Listes au minimum.

    Répondre à ce message

  • 10

    Hello,
    il y a un truc que je ne pige pas... Lorsqu’il n’y a qu’une liste, la liste des listes n’apparait pas. Très bien.

    Cela dit, lorsque un visiteur renseigne son adresse mail, il reçoit ensuite un mail de confirmation lui souhaitant la bienvenue sur les listes de diffusion, mais lui disant également qu’il n’est pas inscrit ! Il faut qu’il clique sur le lien lui permettant de choisir son format de réception etc...
    C’est pas très logique comme fonctionnement : si il n’y a qu’une liste, pourquoi n’est-il pas automatiquement inscrit à cette liste ? Il y a un truc qui m’échappe...

    • Le message est à revoir, en effet.
      Le principe :
      -  le formulaire attend une adresse
      -  il envoie la confirmation, qui demande confirmation via un lien, qui modifie...
      -  le statut de l’abonné passe de ’a valider’ à ’valide’
      -  ce qui permet l’envoi limité à ceux qui ont confirmé leur souhait.
      Par contre, je ne sais plus si tout est dans le code.

      Et pour ce qui est de valider l’abonnement à la liste (l’inscrire), à voir.

    • Je viens de passer un peu de temps à prendre mes points de repère dans le fonctionnement de la bête... Dans le cas (fréquent, j’imagine) d’un site qui propose 1 seule liste de diffusion, je trouve qu’il y a un truc qui ne va pas

      C’est tout de même difficilement compréhensible pour un visiteur lambda de recevoir un mail de confirmation qui lui dit qu’il n’est pas inscrit (OK, on peut adapter le texte du message) et qui contient un lien vers une page du site qui lui montre une page où figure une checkbox non cochée : il se dit, ben mince, je ne suis pas inscrit !

      Si on parle de confirmation, ben, il faudrait juste avoir à... confirmer, non ? Ce qui suppose que, au moins dans le cas d’une seule liste, le remplissage du premier formulaire provoque l’inscription à la liste... C’est incompréhensible sinon. Enfin, il me semble, non ?

    • Pas de réaction... euh, j’ai dit une connerie ? Ça me semblait pourtant une bonne idée...

    • Pour ma part, j’hésite.
      Si j’abonne quelqu’un d’autre, je préfère attendre qu’il confirme son abonnement avant de lui envoyer le premier courrier.
      Ça me semble plus correct.
      Mais il y a peut-être une autre solution. Parrainage...

    • J’ai du mal m’exprimer...

      Ce que je voulais dire , c’est que lorsque l’internaute donne son adresse mail, il pense être inscrit C’est tout particulièrement vrai dans le cas de l’inscription en un clic puisqu’il ne choisit pas la liste à laquelle il veut s’inscrire. Il s’inscrit, c’est tout. Qu’on lui demande de confirmer, ça peut se comprendre. Mais ce qui est difficile à comprendre c’est qu’il reçoit un mail lui disant qu’il n’est pas inscrit et il faut qu’il coche la liste à laquelle il veut s’inscrire....

      Il me semble que donner son mail devrait suffire à l’inscrire. La confirmation est chargée de... confirmer ou de renoncer : le mail devrait lui dire qu’il est abonné ( = la case est cochée) et qu’il doit confirmer.
      Enfin, il me semble... non ?

    • Je suis parfaitement d’accord avec Manu qui exprime clairement mon problème.

      Pour moi, ce que veux mon client c’est une inscription avec un mail qui envoie la confirmation de l’inscription (et un lien pour se désinscrire). Je suis conscient que c’est une solution qui peux importuner des gens et qu’il y a un risque qu’un plaisantin abonne des gens qui ne le voudraient pas.

      Je peux réussir à le convaincre que ce qu’il lui faut c’est un mail avec un lien de confirmation qui aboutit à un formulaire clair où on dit en substance : bravo vous êtes bien inscrit, merci.

      Le formulaire actuel qui dit :

      Bienvenue sur les listes de diffusion du site xxx
      [...]
      Vous n’êtes pas abonné à une liste de diffusion.

      devrait plutôt dire :

      Bienvenue sur les listes de diffusion du site xxx
      [...]
      Vous êtes abonné à une liste de diffusion.

      le fait de suivre le lien devrait valider l’inscription et non le fait de valider le formulaire auquel mène le lien.

      Voilà le programme... Reste à le faire. Any ideas anybody ?

    • Ouiiiiiiiiiii ! Merci Pahure : enfin quelqu’un qui me comprend ! Qui s’étonne comme moi que le formulaire d’inscription ayant proposé à un internaute de s’abonner à une liste, ce dernier ne peut pas comprendre pourquoi il reçoit un mail lui disant... vous n’êtes abonné à aucune liste ! alors qu’il vient de s’abonner !!! Immanquablement, il se dit qu’il y a un truc qui déconne !

    • Il y a plusieurs formulaires d’abonnement. Et on s’y perd parfois. Le ménage est en cours.

      Avec celui appelé par

      http://<votre.site/spip.php?page=abonnement

      par exemple, un formulaire est proposé, avec la liste des listes. Une fois validé, l’inscrit reçoit un mail du style :

      Bonjour machin@example.org,
      Bienvenue sur les listes de diffusion du site aaa
      
      Votre format de réception : Texte enrichi (caractères en gras ou en italique) parfois accompagné d’images
      
      Vous êtes abonné à la liste de diffusion :
      
      - Balblabla 465
      
      Pour modifier votre abonnement cliquez sur ce lien pour accéder au formulaire présent sur le site.

      Et dans un autre formulaire, il y a différence entre être inscrit et être abonné.

    • Dans mes squelettes j’ai mis ces deux lignes :

      [(#PLUGIN{Z}|oui) <INCLURE{fond=structure}{env}{type=page}{composition=mon_abonnement} />]
      [(#PLUGIN{Z}|non) <INCLURE{fond=mon_abonnement-defaut}{env}>]

      plutôt que celles-ci, maintenant en REMarque

      [(#REM) #FORMULAIRE_ABONNEMENT{liste3}
                   #FORMULAIRE_SPIP_LISTES_INSCRIPTION{liste3}
                   #FORMULAIRE_INSCRIVEZ_VOUS
      ]

      J’ai copié abonnement.html et abonnement-default.html du dossier plugins/auto/spip-listes_1_9_3 dans mon dossier squelettes en les renommant mon_abonnement.html et mon_abonnement-default.html
      j’ai modifié mon_abonnement-default.html, en particulier parce qu’il entrait en conflit avec ma page d’accueil, j’ai laissé seulement le contenu du

      <div class='bloc'></div> 

      . Comme j’ai renommé la page

      spip.php ?page=abonnement

      ressemble toujours à quelque chose. Elle accepte toujours les inscriptions et les modifications de celles-ci, ouf.

      Deux cas sont distingués dans mon_abonnement-default.html :

      — affichage du formulaire de gestion d’abonnement

      #FORMULAIRE_GESTION_ABONNEMENT

      devient

      #FORMULAIRE_MA_GESTION_ABONNEMENT

      avec copie de plugins/auto/spip-listes_1_9_3/formulaires/gestion_abonnement.html et gestion_abonnement.php vers squelettes/formulaires/ma_gestion_abonnement.html et ma_gestion_abonnement.php.
      Il faut aussi changer le nom des trois fonctions dans ma_gestion_abonnement.php pour que ça marche... (voir le détail plus bas)

      — affichage du formulaire d’inscription :
      deux éléments :
      -*

      :spiplistes:abonnement_explication:

      pour changer ce message : éditer /plugins/auto/spip-listes_1_9_3/lang/spiplistes_fr.php (pour le fr, évidemment)
      pour moi : suppression du message

      :spiplistes:abonnement_explication:

      -*

      #FORMULAIRE_SPIP_LISTES_INSCRIPTION

      devient

      #FORMULAIRE_SPIP_LISTES_MON_INSCRIPTION

      J’ai copié vers squelettes/formulaires les fichiers spip_listes_inscription.php spip_listes_inscription.html pour les modifier sans soucis lors d’une mise à jour et les ai renommés spip_listes_mon_inscription.php spip_listes_mon_inscription.html
      Il faut aussi changer le nom des trois fonctions dans spip_listes_mon_inscription.php pour que ça marche :

      function formulaires_spip_listes_mon_inscription_charger_dist
      function formulaires_spip_listes_mon_inscription_verifier_dist
      function formulaires_spip_listes_mon_inscription_traiter_dist

      Du coup, l’affichage du formulaire d’inscription avec mon_abonnement est entièrement différent de la page abonnement

      Je m’attaque maintenant tranquillement dans spip_listes_mon_inscription.html au bouton liste de diffusion généré par le code :

      [(#ENV{id_liste}|non)
      		[(#INCLURE{fond=formulaires/inc-liste_des_listes}{env})]
      		]

      Je copie le fichier inc-liste_des_listes.html vers squelettes/formulaires/inc-liste_unique.html pour le modifier. En même temps j’ai renommé

      [(#INCLURE{fond=formulaires/inc-liste_des_listes}{env})]

      en

      [(#INCLURE{fond=formulaires/inc-liste_unique}{env})]

      Je voudrais que ce bouton ne soit pas affiché et qu’il soit implicite, puisqu’il n’y a qu’une liste ou qu’il soit déjà coché pour éviter des mails du genre « Vous n’êtes pas abonné à une liste de diffusion. »
      J’ai donc revu le input de la façon suivante :

      			<input type="hidden"
      				   class="checkbox"
      				   name="listes[]"
      				   value="#ID_LISTE"
      				   id="liste_#ID_LISTE"
      					 [#REM(#ID_LISTE|in_array{#GET{liste_abos}}|oui)checked="checked"]
      					 checked="checked"
      				   />

      du coup la case est cachée et cochée.

      Le tour est joué.

    • En fait il n’y a pas besoin de mettre en commentaire le tableau dans l’input.
      le simple fait de mettre checked=« checked » permet de cocher par défaut l’ensemble des listes de diffusion

      <input type="checkbox"
               class="checkbox"
               name="listes[]"
               value="#ID_LISTE"
               id="liste_#ID_LISTE"
              [(#ID_LISTE|in_array{#GET{liste_abos}}|oui)checked="checked"] checked="checked"
      />

    Répondre à ce message

  • 1

    Bonjour,
    J’utilise #FORMULAIRE_SPIP_LISTES_INSCRIPTION.
    je voudrais supprimer (ou réduire) le cadre du formulaire , car il dépasse mon menu pouvez vous m’aider ?

    Merci

    • J’ai trouvé !!!
      Il suffit de modifier le ficher formulaire/inc-liste_des_listes.html (supprimer <fieldset> </fieldset >)

    Répondre à ce message

  • micker

    hello
    j’ai 2 soucis
    1 - j’ai cocher dans la config globale
    « Format d’envoi des courriers
    Ce format est appliqué aux nouvelles inscriptions.
    Texte enrichi (caractères en gras ou en italique) parfois accompagné d’images »
    mais chaque nouveau inscris recois le mail ... comme quoi il est en text brut ...
    2 - je voudrais dupliquer un formulaire pour eviter d’avoir un soucis de mise a jour
    ... j’utilise le formulaire #FORMULAIRE_INSCRIVEZ_VOUS
    j’dupliquer les 2 fichiers puis renomer avec 2 en plus puis fait mon appel
    #FORMULAIRE_INSCRIVEZ_VOUS2
    c’est pas comme ca qu’on fait ?
    MErci

    Répondre à ce message

  • J’ai tenter de modifier l’apparence du formulaire par la méthode décrite ci-dessus :
    #FORMULAIRE_ABONNEMENTmon_formulaire_abonnement
    Mais sans succès.
    J’ai donc modifié la fonction balise_FORMULAIRE_ABONNEMENT_stat($args, $filtres) comme ceci :

    function balise_FORMULAIRE_ABONNEMENT_stat($args, $filtres) {
     
    	preg_match_all('/liste([0-9]+)/x', $args[1], $matches);
    	if($id_liste = intval($matches[1][0])) {
    		$args[0]=$id_liste;
    	}
    	if(!strlen($args[1])){
    		$args[1]='formulaire_abonnement';
    	}
     
    	return(array($args[0],$args[1]));
    }

    Répondre à ce message

  • 13

    bonjour,
    je viens de mettre à jour spip-listes.
    j’ajoute #FORMULAIRE_ABONNEMENT à mon site (spip 2.0.12)

    et cela affiche une erreur :

    Fatal error : Cannot redeclare class PHPMailer in /.../.../www/plugins/auto/facteur/phpmailer-php5/class.phpmailer.php on line 43

    j’ai lu sur la liste que ça pouvait venir d’un conflit de spip-listes avec facteur.. mais j’utilise par ailleurs facteur et ne peux donc pas le désactiver. Y-a-t-il une autre solution ?

    merci !

    • En attendant une mise à jour et sa sempiternelle batterie de tests, mettre les lignes 33,34 de inc/spiplistes_mail.inc.php en commentaire :

      if(!spiplistes_utiliser_facteur() && !class_exists('PHPMailer'))
      {
      	include_spip('phpmailer/class.phpmailer');
      	include_spip('phpmailer/class.smtp');
      }

      Merci.

    • j’ai commenté les deux lignes comme ça :

      if(!spiplistes_utiliser_facteur() && !class_exists('PHPMailer'))
      {
      	//include_spip('phpmailer/class.phpmailer');
      	//include_spip('phpmailer/class.smtp');
      }

      mais ça affiche cette erreur :

      Fatal error : Class ’PHPMailer’ not found in /.../.../www/plugins/auto/spip-listes_1_9_3/inc/spiplistes_mail.inc.php on line 37

      Est-ce qu’il faut que je commente l’intégralité du passage ? (lignes 31 à 35 ?)

    • Est-ce qu’il faut que je commente l’intégralité du passage ? (lignes 31 à 35 ?)

      Non. Le problème est ailleurs. C’est plutôt curieux, mais visiblement, les déclarations sont empilées autrement. Je ne suis pas sûr que facteur soit compatible SPIP-Listes. L’intégration a commencée, mais on en est loin. Et les tests de validation restent à faire.

      SVP, c’est quel plugin qui nécessite facteur sur ce site ?

    • Nouvelle version du plugin :
      La classe PHPMailer est renommée en PHPMailer_2003 pour éviter le conflit avec le plugin facteur, en attendant d’adapter au « necessite » éventuel.
      Attendre que le paquet soit prêt sur la zone, ou mettre à jour via svn.
      Merci.

    • merci ! je vais tester ce matin

    • je viens de mettre à jour le plugin (via spip)
      version 2.0211-49406<1.98>

      mais une nouvelle erreur s’affiche à la place du formulaire :

      Fatal error : Cannot redeclare class SMTP in /.../.../www/plugins/auto/facteur/phpmailer-php5/class.smtp.php on line 49

    • Désolé, pas eu le temps de tester.
      Classe SMTP renommée en SMTP_1_02.
      J’spère que c’est bon cette fois. J’ai testé rapide, mais sans facteur.

    • ok merci beaucoup ça a l’air de marcher ! j’ai mis à jour le plugin et intégré le #FORMULAIRE_SPIP_LISTES_INSCRIPTION sans erreur. (et facteur est toujours là).

      je remarque juste un truc bizarre dans le backoffice (apparemment non bloquant), la page http://www.monsite.../ecrire/?exec=spiplistes_config m’envoie sur une page d’erreur 500 Internal Server Error.. J’avoue ne pas savoir si cette erreur existait avant la mise à jour du plugin, ni si cette page est utile..

    • Serveur surchargé ?
      La page est utile, oui ;-) au début de l’installation en tt cas. Et pour désactiver le mode simulation. Après...

    • non c’est ça qui est curieux.. le serveur a l’air ok, je n’ai pas d’autre erreur ailleurs

    • Là, pour le coup, c’est le log apache qu’il faut analyser.
      Bon courage.

    • audwill

      bonjour,

      je reviens avec mon erreur 500 sur la page de config du plugin dans le backoffice. (erreur permanente)

      L’hébergeur me dit :

      Malheureusement on ne pourrait rien vérifier on voit juste que votre script ne sexécute pas normalement ce qui produit l’erreur 500 :
      [Tue Aug 23 14:03:53 2011] [error] [client 213.186.50.98] [host monsite] Premature end of script headers : index.php, referer :

      http://www.monsite.fr/spip.php?page=login&url=%2Fecrire%2F%3Fexec%3Dspiplistes_config

      je ne sais pas trop quoi faire.
      si vous avez une idée...

      merci d’avance pour vos conseils,

    • A part fouiller dans le journal des erreurs apache, il y aussi la solution de créer son serveur en local pour comparer. Mais tu as peut-être déjà vérifié en local ?

    Répondre à ce message

  • maxsharp12

    Suite à la mise à jour de spip-liste, mon ancien formulaire est complètement inutilisable. En plus je ne comprends pas tout ce qui a changé (fichiers php dans formulaires, toutes les balises renouvelées, etc.)
    Ce n’est pas terrible tout de même :-S

    Bon spiplisteinscription est bien, mais il manque le bouton « se désincrire ».

    Que faut-il rajouter ?

    Répondre à ce message

  • 3
    Lupitek

    Petit soucis sur le lien de désabonnement, celui ci comporte 2 espaces qui font bugger le lien.
    Exemple : spip.php ?page=abonnement &d=15623479014da55
    Quelqu’un a déjà rencontré ce problème ??

    • Il est où l’espace ?
      Svp, envelopper l’exemple de kbd.

      Et si possible, compléter par la petite ligne de version de SPIP-Listes qui se trouve en bas des formulaires.
      Parceque là, je viens de tester avec SPIP-Listes 2.0186 <1.98> jQuery 1.4.4, sans ce problème.

      Merci.

    • Lupitek

      SPIP-Listes 2.0186-46431 <1.98> jQuery 1.4.4

      Les 2 espaces sont juste avant &d=...
      Donne moi ton email si tu veux et je t’envoi ma news...

    • Je viens de tester :

      • en mode texte
      • en mode html
      • avec le lien modifier abonnement
      • et le lien désabonnement

      Et je n’ai pas ça.

      Curieux !

    Répondre à ce message

  • 2
    audwill

    bonjour,
    je cale sur un truc :

    le formulaire #FORMULAIRE_SPIP_LISTES_INSCRIPTION propose bien l’abonnement aux trois listes du site avec des cases à cocher mais comment faire en sorte que l’une des listes soit cochée par défaut ?

    • Désolé, ce n’est pas prévu.
      Et à part préparer un squelette perso pour le formulaire...
      A glisser dans ses squelettes.

    • audwill

      ok, merci !

    Répondre à ce message

Ajouter un commentaire

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom

Dernière modification de cette page le 14 juin 2011