<?xml
version="1.0" encoding="utf-8"?>
<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>Geekographie Ma&#239;eulesque</title>
	<link>https://geekographie.maieul.net/</link>
	<description>Ce site est consacr&#233; &#224; quelques unes des mes geekeries. J'y donne des conseils, des r&#233;flexions, sur les logiciels et les langages que je connais ou que j'apprends.
J'y parle notamment de l'usage de LaTeX en sciences humaines et sociales, en particulier pour la gestion de la bibliographie.
Le contenu peut &#234;tre sous la forme d'articles d&#233;taill&#233;s ou de simples notes.
L'ensemble du contenu est, sauf pr&#233;cision contraire, sous licence Cr&#233;ative Commons Paternit&#233;-Partage des Conditions Initiales &#224; l'identique France.</description>
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>
	<atom:link href="https://geekographie.maieul.net/spip.php?id_rubrique=13&amp;page=backend" rel="self" type="application/rss+xml" />




<item xml:lang="fr">
		<title>Un formulaire d'inscription &#224; une liste de discussion/diffusion avec Formidable</title>
		<link>https://geekographie.maieul.net/147</link>
		<guid isPermaLink="true">https://geekographie.maieul.net/147</guid>
		<dc:date>2014-08-07T13:06:03Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Ma&#239;eul</dc:creator>



		<description>
&lt;p&gt;Certains h&#233;bergeurs proposent des services de listes de diffusion / de discussion sans proposer pour autant de formulaire d'inscription aux dites listes. C'est par exemple le cas de TuxFamily ou de Toile-Libre. L'inscription se fait alors par courriel. Il en est cependant possible d'afficher un formulaire d'inscription sur son site &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt;, pour faciliter la vie du public. Du reste, on peut &#233;galement le souhaiter pour les h&#233;bergeurs proposant des listes avec formulaire d'inscription&#160;: cela&#160;(&#8230;)&lt;/p&gt;


