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

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

<paquet
	prefix="cform"
	categorie="communication"
	version="1.0.0"
	etat="test"
	compatibilite="[3.2.0;3.2.*]"
>

	<nom>Champs Extras dans le formulaire d'inscription à la newsletter</nom>
	
	<pipeline nom="formulaire_charger" inclure="cform_pipelines.php" /> 
	<pipeline nom="pre_insertion" inclure="cform_pipelines.php" />

	<necessite nom="cextras" compatibilite="[3.11.0;]" />
	
</paquet>

cform_pipelines.php

<?php

if (!defined('_ECRIRE_INC_VERSION')) return;
 
function cform_formulaire_charger($flux) {
    if ($flux['args']['form'] == 'newsletter_subscribe') {
        include_spip('inc/cextras');
        if ($saisies = cextras_obtenir_saisies_champs_extras('mailsubscribers')) {
            $flux['data']['_champs_extras_saisies'] = $saisies;
        }
    }
    return $flux;
}

function cform_pre_insertion($flux) {
	if ($flux['args']['table'] == 'mailtosubscribers') {
		include_spip('cextras_pipelines');
		$_flux = $flux;
		$_flux['args']['id_objet'] = null;
		$_flux = cextras_pre_edition($_flux);
		$flux['data'] = $_flux['data'];
	}
	return $flux;
}

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