<?xml 
version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="https://www.spip.net/spip.php?page=backend.xslt" ?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:atom="http://www.w3.org/2005/Atom"
>

<channel xml:lang="fr">
	<title>SPIP</title>
	<link>https://www.spip.net/</link>
	<description>Syst&#232;me de Publication pour Internet</description>
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>
	<atom:link href="https://www.spip.net/spip.php?id_auteur=6774&amp;page=backend" rel="self" type="application/rss+xml" />

	<image>
		<title>SPIP</title>
		<url>https://www.spip.net/local/cache-vignettes/L144xH107/siteon0-0ecda.png?1615902774</url>
		<link>https://www.spip.net/</link>
		<height>107</height>
		<width>144</width>
	</image>



<item xml:lang="fr">
		<title>Configurer une fonctionnalit&#233; de votre site, ou un plugin</title>
		<link>https://www.spip.net/fr_article5414.html</link>
		<guid isPermaLink="true">https://www.spip.net/fr_article5414.html</guid>
		<dc:date>2011-12-13T07:40:48Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>JLuc, Matthieu Marcillaud, severo</dc:creator>


		<dc:subject>Formulaires CVT</dc:subject>
		<dc:subject>SPIP 3.0</dc:subject>

		<description>
&lt;p&gt;La configuration d'une fonctionnalit&#233; ou d'un plugin consiste &#224; d&#233;finir des valeurs pour ses diff&#233;rents param&#232;tres. Il faut donc pour cela d&#233;finir un formulaire et pouvoir acc&#233;der aux valeurs des param&#232;tres, partout dans vos squelettes. &lt;br class='autobr' /&gt;
Les formulaires CVT permettent aussi, simplement, de cr&#233;er une page de configuration pour une fonctionnalit&#233; de votre site, ou pour la configuration d'un plugin. &lt;br class='autobr' /&gt;
Un mode de configuration est int&#233;gr&#233; &#224; SPIP. &lt;br class='autobr' /&gt; Formulaire de configuration &lt;br class='autobr' /&gt;
Supposons que (&#8230;)&lt;/p&gt;


-
&lt;a href="https://www.spip.net/fr_rubrique522.html" rel="directory"&gt;Interactivit&#233;&lt;/a&gt;

/ 
&lt;a href="https://www.spip.net/@multifrformulairescvtencvtformsesformularioscvtcaformulariscvtmulti" rel="tag"&gt;Formulaires CVT&lt;/a&gt;, 
&lt;a href="https://www.spip.net/@spip30" rel="tag"&gt;SPIP 3.0&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;La configuration d'une fonctionnalit&#233; ou d'un plugin consiste &#224; d&#233;finir des valeurs pour ses diff&#233;rents param&#232;tres. Il faut donc pour cela d&#233;finir un formulaire et pouvoir acc&#233;der aux valeurs des param&#232;tres, partout dans vos squelettes.&lt;/p&gt;
&lt;p&gt;Les formulaires CVT permettent aussi, simplement, de cr&#233;er une page de configuration pour une fonctionnalit&#233; de votre site, ou pour la configuration d'un plugin.&lt;/p&gt;
&lt;p&gt;Un mode de configuration est int&#233;gr&#233; &#224; SPIP.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;!--sommaire--&gt;&lt;div class=&#034;well nav-sommaire nav-sommaire-6&#034; id=&#034;nav69f4a48310e4c6.81105366&#034;&gt;
&lt;h2&gt;Sommaire&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-Formulaire-de-configuration&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Formulaire-de-configuration&#034; class=&#034;spip_ancre&#034;&gt;Formulaire de configuration&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Configuration-d-un-plugin&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Configuration-d-un-plugin&#034; class=&#034;spip_ancre&#034;&gt;Configuration d'un plugin&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Acceder-aux-valeurs-configurees&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Acceder-aux-valeurs-configurees&#034; class=&#034;spip_ancre&#034;&gt;Acc&#233;der aux valeurs configur&#233;es&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Autorisations&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Autorisations&#034; class=&#034;spip_ancre&#034;&gt;Autorisations&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Personnaliser-les-traitements&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Personnaliser-les-traitements&#034; class=&#034;spip_ancre&#034;&gt;Personnaliser les traitements&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Utiliser-une-autre-table-pour-stocker-les-valeurs-configurees&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Utiliser-une-autre-table-pour-stocker-les-valeurs-configurees&#034; class=&#034;spip_ancre&#034;&gt;Utiliser une autre table pour stocker les valeurs configur&#233;es&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;!--/sommaire--&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Formulaire-de-configuration&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Formulaire-de-configuration'&gt;Formulaire de configuration &lt;a class='sommaire-back sommaire-back-6' href='#s-Formulaire-de-configuration' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Supposons que vous ayez une fonctionnalit&#233; &#034;truc&#034; &#224; configurer.&lt;/p&gt;
&lt;ol class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; cr&#233;ez un formulaire CVT dont le nom commence par &#171; configurer_ &#187;, avec juste le fichier HTML et sans le PHP (et donc sans d&#233;finir les fonctions charger, verifier et traiter)&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb1&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;Pour simplifier encore la cr&#233;ation de ce formulaire, il est possible (&#8230;)&#034; id=&#034;nh1&#034;&gt;1&lt;/a&gt;]&lt;/span&gt;.&lt;/li&gt;&lt;li&gt; cr&#233;ez une page &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;configurer_truc.html&lt;/code&gt; dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;prive/squelettes/contenu/&lt;/code&gt;, &#224; l'int&#233;rieur de votre plugin ou de votre r&#233;pertoire squelettes. Dedans, appelez le formulaire avec simplement &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#FORMULAIRE_CONFIGURER_TRUC&lt;/code&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;C'est tout !&lt;/p&gt;
&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Configuration-d-un-plugin&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Configuration-d-un-plugin'&gt;Configuration d'un plugin&lt;a class='sommaire-back sommaire-back-6' href='#s-Configuration-d-un-plugin' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Lorsqu'un plugin dispose d'une page de configuration, une option &#034;Configurer&#034; amenant &#224; cette page appara&#238;t automatiquement dans la ligne pr&#233;sentant ce plugin dans la page d'administration des plugins.&lt;/p&gt;
&lt;p&gt;Cette page est d&#233;finie par le squelette &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;prive/squelettes/contenu/configurer_prefixeplugin.html&lt;/code&gt; et fait le plus souvent appel &#224; un formulaire de configuration.&lt;/p&gt;
&lt;p&gt;Exemple : Pour le plugin 'mediabox', le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;prive/squelettes/contenu/configurer_mediabox.html&lt;/code&gt; contient :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;spip&#034; class='spip_code spip_code_block language-spip' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;[(#AUTORISER{configurer,mediabox}|oui) &lt;h1&gt;&lt;:mediabox:titre_page_configurer_box:&gt;&lt;/h1&gt; &lt;div class=&#034;ajax&#034;&gt; #FORMULAIRE_CONFIGURER_MEDIABOX &lt;/div&gt; ] &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Si vous souhaitez qu'une entr&#233;e apparaisse &#233;galement dans les menus de la partie priv&#233;e pour vous donner un acc&#232;s direct &#224; cette page de configuration, ajoutez une entr&#233;e &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;menu&gt;&lt;/code&gt; dans le &lt;a href=&#034;https://plugins.spip.net/redaction-du-paquet-xml.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;fichier paquet.xml&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Exemple :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;xml&#034; class='spip_code spip_code_block language-xml' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;&lt;menu nom=&#034;truc&#034; titre=&#034;prefixeplugin:itemdelangue_truc&#034; parent=&#034;bando_configuration&#034; icone=&#034;images/truc-16.png&#034; /&gt; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Pour initialiser la valeur d'une configuration (param&#232;tre &#034;a_la_une&#034;, par exemple) lors de la cr&#233;ation ou de la mise &#224; jour du plugin, ajouter, dans le pipeline monplugin_upgrade() :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; lors de la cr&#233;ation :
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;php&#034; class='spip_code spip_code_block language-php' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;$maj['create'] = array( array('ecrire_config','monplugin/a_la_une', '3'), ); &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; lors d'une mise &#224; jour :
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;php&#034; class='spip_code spip_code_block language-php' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;$maj['0.1'] = array( array('ecrire_config','monplugin/a_la_une', '3'), ); &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Pour effacer la valeur lors de la d&#233;sinstallation du plugin, ajouter, dans le pipeline monplugin_vider_tables() :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;php&#034; class='spip_code spip_code_block language-php' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;effacer_config(&#034;monplugin/a_la_une&#034;); &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Acceder-aux-valeurs-configurees&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Acceder-aux-valeurs-configurees'&gt;Acc&#233;der aux valeurs configur&#233;es&lt;a class='sommaire-back sommaire-back-6' href='#s-Acceder-aux-valeurs-configurees' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Dans un squelette&lt;/strong&gt;, on acc&#232;de &#224; la valeur d'une configuration au moyen de la balise &lt;a href='https://www.spip.net/fr_article4335.html' class=&#034;spip_in&#034;&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#CONFIG&lt;/code&gt;&lt;/a&gt; (par exemple &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#CONFIG{monplugin/a_la_une}&lt;/code&gt;)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;En php&lt;/strong&gt; on acc&#233;dera en lecture aux valeurs avec la fonction &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;lire_config&lt;/code&gt; avec &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;lire_config('monplugin/a_la_une')&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;En &#233;criture, on utilisera la fonction &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ecrire_config&lt;/code&gt; :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ecrire_config('monplugin/a_la_une', 3)&lt;/code&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Autorisations&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Autorisations'&gt;Autorisations&lt;a class='sommaire-back sommaire-back-6' href='#s-Autorisations' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Tous les internautes n'ont pas acc&#232;s &#224; la page de configuration. Par d&#233;faut, seuls les administrateurs ont cette possibilit&#233;, mais vous pouvez red&#233;finir les droits d'acc&#232;s &#224; votre formulaire de configuration. Utilisez pour cela l'API php &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;autoriser&lt;/code&gt;, ainsi que la balise &lt;a href='https://www.spip.net/fr_article3896.html' class=&#034;spip_in&#034;&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#AUTORISER&lt;/code&gt;&lt;/a&gt; et le filtre &lt;a href='https://www.spip.net/fr_article5668.html' class=&#034;spip_in&#034;&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sinon_interdire_acces&lt;/code&gt;&lt;/a&gt; pour votre squelette de formulaire.&lt;/p&gt;
&lt;p&gt;Exemple : &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;[(#AUTORISER{configurer,mediabox}|sinon_interdire_acces)]&lt;/code&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Personnaliser-les-traitements&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Personnaliser-les-traitements'&gt;Personnaliser les traitements&lt;a class='sommaire-back sommaire-back-6' href='#s-Personnaliser-les-traitements' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Parfois, on a besoin de faire d'autres traitements pr&#233;cis lorsque des valeurs de configuration sont chang&#233;es. Dans ce cas il faut ajouter la fonction &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;traiter()&lt;/code&gt; habituelle de l'API CVT, et appeler la fonction commune qui s'occupe de traiter les configurations :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;php&#034; class='spip_code spip_code_block language-php' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;function formulaires_configurer_monplugin_traiter_dist() { include_spip('inc/cvt_configurer'); $retours = array(); // On enregistre la nouvelle configuration $trace = cvtconf_formulaires_configurer_enregistre('configurer_monplugin', array()); // Traitements personnalis&#233;s // &#8230; $retours['message_ok'] = _T('config_info_enregistree') . $trace; $retours['editable'] = true; return $retours; } &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Utiliser-une-autre-table-pour-stocker-les-valeurs-configurees&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Utiliser-une-autre-table-pour-stocker-les-valeurs-configurees'&gt;Utiliser une autre table pour stocker les valeurs configur&#233;es&lt;a class='sommaire-back sommaire-back-6' href='#s-Utiliser-une-autre-table-pour-stocker-les-valeurs-configurees' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Par d&#233;faut, les valeurs configur&#233;es sont stock&#233;es la table &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;spip_meta&lt;/code&gt;, et l'int&#233;gralit&#233; de cette table est charg&#233;e en m&#233;moire &#224; chaque hit. Il est toutefois possible d'utiliser une autre table pour stocker les valeurs configur&#233;es.&lt;/p&gt;
&lt;p&gt;Par exemple, pour utiliser la table meta_monplugin, il faut ajouter la ligne suivante dans le formulaire de configuration :&lt;/p&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;input type=&#034;hidden&#034; name=&#034;_meta_table&#034; value=&#034;meta_monplugin&#034; /&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Puis, pour acc&#233;der aux valeurs enregistr&#233;es dans cette table, indiquer le nom de la table pr&#233;fix&#233; par un / au d&#233;but de l'argument de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;lire_config&lt;/code&gt; :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;php&#034; class='spip_code spip_code_block language-php' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;ecrire_config('/meta_monplugin/descriptif', 'blah'); lire_config('/meta_monplugin/argument'); &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Outre &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;_meta_table&lt;/code&gt;, le nom de la table o&#249; stocker les valeurs configur&#233;es, il existe 3 autres variables utiles pour varier l'endroit ou la m&#233;thode d'enregistrement de la configuration :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;_meta_casier&lt;/code&gt; : nom du &#034;casier&#034; dans lequel s&#233;rialiser (par d&#233;faut c'est le xx de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;formulaire_configurer_xx&lt;/code&gt;)&lt;/li&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;_meta_prefixe&lt;/code&gt; : pr&#233;fixer les &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;meta&lt;/code&gt; (alternative au casier) dans la table des meta (pas de pr&#233;fixe par d&#233;faut)&lt;/li&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;_meta_stockage&lt;/code&gt; : utiliser une m&#233;thode externe de stockage. Aucune n'est fournie par le core.&lt;/li&gt;&lt;/ul&gt;&lt;/section&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#034;nb1&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh1&#034; class=&#034;spip_note&#034; title=&#034;Notes 1&#034; rev=&#034;appendix&#034;&gt;1&lt;/a&gt;] &lt;/span&gt;Pour simplifier encore la cr&#233;ation de ce formulaire, il est possible d'utiliser le plugin &lt;a href=&#034;https://contrib.spip.net/Formulaire-de-configuration-avec-le-plugin-Saisies&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Saisies&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>



</channel>

</rss>