-
&lt;a href="https://geekographie.maieul.net/Formulaires" rel="directory"&gt;Formulaires&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Certains h&#233;bergeurs proposent des services de listes de diffusion / de discussion sans proposer pour autant de formulaire d'inscription aux dites listes. C'est par exemple le cas de &lt;a href=&#034;http://tuxfamily.org&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;TuxFamily&lt;/a&gt; ou de &lt;a href=&#034;http://www.toile-libre.org&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Toile-Libre&lt;/a&gt;. L'inscription se fait alors par courriel. Il en est cependant possible d'afficher un formulaire d'inscription sur son site &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt;, pour faciliter la vie du public&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;Comme je l'ai fait pour la listes des utilisateurs de eledmac.&#034; id=&#034;nh1&#034;&gt;1&lt;/a&gt;]&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Du reste, on peut &#233;galement le souhaiter pour les h&#233;bergeurs proposant des listes avec formulaire d'inscription&#160;: cela permet d'afficher le formulaire sur son propre site, en gardant ainsi une interface uniforme.&lt;/p&gt;
&lt;p&gt;Une mani&#232;re simple de faire ceci est d'utiliser le plugin nomm&#233; &#224; juste titre &#034;&lt;a href=&#034;http://plugins.spip.net/formidable.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Formidable&lt;/a&gt;&#034;.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h2 class=&#034;r2&#034;&gt;1 - Principe de base&lt;/h2&gt;
&lt;p&gt;Les listes de discussions suivent la norme suivante&#160;: une adresse &lt;code&gt;nom_de_la_liste-request@domaine.tld&lt;/code&gt; peut recevoir des inscriptions de configuration de la liste. Pour la liste des utilisateurs de eledmac, l'adresse est donc&#160;: &lt;code&gt;eledmac-request [arobase] lists.tuxfamily.org&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Il suffit d'envoyer un mail avec la requ&#234;te comme objet. Dans le cas qui nous int&#233;resse, il suffit de mettre&#160;:&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;code&gt;subscribe&lt;/code&gt; si on veut s'inscrire &#224; la liste&lt;/li&gt;&lt;li&gt; &lt;code&gt;unsubscribe&lt;/code&gt; si on veut se d&#233;sinscrire de la liste.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&#201;videment, cette email doit &#234;tre envoy&#233; depuis l'adresse qui souhaite s'inscrire.&lt;/p&gt;
&lt;p&gt;Notre formulaire est donc un simple formulaire qui se contente de faire cela... c'est tout.&lt;/p&gt;
&lt;h2 class=&#034;r2&#034;&gt;2 - Cr&#233;ation du formulaire&lt;/h2&gt;
&lt;p&gt;Nous supposons que vous avez install&#233; &lt;a href=&#034;http://plugins.spip.net/formidable&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;formidable&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Dans le menu &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#233;dition&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;, se rendre dans &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;formulaires&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;, puis choisir &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;cr&#233;er un nouveau formulaire&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;.&lt;/p&gt;
&lt;h3 class=&#034;r3&#034;&gt;2.1 - Configuration de base du formulaire&lt;/h3&gt;
&lt;p&gt;Donnez un titre &#224; votre formulaire, un identifiant pour le m&#233;moriser (par exemple &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;inscription-liste-eledmac&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;), indiquez un message de retour pour pr&#233;venir l'internaute qu'il doit confirmer son inscription via le courriel qu'il recevra, et conservez les autres param&#232;tres.&lt;/p&gt;
&lt;p&gt;Validez alors.&lt;/p&gt;
&lt;h3 class=&#034;r3&#034;&gt;2.2 - Cr&#233;ation des champs&lt;/h3&gt;
&lt;p&gt;Vous arrivez alors sur la page d'ajout des champs.&lt;/p&gt;
&lt;div class='spip_document_131 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;36&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://geekographie.maieul.net/local/cache-vignettes/L500xH413/ajout-champ-00dbc.png?1760449034' width='500' height='413' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-131 '&gt;&lt;strong&gt;Ajout de champs dans un formulaire
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;h4 class=&#034;r4&#034;&gt;2.2.1 - Champ courriel&lt;/h4&gt;
&lt;p&gt;Choisissez d'ajouter une &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;Ligne de texte&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187; en cliquant sur le bouton ad hoc. Votre champ &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;ligne de texte&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187; est alors ajout&#233; au formulaire. Il vous faut maintenant le configurer en cliquant sur le bouton avec un crayon sur une page.&lt;/p&gt;
&lt;div class='spip_document_130 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;45&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://geekographie.maieul.net/local/cache-vignettes/L500xH85/ligne-txt-59e36.png?1760449034' width='500' height='85' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-130 '&gt;&lt;strong&gt;Bascule vers l'&#233;dition d'une ligne de texte
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Dans le champ &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;Description&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;, entrez &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;Courriel&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187; (ou &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;email&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;, si vous &#234;tes sur un site anglophone).&lt;/p&gt;
&lt;p&gt;Basculez ensuite dans l'onglet &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;Validation&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;. Cochez la case &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;Champ obligatoire&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;, et dans le menu d&#233;roulant, choisissez comme v&#233;rification &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;Adresse de courriel&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;.&lt;/p&gt;
&lt;p&gt;Validez ensuite le champ.&lt;/p&gt;
&lt;h4 class=&#034;r4&#034;&gt;2.2.2 - Champ action&lt;/h4&gt;
&lt;p&gt;Il vous faut maintenant ajouter le bouton radio pour permettre aux utilisateurs de choisir entre l'inscription et la d&#233;sinscription. Cliquez donc sur le bouton ad hoc, puis &#233;ditez le champ, via l'ic&#244;ne avec un crayon sur une page.&lt;/p&gt;
&lt;div class='spip_document_132 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;27&#034; data-legende-lenx=&#034;&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://geekographie.maieul.net/local/cache-vignettes/L500xH122/edition-radio-6f61f.png?1760449034' width='500' height='122' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-132 '&gt;&lt;strong&gt;&#201;dition des boutons radio
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Dans le champ &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;Label&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;, saissiez &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;Action&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187; (ou tout autre terme ad&#233;quat). Dans &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;liste des choix possibles&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;, ajouter les lignes suivantes&#160;:&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;'&gt;&lt;code&gt;subscribe|Inscription unsubscribe|D&#233;sinscription&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Vous pouvez bien s&#251;r changez &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;Inscription&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187; / &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;D&#233;sinscription&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187; par tous termes appropri&#233;s.&lt;/p&gt;
&lt;p&gt;Dans &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;Valeur par d&#233;faut&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;, choisissez &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;Subscribe&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;.&lt;/p&gt;
&lt;p&gt;Validez ensuite le champ.&lt;/p&gt;
&lt;h4 class=&#034;r4&#034;&gt;2.2.3 - Validation des champs&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Il est important de ne pas oubliez de valider les champs&lt;/strong&gt;, en cliquant sur le bouton en bas de page.&lt;/p&gt;
&lt;div class='spip_document_133 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;37&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://geekographie.maieul.net/local/cache-vignettes/L500xH75/validation-champ-dbc21.png?1760449034' width='500' height='75' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-133 '&gt;&lt;strong&gt;Validation des champs du formulaire
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;h3 class=&#034;r3&#034;&gt;2.3 - Configuration des traitements&lt;/h3&gt;
&lt;p&gt;Il ne vous reste plus qu'&#224; configurer le formulaire pour qu'il envoie les mails.&lt;/p&gt;
&lt;p&gt;Cliquez &#224; gauche sur &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;Configurez les traitements&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;. Cochez alors &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;Envoyez par courriel&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;. Dans le formulaire qui appara&#238;t alors, remplissez ainsi les champs&#160;:&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;Destinataires suppl&#233;mentaires&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;&#160;: mettre l'adresse -request. Par exemple&#160;: &lt;code&gt;eledmac-request[arobase]tuxfamily.org&lt;/code&gt; (en rempla&#231;ant bien s&#251;r le [arobase]&lt;/code&gt;&lt;/li&gt;&lt;li&gt; &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;Courriel de l'envoyeur&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;&#160;: choisissez &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;Courriel&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187; (&#233;tonnant non&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;?)&lt;/li&gt;&lt;li&gt; &lt;strong&gt;Ne pas oubliez de cochez &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;Ins&#233;rer le courriel de l'envoyeur dans le champ &#034;From&#034;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt; Dans sujet du message, mettre &lt;code&gt;@radio_1@&lt;/code&gt;.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&#192; partir de la version 3.7.0 de formidable, il faut aussi cocher la case &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;Valeurs brutes&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;. Sinon l'objet du message sera &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;Inscription&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187; et pas &#034;subscribe.&lt;/p&gt;
&lt;div class='spip_document_219 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;23&#034; data-legende-lenx=&#034;&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://geekographie.maieul.net/local/cache-vignettes/L500xH187/valeurs-brutes-43140.png?1760449034' width='500' height='187' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-219 '&gt;&lt;strong&gt;Options valeur brutes
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Validez alors le formulaire.&lt;/p&gt;
&lt;p&gt;Il vous reste alors &#224; faire un test, en remplissant le formulaire avec un email, ext&#233;rieur au domaine de votre site. Par exemple un &lt;a href=&#034;http://www.yopmail.com/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;yopmail&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Il se peut cependant que votre h&#233;bergeur refuse d'envoyer de tels courriels depuis votre site. Dans ce cas, il faudra voir avec lui... ou bien tester via un &lt;span class=&#034;caps&#034;&gt;SMTP&lt;/span&gt; externe, gr&#226;ce au &lt;a href=&#034;http://plugin.spip.net/facteur&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;plugin facteur&lt;/a&gt;.&lt;/p&gt;
&lt;h2 class=&#034;r2&#034;&gt;3 - Insertion du formulaire dans un article&lt;/h2&gt;
&lt;p&gt;Il ne vous reste plus qu'&#224; ins&#233;rer le formulaire dans un article, via le raccourci&#160;:&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;'&gt;&lt;code&gt;&lt;formulaire|formidable|id=identifiant_du_formulaire&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#034;r2&#034;&gt;4 - Pour allez plus vite&lt;/h2&gt;&lt;div class='spip_document_135 spip_document spip_documents spip_document_file spip_documents_left spip_document_left spip_document_avec_legende' data-legende-len=&#034;52&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt;
&lt;a href='https://geekographie.maieul.net/IMG/yaml/formulaire-test.yaml' class=&#034; spip_doc_lien&#034; title='YAML - 1.3 kio' type=&#034;text/yaml&#034;&gt;&lt;img src='https://geekographie.maieul.net/local/cache-vignettes/L64xH64/yaml-94e8d.svg?1772797874' width='64' height='64' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-135 '&gt;&lt;strong&gt;Formulaire d'inscription &#224; une liste de discussion
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt; &lt;p&gt;J'ai export&#233; mon formulaire en &lt;code&gt;.yaml&lt;/code&gt;. Vous pouvez le t&#233;l&#233;charger, puis l'importer avec le bouton ad hoc.&lt;/p&gt;
&lt;div class='spip_document_134 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;47&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://geekographie.maieul.net/local/cache-vignettes/L223xH213/import-yaml-fdb8f.png?1760449034' width='223' height='213' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-134 '&gt;&lt;strong&gt;Importer un formulaire depuis un ficher .&lt;span class=&#034;caps&#034;&gt;YAML&lt;/span&gt;
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Il vous faut ensuite&#160;:&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; modifier le formulaire, pour lui donner un titre et un identifiant bien &#224; vous.&lt;/li&gt;&lt;li&gt; configurer les traitements, pour modifier l'option &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;Destinataires suppl&#233;mentaires&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;.&lt;/li&gt;&lt;/ul&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;Comme je l'ai fait pour la listes des utilisateurs de &lt;a href='https://geekographie.maieul.net/147' class=&#034;spip_in&#034;&gt;eledmac&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Succession d'articles avec A2A</title>
		<link>https://geekographie.maieul.net/100</link>
		<guid isPermaLink="true">https://geekographie.maieul.net/100</guid>
		<dc:date>2012-09-13T19:16:57Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Ma&#239;eul</dc:creator>



		<description>
&lt;p&gt;La nouvelle version du plugins &lt;span class=&#034;caps&#034;&gt;A2A&lt;/span&gt; permet de typer les relations entre articles. Je m'en sert sur ce site pour cr&#233;er des succession d'articles, par exemple ma s&#233;rie d'articles sur les stemma. Comment fais-je&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;? Configuration du plugin Je cr&#233;e un nouveau type de relation, dont la clef est &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;Suivant&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187; et le titre est &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;Article suivant&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;. Chaque article de la cha&#238;ne, sauf le dernier, est reli&#233; &#224; l'article suivant selon ce type. Voil&#224; pour l'espace priv&#233;. C&#244;t&#233; squelettes Je&#160;(&#8230;)&lt;/p&gt;


-
&lt;a href="https://geekographie.maieul.net/Plugin" rel="directory"&gt;Plugin&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;La nouvelle version du plugins &lt;span class=&#034;caps&#034;&gt;A2A&lt;/span&gt; permet de &lt;a href=&#034;http://contrib.spip.net/Typage-des-relations-entre-articles-avec-A2A&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;typer les relations entre articles&lt;/a&gt;. Je m'en sert sur ce site pour cr&#233;er des succession d'articles, par exemple ma &lt;a href='https://geekographie.maieul.net/88' class=&#034;spip_in&#034;&gt;s&#233;rie d'articles sur les stemma&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Comment fais-je&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;?&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h2 class=&#034;h2&#034;&gt;Configuration du plugin&lt;/h2&gt;
&lt;p&gt;Je cr&#233;e un nouveau type de relation, dont la clef est &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;Suivant&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187; et le titre est &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;Article suivant&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;.&lt;/p&gt;
&lt;p&gt;Chaque article de la cha&#238;ne, sauf le dernier, est reli&#233; &#224; l'article suivant selon ce type.&lt;/p&gt;
&lt;p&gt;Voil&#224; pour l'espace priv&#233;.&lt;/p&gt;
&lt;h2 class=&#034;h2&#034;&gt;C&#244;t&#233; squelettes&lt;/h2&gt;
&lt;p&gt;Je souhaite afficher l'ensemble des articles de la cha&#238;ne dans laquelle se situe l'article courant mais&#160;:&lt;/p&gt;
&lt;ol class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; En ne mettant pas de lien sur l'article courant.&lt;/li&gt;&lt;li&gt; En mettant un attribut &lt;code&gt;rel=prev&lt;/code&gt; ou &lt;code&gt;rel=next&lt;/code&gt; pour le liens vers l'article imm&#233;diatement pr&#233;c&#233;dent/suivant.&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;Voici comme je proc&#233;de, les commentaires suivent.&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class='spip'&gt;&lt;code&gt;&lt;BOUCLE_article(ARTICLES){id_article}&gt; #SET{precedent,''} #SET{suivant,''} #SET{succession,#LISTE{#ID_ARTICLE}} &lt;BOUCLE_precedent(ARTICLES_LIES){id_article_lie=#ID_ARTICLE}{type_liaison=suivant}&gt; #SET{succession,#LISTE{#ID_ARTICLE}|push{#GET{succession}}} [(#ID_ARTICLE_LIE|=={#_article:ID_ARTICLE}|oui) #SET{precedent,#ID_ARTICLE} ] &lt;BOUCLE_precedents(Boucle_precedent) /&gt; &lt;/BOUCLE_precedent&gt; &lt;BOUCLE_suivant(ARTICLES_LIES){id_article=#ID_ARTICLE}{type_liaison=suivant}&gt; #SET{succession,#GET{succession}|push{#ID_ARTICLE_LIE}} #SET{suivant,#ID_ARTICLE_LIE} &lt;BOUCLE_suivants(ARTICLES_LIES){id_article=#ID_ARTICLE_LIE}{type_liaison=suivant}&gt; #SET{succession,#GET{succession}|push{#ID_ARTICLE_LIE}} &lt;BOUCLE_suivantsr(BOUCLE_suivants) /&gt; &lt;/BOUCLE_suivants&gt; &lt;/BOUCLE_suivant&gt; &lt;B_succession&gt; &lt;p&gt;&lt;strong&gt;&lt;:geek:succession_article:&gt; :&lt;/strong&gt;&lt;/p&gt; &lt;ol class='succession'&gt; &lt;BOUCLE_succession(ARTICLES){id_article IN #GET{succession}}{si #GET{succession}|count|&gt;{1}} &gt; &lt;li[ class='(#EXPOSE)']&gt; [(#EXPOSE|non)&lt;a href=&#034;#URL_ARTICLE&#034;[ rel=&#034;next&#034;(#ID_ARTICLE|=={#GET{suivant}}|oui)][ rel=&#034;prev&#034;(#ID_ARTICLE|=={#GET{precedent}}|oui)]&gt;] #TITRE [(#EXPOSE|non)&lt;/a&gt;] &lt;/li&gt; &lt;/BOUCLE_succession&gt; &lt;/ol&gt; &lt;/B_succession&gt; &lt;/BOUCLE_article&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; l.&#160;1&#160;: la boucle englobante du squelette, je masque ici les autres contenus.&lt;/li&gt;&lt;li&gt; l.&#160;2-3&#160;: deux variables dans lesquelles on stockera les num&#233;ros de l'article pr&#233;c&#233;dent et de l'article suivant.&lt;/li&gt;&lt;li&gt; l.&#160;4&#160;: liste dans laquelle on va stocker les id de chaque article de la cha&#238;ne. On initialise la liste avec le num&#233;ro de l'article courant.&lt;/li&gt;&lt;li&gt; l.&#160;5 et 11&#160;: on cherche l'article pr&#233;c&#233;dent.&lt;/li&gt;&lt;li&gt; l.&#160;6&#160;: on ajoute l'article pr&#233;c&#233;dent &#224; la liste des articles de la cha&#238;ne, en &lt;i&gt;d&#233;but de liste&lt;/i&gt;.&lt;/li&gt;&lt;li&gt; l.&#160;9&#160;: on indique l'id de l'article imm&#233;diatement pr&#233;c&#233;dent dans la variable &lt;code&gt;precedent&lt;/code&gt;. Notez le test qui permet de jouer avec la r&#233;cursion de la l.&#160;10 sans changer &#224; chaque fois &lt;code&gt;precedent&lt;/code&gt;.&lt;/li&gt;&lt;li&gt; l.&#160;13 &#224; 20&#160;: la m&#234;me chose que l.&#160;5 &#224; 11, mais pour les articles qui suivent dans la cha&#238;ne. Notez qu'on &#233;tend la liste vers la fin, et non pas vers le d&#233;but, comme pr&#233;c&#233;dement.&lt;/li&gt;&lt;li&gt; l.&#160;23 &#224; 38&#160;: boucle &lt;code&gt;(ARTICLES)&lt;/code&gt; classique, mais on choisit comme &lt; code&gt;id_article&lt;/code&gt; ceux list&#233;s dans le tableau. Notez que &lt;code&gt;{id_article IN &#8230;}&lt;/code&gt;. On notera&#160;:
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt;l.&#160;24&#160;: l'utilisation de &lt;code&gt;#EXPOSE&lt;/code&gt; pour styler diff&#233;remment l'article courant, de m&#234;me l.&#160;25 et 27 pour n'afficher le liens que sur les articles diff&#233;rent de l'article courant.&lt;/li&gt;&lt;li&gt;l.&#160;25 &lt;code&gt;[ rel=&#034;next&#034;(#ID_ARTICLE|=={#GET{suivant}}|oui)]&lt;/code&gt; et son comparse &lt;code&gt;[ rel=&#034;prev&#034;(#ID_ARTICLE|=={#GET{precedent}}|oui)]&lt;/code&gt; qui permet d'ajouter l'attribut &lt;code&gt;rel&lt;/code&gt; &#224; la balise &lt;code&gt;&lt;a&gt;&lt;/code&gt;, si besoin.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Jeux de squelettes sous forme de plugin pour SPIP&#160;3</title>
		<link>https://geekographie.maieul.net/93</link>
		<guid isPermaLink="true">https://geekographie.maieul.net/93</guid>
		<dc:date>2012-07-23T15:29:48Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Ma&#239;eul</dc:creator>



		<description>
&lt;p&gt;Dans un pr&#233;c&#233;dent article, j'expliquais pourquoi et comment distribuer un jeu de squelettes sous forme de plugin. Cet article est une simple adaptation pour &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt;&#160;3. Les raisons de distribuer un jeux de squelette sous forme de plugin n'ont pas chang&#233;&#160;: je ne les r&#233;p&#232;te donc pas. En revanche, le passage &#224; &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; 3 a introduit la transformation de plugin.xml &#224; paquet.xml. Ces changements sont li&#233;s &#224; la volont&#233; d'avoir un formalisme plus important et plus propre. Voici donc un fichier&#160;(&#8230;)&lt;/p&gt;


-
&lt;a href="https://geekographie.maieul.net/Jeu-de-squelettes" rel="directory"&gt;Jeu de squelettes&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Dans un pr&#233;c&#233;dent article, j'expliquais &lt;a href='https://geekographie.maieul.net/3' class=&#034;spip_in&#034;&gt;pourquoi et comment distribuer un jeu de squelettes sous forme de plugin&lt;/a&gt;. Cet article est une simple adaptation pour &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt;&#160;3.&lt;/p&gt;
&lt;p&gt;Les raisons de distribuer un jeux de squelette sous forme de plugin n'ont pas chang&#233;&#160;: je ne les r&#233;p&#232;te donc pas. En revanche, le passage &#224; &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; 3 a introduit la transformation de &lt;code&gt;plugin.xml&lt;/code&gt; &#224; &lt;code&gt;paquet.xml&lt;/code&gt;. Ces changements sont li&#233;s &#224; la volont&#233; d'avoir un formalisme plus important et plus propre. Voici donc un fichier paquet.xml minimal pour proposer un jeu de squelettes sous forme de paquet.xml. On lira &lt;a href=&#034;http://plugins.spip.net/redaction-du-paquet-xml.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;les sp&#233;cifications du &lt;code&gt;paquet.xml&lt;/code&gt;&lt;/a&gt; pour aller plus loin.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&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;paquet prefix='prefix' categorie='squelette' version='x.y.z' etat='dev/test/stable' compatibilite=&#034;compatibilit&#233; de version SPIP&#034; &gt; &lt;nom&gt;Nom du plugin&lt;/nom&gt; &lt;auteur lien=&#034;siteweb&#034; mail=&#034;auteur@domaine.tld&#034;&gt;Nom de l'auteur&lt;/auteur&gt; &lt;licence lien=&#034;siteweb&#034;&gt;Licence&lt;/licence&gt; &lt;necessite nom=&#034;prefixplugin&#034; compatibilite=&#034;une compatibilite&#034; /&gt; &lt;/paquet&gt; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Selon la documentation officielle, la compatibilit&#233; prend l'une des formes suivantes&#160;:&lt;/p&gt;
&lt;blockquote class=&#034;spip&#034;&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; [v1&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;;v2] qui correspond &#224; v1 &lt;= &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; &lt;= v2&lt;/li&gt;&lt;li&gt; [v1&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;;[ qui correspond &#224; &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; &gt;= v1&lt;/li&gt;&lt;li&gt; [&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;;v2[ qui correspond &#224; &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; &lt; v2&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;et toutes les autres combinaisons avec inclusion ou pas des bornes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ainsi pour indiquer une compatibilit&#233; sur toute la branche &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; 3, mettre&#160;:&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class='xml'&gt;&lt;code&gt;&lt;paquet prefix='prefix' categorie='squelette' version='x.y.z' etat='dev/test/stable' compatibilite=&#034;[3.0.0;3.0.*]&#034; &gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&#192; noter que ni la balise &lt;code&gt;auteur&lt;/code&gt; ni la balise &lt;code&gt;licence&lt;/code&gt; ne sont obligatoires, et leurs attributs sont facultatifs. En outre, on doit mettre une balise &lt;code&gt;auteur&lt;/code&gt; par auteur.&lt;/p&gt;
&lt;p&gt;Vous &lt;strong&gt;devez&lt;/strong&gt; choisir entre l'un des trois &#233;tats du squelette&#160;: dev, test, ou stable. Le prefix du squelette doit &#234;tre parlant mais court. Vous pouvez pr&#233;ciser dans les attributs &lt;code&gt;documentation&lt;/code&gt; et &lt;code&gt;demonstration&lt;/code&gt; de la balise &lt;code&gt;paquet&lt;/code&gt; l'url de la documentation et du site de d&#233;monstration.&lt;/p&gt;
&lt;p&gt;En ce qui concerne la balise &lt;code&gt;necessite&lt;/code&gt;, il faut en mettre une par plugin n&#233;cessaire, en mettant comme valeur de l'attribut &lt;code&gt;nom&lt;/code&gt; le pr&#233;fixe du plugin demand&#233;.&lt;/p&gt;
&lt;p&gt;Vous pouvez aussi pr&#233;ciser les versions compatibles de ces plugins, via l'attribut &lt;code&gt;compatibilite&lt;/code&gt;, ayant la m&#234;me syntaxe que pour la balise &lt;code&gt;paquet.xml&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Il ne faut pas mettre de num&#233;ro de version dans le prefix ni dans le titre&#160;: l'attribut &lt;code&gt;version&lt;/code&gt; sert &#224; cela. Cette attribut doit avoir la forme &lt;code&gt;x.y.z&lt;/code&gt;&#160;:&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Un changement de X indique un changement majeure (rupture de compatibilit&#233;, r&#233;organisation totale du code).&lt;/li&gt;&lt;li&gt; Un changement de Y indique un changement mineure (nouvelle fonctionalit&#233;).&lt;/li&gt;&lt;li&gt; Un changement de Z indique une correction de bug.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Il est tr&#232;s fortement demand&#233;e de mettre les trois chiffres pour une version d'un squelette.&lt;/p&gt;
&lt;h2 class=&#034;h2&#034;&gt;Le fichier de langue&lt;/h2&gt;
&lt;p&gt;Avec &lt;code&gt;paquet.xml&lt;/code&gt; certains &#233;l&#233;ments doivent &#234;tre indiqu&#233;s dans des &lt;a href=&#034;http://programmer.spip.net/Fichiers-de-langues&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;fichiers de langue&lt;/a&gt;. Ces fichiers doivent &#234;tre situ&#233;s dans le dossier &lt;code&gt;lang&lt;/code&gt; du plugin, et avoir un nom sous la forme&#160;: &lt;code&gt;paquet-{pr&#233;fixe_du_plugin}_{code_de_langue}.php&lt;/code&gt;. Par exemple, pour un jeux de squelette dont le prefix est &lt;code&gt;toto&lt;/code&gt;, les cha&#238;nes de langues de descriptions du squelette seront &#224; placer dans &lt;code&gt;lang/paquet-toto_fr.php&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Il existe deux cha&#238;nes de langues &lt;strong&gt;quasi-obligatoires&lt;/strong&gt;&#160;:&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class='xml'&gt;&lt;code&gt;&lt;?php $GLOBALS[$GLOBALS['idx_lang']] = array( 'prefix_description' =&gt; 'Description aussi succincte que possible du plugin, pas une documentation.', 'prefix_slogan' =&gt; 'Slogan du plugin' ); ?&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 class=&#034;h2&#034;&gt;Et le fichier &lt;code&gt;options.php&lt;/code&gt;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;?&lt;/h2&gt;
&lt;p&gt;Dans la pr&#233;c&#233;dente version de cet article, je pr&#233;sentais rapidement un fichier &lt;code&gt;options.php&lt;/code&gt; recommand&#233;s. Ce fichier n'a plus de sens pour une distribution minimale d'un jeu de squelette, puisque &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt;&#160;3 s'occupe automatiquement de supprimer les num&#233;ros devant les titres.&lt;/p&gt;
&lt;p&gt;Cependant, pour une jeu de squelette propre &#224; votre organisation et non g&#233;n&#233;rique, vous pouvez mettre un fichier &lt;code&gt;prefix_options.php&lt;/code&gt; afin d'augmenter le quotat de cache, en mettant les lignes suivantes (pour augmenter &#224; 100 Mo le quota de cache&#160;:&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class='php'&gt;&lt;code&gt;&lt;?php $GLOBALS['quota_cache'] = 100; ?&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 class=&#034;h2&#034;&gt;V&#233;rifier son paquet.xml&lt;/h2&gt;
&lt;p&gt;On pourra utiliser l'outil de &lt;a href=&#034;http://plugins.spip.net/validation/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;v&#233;rification en ligne pour s'assurer de la conformit&#233; du fichier &lt;code&gt;paquet.xml&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Sept bonnes pratiques de d&#233;veloppement avec SPIP</title>
		<link>https://geekographie.maieul.net/77</link>
		<guid isPermaLink="true">https://geekographie.maieul.net/77</guid>
		<dc:date>2012-01-05T00:39:57Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Ma&#239;eul</dc:creator>



		<description>
&lt;p&gt;Je travaille en ce moment sur un squelette qui n'est pas de moi. Il semble que la personne qui l'a cr&#233;&#233; n'&#233;tait pas au courant des bonnes pratiques de d&#233;veloppement sous &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt;. Il est vrai que ces bonnes pratiques ne sont pas n&#233;cessairement accessibles aux premiers abords de la documentation webmaster de &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt;. Voici sept r&#232;gles que je juge indispensables 1. Ne pas mettre de &lt;span class=&#034;caps&#034;&gt;PHP&lt;/span&gt; dans les squelettes Le but de &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; &#233;tait de permettre de ne pas avoir &#224; conna&#238;tre le &lt;span class=&#034;caps&#034;&gt;PHP&lt;/span&gt; pour concevoir un&#160;(&#8230;)&lt;/p&gt;


-
&lt;a href="https://geekographie.maieul.net/Organisation-du-code-17" rel="directory"&gt;Organisation du code&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Je travaille en ce moment sur un squelette qui n'est pas de moi. Il semble que la personne qui l'a cr&#233;&#233; n'&#233;tait pas au courant des bonnes pratiques de d&#233;veloppement sous &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt;. Il est vrai que ces bonnes pratiques ne sont pas n&#233;cessairement accessibles aux premiers abords de la documentation webmaster de &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Voici sept r&#232;gles que je juge indispensables&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h2 class=&#034;h2&#034;&gt;1. Ne pas mettre de &lt;span class=&#034;caps&#034;&gt;PHP&lt;/span&gt; dans les squelettes&lt;/h2&gt;
&lt;p&gt;Le but de &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; &#233;tait de permettre de ne pas avoir &#224; conna&#238;tre le &lt;span class=&#034;caps&#034;&gt;PHP&lt;/span&gt; pour concevoir un site. Tout un syst&#232;me sp&#233;cifique a &#233;t&#233; pr&#233;vu, pour faire des requ&#234;tes &lt;span class=&#034;caps&#034;&gt;SQL&lt;/span&gt;, mais aussi des tests. C'est parfois perturbant pour les utilisateurs venant du monde &lt;span class=&#034;caps&#034;&gt;PHP&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Mais pour autant, c'est une &lt;a href='https://geekographie.maieul.net/13' class=&#034;spip_in&#034;&gt;tr&#232;s bonne pratique de ne quasiment-jamais mettre de &lt;span class=&#034;caps&#034;&gt;PHP&lt;/span&gt; dans un squelette&lt;/a&gt;. En r&#233;alit&#233;, c'est une mauvaise pratique d'en mettre.&lt;/p&gt;
&lt;h2 class=&#034;h2&#034;&gt;2. Ne rien mettre dans le dossier &lt;span class=&#034;caps&#034;&gt;IMG&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Le dossier &lt;span class=&#034;caps&#034;&gt;IMG&lt;/span&gt; ne doit contenir que les images et documents ajout&#233;s par l'utilisateur depuis l'interface priv&#233;. En aucun cas il ne doit contenir des images propres aux squelettes, qui doivent se trouver dans le m&#234;me dossier que les squelettes.&lt;/p&gt;
&lt;p&gt;Choisir de mettre les images dans &lt;span class=&#034;caps&#034;&gt;IMG&lt;/span&gt; (comme je l'ai vu dans ce squelette), c'est compliquer les r&#233;utilisations des squelettes, et m&#233;langer les couches utilisateurs et webmestres de &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt;.&lt;/p&gt;
&lt;h2 class=&#034;h2&#034;&gt;3. Utiliser &lt;code&gt;#CHEMIN&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;La balise &lt;code&gt;#CHEMIN&lt;/code&gt; est une balise indispensable de &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt;. Elle permet d'indiquer l'adresse d'un fichier sans se pr&#233;occuper du nom du dossier parent. En effet, &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; va cherche le fichier pass&#233; en argument dans l'ordre suivant&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;Liste tir&#233;e du site Programmer avec SPIP.&#034; id=&#034;nh1&#034;&gt;1&lt;/a&gt;]&lt;/span&gt;&#160;:&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; squelettes&lt;/li&gt;&lt;li&gt; plugin B d&#233;pendant du plugin A&lt;/li&gt;&lt;li&gt; plugin A&lt;/li&gt;&lt;li&gt; squelettes-dist&lt;/li&gt;&lt;li&gt; prive&lt;/li&gt;&lt;li&gt; ecrire&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Exemple&#160;: j'ai une image dans le dossier &lt;code&gt;squelettes&lt;/code&gt;, je ne fais pas&#160;:&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class='html'&gt;&lt;code&gt;&lt;img src='squelettes/toto.png' /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;mais bien&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class='spip'&gt;&lt;code&gt;&lt;img src='#CHEMIN{toto.png}' /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;mieux, je met mon image &lt;code&gt;toto.png&lt;/code&gt; dans le dossier &lt;code&gt;img&lt;/code&gt; du dossier &lt;code&gt;squelettes&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Je peux alors faire&#160;:&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class='spip'&gt;&lt;code&gt;&lt;img src='#CHEMIN{img/toto.png}' /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;L'avantage d'un tel syst&#232;me est &#233;vident&#160;: permettre d'avoir un dossier squelettes qui ne s'appelle pas squelettes, par exemple lorsqu'on utilise &lt;a href=&#034;#plugin&#034; class=&#034;spip_ancre&#034;&gt;ma sixi&#232;me recommandation&#160;: les squelettes sous forme de plugins&lt;/a&gt;. Mais aussi permettre &#224; &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; de g&#233;rer correctement les &lt;span class=&#034;caps&#034;&gt;URLS&lt;/span&gt; arborescentes (le cas &#233;ch&#233;ant).&lt;/p&gt;
&lt;h2 class=&#034;h2&#034;&gt;4. Utiliser &lt;code&gt;|balise_img&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Il est recommand&#233; lorsqu'on ins&#232;re une balise &lt;code&gt;&lt;img&gt;&lt;/code&gt; de lui mettre des attributs &lt;code&gt;height&lt;/code&gt; et &lt;code&gt;with&lt;/code&gt; pour am&#233;liorer les performances du navigateur lors de l'affichage de la page.&lt;/p&gt;
&lt;p&gt;On peut bien s&#251;r indiquer cela manuellement&#160;:&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class='spip'&gt;&lt;code&gt;&lt;img src='#CHEMIN{toto.png}' width='largeur' height='hauteur' /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Mais supposons que je r&#233;duise la taille de &lt;code&gt;toto.png&lt;/code&gt;&#160;: je dois dans ce cas modifier les attributs &lt;code&gt;height&lt;/code&gt; et &lt;code&gt;width&lt;/code&gt; &#224; chaque fois que je l'utilise.&lt;/p&gt;
&lt;p&gt;Pour &#233;viter cela, &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; pr&#233;voit le filtre &lt;code&gt;|balise_img&lt;/code&gt; qui, lorsqu'il est appliqu&#233; au chemin d'un fichier image, cr&#233;e automatiquement la balise &lt;code&gt;&lt;img&gt;&lt;/code&gt;, avec la hauteur et la largeur du fichier. Ainsi, pas besoin de corriger si on r&#233;duit la taille du fichier.&lt;/p&gt;
&lt;p&gt;Le filtre s'utilise de mani&#232;re tr&#232;s simple&#160;:&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class='spip'&gt;&lt;code&gt;[(#CHEMIN{toto.png}|balise_img)]&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On peut m&#234;me mettre en argument le contenu de l'attribut &lt;code&gt;alt&lt;/code&gt;&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class='spip'&gt;&lt;code&gt;[(#CHEMIN{toto.png}|balise_img{0+0})]&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Voir en deuxi&#232;me argument la valeur de l'attribut &lt;code&gt;class&lt;/code&gt;&#160;:&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class='spip'&gt;&lt;code&gt;[(#CHEMIN{toto.png}|balise_img{0+0,blague_pour_enfants})]&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ce code au final me produit&#160;:&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class='html'&gt;&lt;code&gt;&lt;img src='squelettes/toto.png' width='largeur_du_fichier_toto.png' height='hauteur_du_fichier_toto.png' alt='0+0' class='blague_pour_enfants' /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#034;h2&#034;&gt;5. Utiliser les cha&#238;nes de langues&lt;/h2&gt;
&lt;p&gt;Bien que cela puisse para&#238;tre inutile et fastidieux pour un site monolingue, &lt;a href=&#034;http://programmer.spip.org/-Elements-linguistiques-&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;utiliser les cha&#238;nes de langue&lt;/a&gt; est quand m&#234;me utile pour trois raisons&#160;:&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; on ne sait jamais&#160;: si le site devient multilingue, c'est toujours cela de fait.&lt;/li&gt;&lt;li&gt; il est plus facile d'uniformiser les textes.&lt;/li&gt;&lt;li&gt; il est plus facile de corriger en cas de faute ou de changement d'avis.&lt;/li&gt;&lt;/ul&gt;&lt;h2 class=&#034;h2&#034;&gt;6. Utiliser &lt;code&gt;&lt;INCLURE&gt;&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;C'est un principe de base de l'informatique&#160;: d&#232;s qu'une s&#233;quence d'instructions est utilis&#233;e plusieurs fois, il faut non pas la dupliquer, mais la mettre dans un morceau qu'on appelle plusieurs fois.&lt;/p&gt;
&lt;p&gt;En &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; ce morceau, c'est un &lt;a href=&#034;http://programmer.spip.org/Inclure-des-squelettes&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;fichier inclus&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Typiquement supposons que j'affiche sur toutes les pages de mon site les sites amis.&lt;/p&gt;
&lt;p&gt;Au lieux de copier-coller le code suivant dans les squelettes&#160;:&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class='spip'&gt;&lt;code&gt;&lt;B&gt; &lt;ul&gt; &lt;BOUCLE_sites(SITES){par titre}&gt; &lt;li&gt;&lt;a href='#URL_SITE'&gt;#NOM&lt;/a&gt;&lt;/li&gt; &lt;/BOUCLE&gt; &lt;/ul&gt; &lt;/B&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Je le met dans un fichier &lt;code&gt;sites-amis.html&lt;/code&gt;, situ&#233; dans un dossier &lt;code&gt;inclure&lt;/code&gt; du dossier contenant les squelettes.&lt;/p&gt;
&lt;p&gt;Et je met le code suivant l&#224; o&#249; je souhaite afficher les sites amis&#160;:&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class='spip'&gt;&lt;code&gt;&lt;INCLURE{fond=inclure/sites-amis}&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Cela me permet si je dois modifier les crit&#232;res de cette liste de ne les modifier qu'&#224; un endroit&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb2&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;En outre, cela diminue les requ&#234;tes SQL et donc la charge du serveur SQL, (&#8230;)&#034; id=&#034;nh2&#034;&gt;2&lt;/a&gt;]&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;La logique est donc&#160;: diviser son site en briques r&#233;utilisables. Chaque brique correspondant &#224; fichier et &#224; un morceau logique de page. Ensuite assembler ces briques dans des fichiers plus globaux&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb3&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;Pour comprendre comment passer des param&#232;tres lors de ces inclusions, pour (&#8230;)&#034; id=&#034;nh3&#034;&gt;3&lt;/a&gt;]&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#034;http://www.spip-contrib.net/Modele-de-squelette-reutilisable&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Le mod&#232;le de squelettes Z pousse &#224; l'extr&#234;me cette logique des inclusions&lt;/a&gt;. Je conseille de le suivre&#160;: on gagne largement en maintenance ce qu'on perd en temps d'apprentissage initial.&lt;/p&gt;
&lt;p&gt;Une r&#232;gle importante dans les inclusions&#160;: les balises html qui s'ouvrent dans un fichier doivent se fermer dans le m&#234;me fichier. Il est tr&#232;s mauvais d'ouvrir une balise dans un fichier puis de la fermer dans un autre&#160;: on y est perd en lisibilit&#233; du code, et donc en maintenance&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb4&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;J'ai cr&#251; &#224; un moment qu'une structure html &#233;tait incorrecte du fait qu'un (&#8230;)&#034; id=&#034;nh4&#034;&gt;4&lt;/a&gt;]&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a id=&#034;plugin&#034;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 class=&#034;h2&#034;&gt;7. Mettre ses squelettes sous formes de plugins&lt;/h2&gt;
&lt;p&gt;Cela peut para&#238;tre un luxe ou coquetterie, mais cela facilite &#233;norm&#233;ment le d&#233;ploiement d'un m&#234;me squelette sur plusieurs sites ou le d&#233;m&#233;nagement depuis la version locale vers la version en ligne&#160;:&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; en indiquant les d&#233;pendances aux plugins.&lt;/li&gt;&lt;li&gt; en incluant le fichier &lt;code&gt;mes_options.php&lt;/code&gt; dans le m&#234;me dossier.&lt;/li&gt;&lt;li&gt; en permettant m&#234;me le cas &#233;ch&#233;ant d'ajouter automatiquement un contenu pr&#233;-d&#233;fini.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Un pr&#233;c&#233;dent article d&#233;taille &lt;a href='https://geekographie.maieul.net/3' class=&#034;spip_in&#034;&gt;comment fabriquer ces squelettes-plugins&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div &lt;div class='rss_ps'&gt;&lt;p&gt;Amis SPIPeurs, j'attends vos remarques et ajouts&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;!&lt;/p&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;&lt;a href=&#034;http://programmer.spip.org/La-notion-de-chemin&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Liste tir&#233;e du site Programmer avec &lt;span class=&#034;caps&#034;&gt;&lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;div id=&#034;nb2&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh2&#034; class=&#034;spip_note&#034; title=&#034;Notes 2&#034; rev=&#034;appendix&#034;&gt;2&lt;/a&gt;] &lt;/span&gt;En outre, cela diminue les requ&#234;tes &lt;span class=&#034;caps&#034;&gt;&lt;span class=&#034;caps&#034;&gt;SQL&lt;/span&gt;&lt;/span&gt; et donc la charge du serveur &lt;span class=&#034;caps&#034;&gt;&lt;span class=&#034;caps&#034;&gt;SQL&lt;/span&gt;&lt;/span&gt;, mais la contrepartie est de multiplier les fichiers de caches ainsi que les inclusions &lt;span class=&#034;caps&#034;&gt;&lt;span class=&#034;caps&#034;&gt;PHP&lt;/span&gt;&lt;/span&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;div id=&#034;nb3&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh3&#034; class=&#034;spip_note&#034; title=&#034;Notes 3&#034; rev=&#034;appendix&#034;&gt;3&lt;/a&gt;] &lt;/span&gt;Pour comprendre comment passer des param&#232;tres lors de ces inclusions, pour par exemple conna&#238;tre l'article courant, &lt;a href=&#034;http://www.spip-contrib.net/La-balise-ENV&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;je renvoie &#224; mon article sur la balise #&lt;span class=&#034;caps&#034;&gt;&lt;span class=&#034;caps&#034;&gt;ENV&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;. Cet article devrais &#234;tre mis &#224; jour pour parler des derni&#232;res nouveaut&#233;s. Mais l'essentiel est l&#224;.&lt;/p&gt;
&lt;/div&gt;&lt;div id=&#034;nb4&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh4&#034; class=&#034;spip_note&#034; title=&#034;Notes 4&#034; rev=&#034;appendix&#034;&gt;4&lt;/a&gt;] &lt;/span&gt;J'ai cr&#251; &#224; un moment qu'une structure html &#233;tait incorrecte du fait qu'un fichier avait plus de &lt;code&gt;&lt;div&gt;&lt;/code&gt; ouvrantes que fermantes. En r&#233;alit&#233;, le dernier &lt;code&gt;&lt;/div&gt;&lt;/code&gt; manquant se trouvait ailleurs.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Vous pouvez utiliser (C)Keditor</title>
		<link>https://geekographie.maieul.net/32</link>
		<guid isPermaLink="true">https://geekographie.maieul.net/32</guid>
		<dc:date>2011-02-20T12:50:17Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Ma&#239;eul</dc:creator>



		<description>
&lt;p&gt;Il y a quelque temps, j'avais post&#233; un message extr&#234;mement critique vis &#224; vis de de (F)CKeditor. Je r&#233;vise ici mon jugement, suite au dernier article publi&#233; sur Contrib. Je continue &#224; penser que (F)Ckeditor est une mauvaise id&#233;e parce qu'il incite &#224; penser forme et non sens. Je continuer &#224; penser que l'apprentissage des raccourcis typographiques de &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; a plus de sens, m&#234;me si cela peut prendre un peu plus de temps (et encore). Pour autant, la derni&#232;re contribution enl&#232;ve une de mes&#160;(&#8230;)&lt;/p&gt;


-
&lt;a href="https://geekographie.maieul.net/Plugin" rel="directory"&gt;Plugin&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Il y a quelque temps, j'avais post&#233; &lt;a href='https://geekographie.maieul.net/29' class=&#034;spip_in&#034;&gt;un message extr&#234;mement critique vis &#224; vis de de (F)CKeditor&lt;/a&gt;. Je r&#233;vise ici mon jugement, suite au &lt;a href=&#034;http://www.spip-contrib.net/Preserver-la-typo-SPIP-avec-CKeditor&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;dernier article publi&#233; sur Contrib&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Je continue &#224; penser que (F)Ckeditor est une mauvaise id&#233;e parce qu'il incite &#224; penser forme et non sens. Je continuer &#224; penser que l'apprentissage des raccourcis typographiques de &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; a plus de sens, m&#234;me si cela peut prendre un peu plus de temps (et encore).&lt;/p&gt;
&lt;p&gt;Pour autant, la derni&#232;re contribution enl&#232;ve une de mes critiques majeures, en fait ma critique majeure, &#224; savoir que (F)Ckeditor produit du &lt;span class=&#034;caps&#034;&gt;HTML&lt;/span&gt; et non pas du code &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;En effet, il est d&#233;sormais possible de dire &#224; (F)Ckeditor de &lt;a href=&#034;http://www.spip-contrib.net/Preserver-la-typo-SPIP-avec-CKeditor&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;produire du &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; et non pas du &lt;span class=&#034;caps&#034;&gt;HTML&lt;/span&gt;&lt;/a&gt;.
Ce qui &#224; l'avantage&#160;:&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; de permettre une conversion plus simple vers d'autres formats.&lt;/li&gt;&lt;li&gt; de permettre de se passer de CKeditor le cas &#233;ch&#233;ant.&lt;/li&gt;&lt;li&gt; de pouvoir utiliser les crayons.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div &lt;div class='rss_ps'&gt;&lt;p&gt;Je n'ai pas test&#233;, mais je fais confiance &#224; l'auteur de l'article. Reste &#224; savoir comment nettoyer une base qui a &#233;t&#233; salie par les anciennes versions du plugin.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>N'utilisez pas (F)CKeditor&#160;!</title>
		<link>https://geekographie.maieul.net/29</link>
		<guid isPermaLink="true">https://geekographie.maieul.net/29</guid>
		<dc:date>2011-01-30T19:11:58Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Ma&#239;eul</dc:creator>



		<description>
&lt;p&gt;Les diff&#233;rentes variantes du plugin (F)CKeditor de &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; ont un certain succ&#232;s. Ainsi, si j'en crois le site des statistiques SPIPiennes, pr&#232;s de 11% des sites &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; l'utiliseraient, ce qui prouve qu'il y a demande. Pourtant, c'est un tr&#232;s mauvais choix technique. L'exp&#233;rience que j'ai eue avec tous ceux qui l'ont install&#233; me le confirme&#160;: s'il semble plus pratique au d&#233;but, il entra&#238;ne rapidement des soucis. Une confusion des genres Pourquoi utiliser ce plugin&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;? Deux raisons sont&#160;(&#8230;)&lt;/p&gt;


-
&lt;a href="https://geekographie.maieul.net/Plugin" rel="directory"&gt;Plugin&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Les diff&#233;rentes variantes du plugin (F)CKeditor de &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; ont un certain succ&#232;s. Ainsi, si j'en crois le &lt;a href=&#034;http://stats.spip.org/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;site des statistiques SPIPiennes&lt;/a&gt;, pr&#232;s de 11% des sites &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; l'utiliseraient, ce qui prouve qu'il y a demande.&lt;/p&gt;
&lt;p&gt;Pourtant, c'est un &lt;i&gt;tr&#232;s mauvais choix&lt;/i&gt; technique. L'exp&#233;rience que j'ai eue avec tous ceux qui l'ont install&#233; me le confirme&#160;: s'il semble plus pratique au d&#233;but, il entra&#238;ne rapidement des soucis.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h2 class=&#034;h2&#034;&gt;Une confusion des genres&lt;/h2&gt;
&lt;p&gt;Pourquoi utiliser ce plugin&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;? Deux raisons sont principalement &#233;voqu&#233;es&#160;:&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; permettre aux utilisateurs de ne pas avoir &#224; apprendre les raccourcis typographiques de &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt;.&lt;/li&gt;&lt;li&gt; permettre aux utilisateurs de personnaliser l'apparence de leur article.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Je passe sur la premi&#232;re raison, &#233;tant donn&#233; que je dirais quelques alternatives.&lt;/p&gt;
&lt;p&gt;La seconde raison est tr&#232;s mauvaise&#160;:&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Elle incite &#224; confondre sens et mani&#232;re de pr&#233;senter.&lt;/li&gt;&lt;li&gt; Elle incite &#224; se concentrer non pas sur le contenu d'un article, mais sur la mani&#232;re dont il sera pr&#233;sent&#233;.&lt;/li&gt;&lt;li&gt; Elle a pour cons&#233;quence, bien souvent, d'obtenir un site dont l'unit&#233; graphique n'est plus assur&#233;e, ce qui produit au mieux des chocs visuels, au pire des crises d'&#233;pilepsies.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Autrement dit, elle rend inutile le travail du toilemestre. Elle rend m&#234;me inutile la logique d'un &lt;a href=&#034;https://fr.wikipedia.org/wiki/CMS&#034; class=&#034;spip_glossaire&#034; rel=&#034;external&#034;&gt;&lt;span class=&#034;caps&#034;&gt;&lt;span class=&#034;caps&#034;&gt;CMS&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;, puisqu'un &lt;a href=&#034;https://fr.wikipedia.org/wiki/CMS&#034; class=&#034;spip_glossaire&#034; rel=&#034;external&#034;&gt;&lt;span class=&#034;caps&#034;&gt;&lt;span class=&#034;caps&#034;&gt;CMS&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; est l&#224; justement pour distinguer le travail de r&#233;daction, qui rel&#232;ve des r&#233;dacteurs (si si&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;!) et celui de pr&#233;sentation du contenu, qui rel&#232;ve du webmestre.&lt;/p&gt;
&lt;p&gt;Ainsi une des cons&#233;quences pourra &#234;tre que le r&#233;dacteur confonde, par exemple un intertitre et un texte &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;grosse police rouge&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;.&lt;/p&gt;
&lt;h2 class=&#034;h2&#034;&gt;Une base de donn&#233;e bousill&#233;e&lt;/h2&gt;
&lt;p&gt;Ce type de plugins n'utilise pas les raccourcis typographiques de &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt;, mais introduit directement du &lt;span class=&#034;caps&#034;&gt;HTML&lt;/span&gt; dans la base de donn&#233;e.&lt;/p&gt;
&lt;p&gt;Cons&#233;quence&#160;:&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; un &lt;span class=&#034;caps&#034;&gt;HTML&lt;/span&gt; bien souvent foutoir et illisible, impossible &#224; &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#233;purer&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187; simplement, par exemple le jour o&#249; l'on d&#233;cide d'avoir un site &#224; l'allure coh&#233;rente.&lt;/li&gt;&lt;li&gt; l'absence d'abstraction entra&#238;ne une conversion plus difficile vers des formats autres que le &lt;a href=&#034;https://fr.wikipedia.org/wiki/HTML&#034; class=&#034;spip_glossaire&#034; rel=&#034;external&#034;&gt;&lt;span class=&#034;caps&#034;&gt;&lt;span class=&#034;caps&#034;&gt;HTML&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; (&lt;a href=&#034;https://fr.wikipedia.org/wiki/LaTeX&#034; class=&#034;spip_glossaire&#034; rel=&#034;external&#034;&gt;LaTeX&lt;/a&gt;, &lt;a href=&#034;https://fr.wikipedia.org/wiki/XML&#034; class=&#034;spip_glossaire&#034; rel=&#034;external&#034;&gt;&lt;span class=&#034;caps&#034;&gt;&lt;span class=&#034;caps&#034;&gt;XML&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; et j'en passe).&lt;/li&gt;&lt;li&gt; l'absence d'abstraction rend tout changement beaucoup plus complexe.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Exemple du troisi&#232;me point&#160;: alors que le syst&#232;me des documents de &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; affecte un num&#233;ro &#224; chaque document, num&#233;ro qui est appel&#233; dans le texte gr&#226;ce au raccourci &lt;code&gt;&lt;imgxxx&gt;&lt;/code&gt;. Il est ainsi possible d'appeler plusieurs fois un m&#234;me document dans divers articles, puis de modifier &lt;i&gt;une seule fois&lt;/i&gt; ce document et que cela se r&#233;pande sur tous les articles. &lt;s&gt;Ce n'est pas du tout possible avec FCKeditor&lt;/s&gt;. En fait c'est possible avec la derni&#232;re version du plugin. Si le plugin s'am&#233;liore afin d'utiliser les raccourcis de &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; et non pas du &lt;span class=&#034;caps&#034;&gt;HTML&lt;/span&gt;, ma critique tombera &#224; l'eau.&lt;/p&gt;
&lt;h2 class=&#034;h2&#034;&gt;La perte des crayons&lt;/h2&gt;
&lt;p&gt;Et oui, il est impossible d'utiliser avec cela le plugin &lt;a href=&#034;http://www.spip-contrib.net/Les-crayons&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Crayons&lt;/a&gt;. Or ce plugin est incontestablement un tr&#232;s bon plugin et une aide pr&#233;cieuse pour le maintien d'un site, puisqu'il permet d'&#233;diter le &lt;strong&gt;contenu&lt;/strong&gt; sur le site public.&lt;/p&gt;
&lt;p&gt;Si on essaye de crayonner un article cr&#233;&#233; avec CKeditor, on obtient alors une catastrophe, puisque le &lt;span class=&#034;caps&#034;&gt;HTML&lt;/span&gt; appara&#238;t dans le formulaire.&lt;/p&gt;
&lt;h2 class=&#034;h2&#034;&gt;Quelles alternatives&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;?&lt;/h2&gt;&lt;ol class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Apprendre les &lt;a href=&#034;http://www.spip.net/fr_article1578.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;raccourcis typographiques de &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt;&lt;/a&gt; n'est pas la mer &#224; boire et permet aussi de se concentrer sur le sens. On pourra m&#234;me obtenir un tableau r&#233;capitulatif&#160;: &lt;a href=&#034;http://www.uzine.net/IMG/pdf/doc-273.pdf&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;http://www.uzine.net/IMG/pdf/doc-273.pdf&lt;/a&gt;. Et le temps pour un webmestre de formation des r&#233;dacteurs sera largement compens&#233; par le non-temps pass&#233; &#224; d&#233;m&#234;ler le &lt;span class=&#034;caps&#034;&gt;HTML&lt;/span&gt; produit par CKEditor.&lt;/li&gt;&lt;li&gt; On pourra utiliser le &lt;a href=&#034;http://www.spip-contrib.net/Porte-plume,3117&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;porte-plume&lt;/a&gt; qui offre une barre typographique produisant des raccourcis &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt;, propre. Et les extensions du porte-plume permettront de combler certains manques.&lt;/li&gt;&lt;li&gt; On pourra &#233;galement utiliser le plugin &lt;a href=&#034;http://www.spip-contrib.net/odt2spip-creation-d-articles-a-partir-de-fichiers&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Odt2SPIP&lt;/a&gt; qui permettra de convertir un fichier Openoffice &lt;i&gt;structur&#233; selon le sens&lt;/i&gt; en article &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt;.&lt;/li&gt;&lt;li&gt; Pour la gestion des documents, on utilisera avec pertinence le &lt;a href=&#034;http://www.spip-contrib.net/Mediatheque&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;plugin m&#233;diath&#232;que&lt;/a&gt;, &#233;ventuellement en conjonction avec la &lt;a href=&#034;http://www.spip-contrib.net/MediaBox&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;M&#233;diabox&lt;/a&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div &lt;div class='rss_ps'&gt;&lt;p&gt;Cet article aurait pu &#234;tre publi&#233; sur Contrib &#8230; mais celui-ci n'a pas pour but d'engendrer une pol&#233;mique.&lt;/p&gt;
&lt;p&gt;On lira &#233;galement &lt;a href='https://geekographie.maieul.net/32' class=&#034;spip_in&#034;&gt;mon article suite aux modifications&lt;/a&gt; apport&#233;es dans le code de (F)CKeditor.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Afficher plusieurs fois un m&#234;me objet SPIP</title>
		<link>https://geekographie.maieul.net/16</link>
		<guid isPermaLink="true">https://geekographie.maieul.net/16</guid>
		<dc:date>2010-12-19T22:11:04Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Ma&#239;eul</dc:creator>



		<description>
&lt;p&gt;Dans le cadre d'un projet associatif, je me sert de &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; pour g&#233;rer une base de donn&#233;e. Cette base de donn&#233;e contient un certain nombre d'objets &#8212; des cartes de jeux en fait, que j'ai &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;traduites&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187; en &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; par des articles &#8212; que j'ai besoin d'afficher plusieurs fois. Le nombre d'affichages n&#233;cessaires est propre &#224; chaque cartes / articles. Pour arriver &#224; mes fins, voici comment j'ai fait&#160;: J'ai ajout&#233; un champ extra nombre &#224; la table articles. Dans ce champ je pr&#233;cise le nombre de fois&#160;(&#8230;)&lt;/p&gt;


-
&lt;a href="https://geekographie.maieul.net/Boucle" rel="directory"&gt;Boucle&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Dans le cadre d'un projet associatif, je me sert de &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; pour g&#233;rer une base de donn&#233;e. Cette base de donn&#233;e contient un certain nombre d'objets &#8212; des cartes de jeux en fait, que j'ai &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;traduites&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187; en &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; par des articles &#8212; que j'ai besoin d'afficher plusieurs fois. Le nombre d'affichages n&#233;cessaires est propre &#224; chaque cartes / articles.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Pour arriver &#224; mes fins, voici comment j'ai fait&#160;:&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; J'ai ajout&#233; un &lt;a href=&#034;http://www.spip-contrib.net/Champs-Extras-2&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;champ extra&lt;/a&gt; &lt;code&gt;nombre&lt;/code&gt; &#224; la table &lt;code&gt;articles&lt;/code&gt;.&lt;/li&gt;&lt;li&gt; Dans ce champ je pr&#233;cise le nombre de fois o&#249; je souhaite afficher un article. C'est donc un champs de type &lt;code&gt;INT&lt;/code&gt;.&lt;/li&gt;&lt;li&gt; J'utilise ensuite le plugin &lt;a href=&#034;http://www.spip-contrib.net/SPIP-Bonux&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;&lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt;-Bonux&lt;/a&gt; pour boucler sur un tableau &lt;span class=&#034;caps&#034;&gt;PHP&lt;/span&gt; que je g&#233;n&#232;re gr&#226;ce &#224; la fonction &lt;a href=&#034;http://php.net/manual/fr/function.array-fill.php&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;&lt;code&gt;array_fill()&lt;/code&gt;&lt;/a&gt; de &lt;span class=&#034;caps&#034;&gt;PHP&lt;/span&gt;. Ce tableau contient &lt;code&gt;#NOMBRE&lt;/code&gt; fois la valeur &lt;code&gt;''&lt;/code&gt;.&lt;/li&gt;&lt;li&gt; A l'int&#233;rieur de cette boucle, je peux r&#233;cup&#233;rer les informations de l'article directement avec les balise &lt;code&gt;#CHAMP&lt;/code&gt; dont &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; reconnaitra qu'elle font allusion &#224; la boucle &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;m&#232;re&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Cela nous donne donc&#160;:&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class='spip'&gt;&lt;code&gt;&lt;BOUCLE_article(ARTICLES)&gt; &lt;BOUCLE_repeter(POUR){tableau #VAL{0}|array_fill{#NOMBRE,''}}&gt; J'affiche le titre de l'article #TITRE qui porte le num&#233;ro #ID_ARTICLE etc. &lt;br /&gt; &lt;/BOUCLE_repeter&gt; &lt;/BOUCLE_article&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div &lt;div class='rss_ps'&gt;&lt;p&gt;Le code expos&#233; ici n'est pas tout &#224; fait celui que j'utilise pour mon projet, car dans celui-ci je dois m&#233;langer de mani&#232;re al&#233;atoire les diff&#233;rents articles. Je passe donc par un tableau global que je remplis des valeurs des &lt;code&gt;#ID_ARTICLE&lt;/code&gt; le nombre de fois n&#233;cessaires.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Notifications sur un forum plat</title>
		<link>https://geekographie.maieul.net/15</link>
		<guid isPermaLink="true">https://geekographie.maieul.net/15</guid>
		<dc:date>2010-12-17T10:17:40Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Ma&#239;eul</dc:creator>



		<description>
&lt;p&gt;Sur ce site j'utilise le plugin Notifications, pour que les personnes re&#231;oivent les r&#233;ponses &#224; leurs r&#233;actions. J'ai coch&#233; dans la configuration &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;Fil de discussion&#160;: les participants au m&#234;me fil de discussion re&#231;oivent les notifications des forums (publics).&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;. Mais les personnes ne recevaient pas les notifications. Voil&#224; comment j'ai r&#233;solu le probl&#232;me. Le probl&#232;me, c'est que mes forums sont en mode plat. Donc il n'y a pas vraiment de fil de discussion, mais seulement des messages&#160;(&#8230;)&lt;/p&gt;


-
&lt;a href="https://geekographie.maieul.net/Plugin" rel="directory"&gt;Plugin&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Sur ce site j'utilise le plugin &lt;a href=&#034;http://www.spip-contrib.net/Notifications,2360&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Notifications&lt;/a&gt;, pour que les personnes re&#231;oivent les r&#233;ponses &#224; leurs r&#233;actions.&lt;/p&gt;
&lt;p&gt;J'ai coch&#233; dans la configuration &#171;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;Fil de discussion&#160;: les participants au m&#234;me fil de discussion re&#231;oivent les notifications des forums (publics).&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;&#187;. Mais les personnes ne recevaient pas les notifications. Voil&#224; comment j'ai r&#233;solu le probl&#232;me.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Le probl&#232;me, c'est que mes forums sont en mode &lt;code&gt;{plat}&lt;/code&gt;&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb2-1&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;En fait j'utilise le plugin de Romy&#160;: Comments, qui met ce mode&#034; id=&#034;nh2-1&#034;&gt;1&lt;/a&gt;]&lt;/span&gt;. Donc il n'y a pas vraiment de fil de discussion, mais seulement des messages individuels sans liens, du coup notification ne peut fonctionner.&lt;/p&gt;
&lt;p&gt;La solution est de s'arranger pour avoir un fil de discussion unique.&lt;/p&gt;
&lt;p&gt;Pour cela, j'appel de la mani&#232;re suivante le formulaire de r&#233;action&#160;:&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class='spip'&gt;&lt;code&gt;&lt;BOUCLE_forum(FORUMS){!par date}{id_article}{0,1}&gt;
#FORMULAIRE_FORUM
&lt;/BOUCLE_forum&gt;
#FORMULAIRE_FORUM
&lt;//B_forum&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ainsi, le message est syst&#233;matiquement post&#233; en r&#233;action au dernier message, et s'il n'y a pas de message, il est post&#233; directement en r&#233;action &#224; l'article, et un fil de discussion est ouvert.&lt;/p&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#034;nb2-1&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh2-1&#034; class=&#034;spip_note&#034; title=&#034;Notes 2-1&#034; rev=&#034;appendix&#034;&gt;1&lt;/a&gt;] &lt;/span&gt;En fait j'utilise le plugin de Romy&#160;: &lt;a href=&#034;http://www.spip-contrib.net/Comments-2-pour-SPIP-2&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Comments&lt;/a&gt;, qui met ce mode &lt;code&gt;{plat}&lt;/code&gt;&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Jeux de squelettes sous forme de plugin</title>
		<link>https://geekographie.maieul.net/3</link>
		<guid isPermaLink="true">https://geekographie.maieul.net/3</guid>
		<dc:date>2010-12-05T15:08:14Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Ma&#239;eul</dc:creator>



		<description>
&lt;p&gt;Pourquoi mes squelettes sont-ils d&#233;sormais enti&#232;rement sous forme de plugin&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;? Pourquoi n'utilise-je plus la technique classique, &#224; savoir un dossier /squelettes &#224; la racine de &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;? Pourquoi fais-je un squelettes sous forme de plugin&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;? En dehors des squelettes g&#233;n&#233;riques, il est utile maintenant de faire tout ses jeux de squelettes sous forme de plugin. Pourquoi faire&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;? Avoir un seul dossier qui contient les squelettes et le fichier d'options. Plus besoins d'avoir un fichier&#160;(&#8230;)&lt;/p&gt;


-
&lt;a href="https://geekographie.maieul.net/Jeu-de-squelettes" rel="directory"&gt;Jeu de squelettes&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Pourquoi mes squelettes sont-ils d&#233;sormais enti&#232;rement sous forme de plugin&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;? Pourquoi n'utilise-je plus la technique classique, &#224; savoir un dossier &lt;code&gt;/squelettes&lt;/code&gt; &#224; la racine de &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt;&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;? Pourquoi fais-je un squelettes sous forme de plugin&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;?&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;En dehors &lt;a href=&#034;http://programmer.spip.org/Squelettes-ou-plugins&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;des squelettes g&#233;n&#233;riques&lt;/a&gt;, il est utile maintenant de faire tout ses jeux de squelettes sous forme de plugin.&lt;/p&gt;
&lt;h2 class=&#034;h2&#034;&gt;Pourquoi faire&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;?&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Avoir un seul dossier qui contient les squelettes et le fichier d'options. Plus besoins d'avoir un fichier &lt;code&gt;mes_options.php&lt;/code&gt; &#224; part.&lt;/li&gt;&lt;li&gt; Disposer de la syntaxe du fichier plugin.xml pour dire les d&#233;pendances du squelettes.&lt;/li&gt;&lt;/ul&gt;&lt;h2 class=&#034;h2&#034;&gt;Comment faire&lt;small class=&#034;fine d-inline&#034;&gt;&#160;&lt;/small&gt;?&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Cr&#233;er un dossier dans lequel vous mettrez l'ensemble de vos squelettes (comme vous faisiez classiquement avant).&lt;/li&gt;&lt;li&gt; Si vous &#234;tes sous &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt;&#160;3, reportez &#224; l'&lt;a href='https://geekographie.maieul.net/93' class=&#034;spip_in&#034;&gt;article correspondant au &lt;code&gt;paquet.xml&lt;/code&gt;&lt;/a&gt;, sinon continuez votre lecture.&lt;/li&gt;&lt;li&gt; Dedans y mettre le fichier plugin.xml prochainement. Cet article pourra &#234;tre p&#233;rim&#233; le jour o&#249; vous le lirez.]] suivant&#160;:&lt;/li&gt;&lt;/ul&gt;&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class='xml'&gt;&lt;code&gt;&lt;plugin&gt; &lt;nom&gt;NomSquelette&lt;/nom&gt; &lt;categorie&gt;squelette&lt;/categorie&gt; &lt;auteur&gt; Votre nom &lt;/auteur&gt; &lt;version&gt;0.1&lt;/version&gt; &lt;etat&gt;stable&lt;/etat&gt; &lt;description&gt; Un descriptif autant complet que possible, utilisation de la syntaxe spip autoris&#233;e.&lt;/description&gt; &lt;prefix&gt;prefix&lt;/prefix&gt; &lt;options&gt;prefix_options&lt;/options&gt; &lt;necessite id=&#034;prefixplugin&#034; /&gt; &lt;/plugin&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Mettez autant de n&#233;cessite que de plugin n&#233;cessaire. Attention la valeur de l'attribut &lt;code&gt;id&lt;/code&gt; est le prefix du plugin (dans son fichier plugin.xml) pas son nom.&lt;/p&gt;
&lt;p&gt;Remplacez &lt;code&gt;prefix&lt;/code&gt; par un pr&#233;fixe &#224; vous. A titre d'exemple, le plugin.xml du &lt;a href=&#034;http://geekographie.maieul.net/plugins/squelettes-geek/plugin.xml&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;squelette de ce site&lt;/a&gt;.&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Dans le fichier prefix_options.php, mettez les lignes suivantes&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb3-1&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;Voir aussi mon pr&#233;c&#232;dent article.&#034; id=&#034;nh3-1&#034;&gt;1&lt;/a&gt;]&lt;/span&gt;&#160;:&lt;/li&gt;&lt;/ul&gt;&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class='php'&gt;&lt;code&gt;&lt;?php $GLOBALS['table_des_traitements']['TITRE'][]='typo(supprimer_numero(%s),&#034;TYPO&#034;,$connect)'; $GLOBALS['table_des_traitements']['NOM'][]='typo(supprimer_numero(%s),&#034;TYPO&#034;,$connect)'; $GLOBALS['table_des_traitements']['TYPE']['mots']='typo(supprimer_numero(%s),&#034;TYPO&#034;,$connect)'; $GLOBALS['table_des_traitements']['NOM_SITE']='typo(supprimer_numero(%s),&#034;TYPO&#034;,$connect)'; $GLOBALS['quota_cache'] = 100; ?&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Cela supprimera automatique les num&#233;ros dans les titres d'articles, dans les noms d'auteurs etc. La valeur de &lt;code&gt;$GLOBALS['quota_cache']&lt;/code&gt; est par d&#233;faut &#224; 10 (Mo) mais si vous utilisez un squelette de type Z, ce n'est pas assez.&lt;/p&gt;
&lt;p&gt;Copiez le dossier ainsi cr&#233;&#233; dans le dossier de plugin. Activez depuis l'espace priv&#233; de &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; ce plugin.&lt;/p&gt;
&lt;p&gt;Si vous avez peur que quelqu'un d&#233;sactive ce plugin et mette en l'air la pr&#233;sentation plugin, vous pouvez &#224; partir de &lt;span class=&#034;caps&#034;&gt;SPIP&lt;/span&gt; 2.1 mettre dans le dossier extension, ce qui rendra non d&#233;sactivable le plugin/squelette.&lt;/p&gt;
&lt;p&gt;Pour la syntaxe compl&#232;te du fichier plugin.xml c'est par l&#224;&#160;: &lt;a href=&#034;http://doc.spip.org/@Plugin-xml&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;http://doc.spip.org/@Plugin-xml&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#034;nb3-1&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh3-1&#034; class=&#034;spip_note&#034; title=&#034;Notes 3-1&#034; rev=&#034;appendix&#034;&gt;1&lt;/a&gt;] &lt;/span&gt;&lt;a href='https://geekographie.maieul.net/2' class=&#034;spip_in&#034;&gt;Voir aussi mon pr&#233;c&#232;dent article&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		</content:encoded>


		

	</item>



</channel>

</rss>
