[Résolu] Champ Nom pour MailSubscribers

Bonjour,

Je cherche un solution simple (codé en dur) pour ajouter le champ de saisie Nom et son label sur le formulaire par défaut « Inscription à la newsletter » (#FORMULAIRE_NEWSLETTER_SUBSCRIBE) de MailSubscribers sans avoir à installer Formidable ou Champ Extras et toute la flopée de plugins dépendants.

Sachant que dans la liste « Inscrits aux envois par email » le champ « Nom » existe déjà:

  • Email
  • Nom
  • Langue
  • Listes

Je suppose qu’il me faut ajouter quelques lignes de code dans les fichiers:
/mailsubscribers/formulaires/newsletter_subscribe.php
/mailsubscribers/formulaires/newsletter_subscribe.html

Merci pour votre aide :slight_smile:

De mémoire, il suffit d’ajouter un champ extra avec le plugin du même nom : Champs Extras — introduction - SPIP-Contrib

Merci pour votre aide Jean Marie !

Malheureusement je cherche un solution sans avoir à installer les plugins Champ Extras ou Formidable … et toute la « flopée » de plugins dépendants.

Champs extras ne nécessite pas formidable, et si tu souhaites te passer de champs extras qui est le plugin fait pour ça, alors il te faudra bidouiller à la main et maintenir le code en question. À toi de voir ce qui te semble le plus pérenne et le plus simple…

Merci beaucoup b_b !
En fait je suis étonné que le champ Nom ne soit pas sur le formulaire par défaut du plugins MailSubscribers. Peut être une histoire de RGPD ?
Et visiblement je ne suis pas le seul à chercher cette simple option vu les commentaires sur SpipContrib.
Je souhaite effectivement une solution codée en dur car je trouve dommage d’avoir à installer le plugins Champ Extras (ou Formidable)… et toute sa « flopée » de plugins dépendants.

Champs extras (sans son interface) ne nécessite que saisies et yaml cf paquet.xml · master · spip-contrib-extensions / champs_extras_core · GitLab et il y a de grandes chances que ces deux là soient déjà actifs sur ton site. Et il y a toute la doc qu’il faut pour déclarer un champ à la main cf Champs Extras — introduction - SPIP-Contrib

Merci beaucoup pour ton aide b_b !
Suivant tes conseils, je viens de jeter un œil à la doc Champs Extras.
Mais cela est bien plus complexe que je ne l’avais imaginé…

Tu peux utiliser l’interface pour Champs Extras, c’est très simple :

En fait dans le plugin MailSubscribers je souhaite simplement ajouter à formulaires/newsletter_subscribe.html un <input> correspondant dans la base de données à la colonne nom de la table spip_mailsubscribers.

Quelque chose comme ceci :

<div class='formulaire_spip formulaire_newsletter formulaire_[(#FORM)] ajax'>
	[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</p>]
	[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]

	[(#ENV{editable})
	<form method='post' action='#ENV{action}'><div>
        
        [(#REM) Champ de saisie du NOM ] 
        #ACTION_FORMULAIRE{#ENV{action}}
		<div class="editer-groupe">
			#SET{name_nom,session_nom}#SET{obli,'obligatoire'}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name_nom}}}
			<div class="editer editer_[(#GET{name_nom})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
                <label for="#GET{name_nom}"><:newsletter:label_name:></label>[
				<span class='erreur_message'>(#GET{erreurs})</span>
				]<input type="text" name="#GET{name_nom}" class="nom text" value="#ENV*{#GET{name_nom}}" id="#GET{name_nom}" [(#HTML5|et{#GET{obli}})required='required']/>
			</div>
		</div>
            
        [(#REM) Champ de saisie de EMAIL ]    
		#ACTION_FORMULAIRE{#ENV{action}}
		<div class="editer-groupe">
			#SET{name,session_email}#SET{obli,'obligatoire'}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
			<div class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
                <label for="#GET{name}"><:newsletter:label_email_subscribe:></label>[
				<span class='erreur_message'>(#GET{erreurs})</span>
				]<input type="email" name="#GET{name}" class="email text" value="#ENV*{#GET{name}}" id="#GET{name}" [(#HTML5|et{#GET{obli}})required='required']/>
			</div>
			[(#ENV{_listes_choix}|oui)
			<INCLURE{fond=formulaires/inc-subscribing-options,env,label=<:newsletter:label_subscribe_lists:>} />
			]

		</div>
		[(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
		<!--extra-->
		[(#REM) S'il y a plusieurs choix possibles, on change le label ]
		[(#SET{bouton, #ENV{_listes_choix}|count|>{1}|et{#ENV{_checkable}}|?{<:newsletter:bouton_subscribe_multiples|attribut_html:>, <:newsletter:bouton_subscribe|attribut_html:>}})]
		<p class="boutons"><input type="submit" class="submit" value="#GET{bouton}" /></p>
	</div></form>
	]
</div>

Là ou cela se complique c’est en PHP pour faire en sorte que ça fonctionne correctement dans le fichier formulaires/newsletter_subscribe.php

Merci pour votre aide

Bonjour,

J’ai pu créer un nouveau formulaire d’inscription à la newsletter avec les champs Nom et Email en utilisant le plugin Formidable (Mailsubscriber).

Mais pour que cela fonctionne il m’a fallu installer toute cette flopée de plugin :wink:

  • Formidable
  • SPIP Bonux
  • Saisies pour formulaires
  • API de vérification
  • YAML
  • NoSPAM
  • Archiviste
  • Select2

Dommage que le champ Nom ne soit pas nativement dans le formulaire d’inscription du plugin Mailsubscribers qui lui ne nécessite que Facteur pour fonctionner.

Un grand merci à tous pour le développement de SPIP et pour vos conseils !

Tu peux proposer cette amélioration dans le repo du plugin spip-contrib-extensions / mailsubscribers · GitLab