<?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?page=backend&amp;lang=fr" 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>Migration d'un SPIP 1 ou 2 vers SPIP 3.2.19</title>
		<link>https://www.spip.net/fr_article7338.html</link>
		<guid isPermaLink="true">https://www.spip.net/fr_article7338.html</guid>
		<dc:date>2026-04-15T18:35:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Pierre KUHN</dc:creator>



		<description>
&lt;p&gt;Cette documentation concerne le passage d'un SPIP 1 ou 2 vers SPIP 3.2.19 &lt;br class='autobr' /&gt;
La m&#233;thode propos&#233;e permet de partir sur des bases saines en effectuant un grand m&#233;nage dans les fichiers de SPIP et de repartir &#224; z&#233;ro sur de nouveaux plugins (SPIP permet d'installer des plugins tr&#232;s rapidement). &lt;br class='autobr' /&gt; Sauvegarde avant la migration &lt;br class='autobr' /&gt;
Sauvegarde de la base de donn&#233;es Si vous en avez la possibilit&#233;, il est sage de faire une sauvegarde de la base MySQL via PHPMyAdmin, disponible sur beaucoup (&#8230;)&lt;/p&gt;


-
&lt;a href="https://www.spip.net/fr_rubrique155.html" rel="directory"&gt;&#201;volutions et mises &#224; jour&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Cette documentation concerne le passage d'un SPIP 1 ou 2 vers SPIP 3.2.19&lt;/p&gt;
&lt;p&gt;La m&#233;thode propos&#233;e permet de partir sur des bases saines en effectuant un grand m&#233;nage dans les fichiers de SPIP et de repartir &#224; z&#233;ro sur de nouveaux plugins (SPIP permet d'installer des plugins tr&#232;s rapidement).&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;!--sommaire--&gt;&lt;div class=&#034;well nav-sommaire nav-sommaire-9&#034; id=&#034;nav69f7189881ccd7.87017697&#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-Sauvegarde-avant-la-migration&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Sauvegarde-avant-la-migration&#034; class=&#034;spip_ancre&#034;&gt;Sauvegarde avant la migration&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Verification-de-l-encodage-avant-la-migration&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Verification-de-l-encodage-avant-la-migration&#034; class=&#034;spip_ancre&#034;&gt;V&#233;rification de l'encodage avant la migration&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Verification-des-plugins&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Verification-des-plugins&#034; class=&#034;spip_ancre&#034;&gt;V&#233;rification des plugins&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Preparation-de-la-migration&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Preparation-de-la-migration&#034; class=&#034;spip_ancre&#034;&gt;Pr&#233;paration de la migration&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Mise-a-niveau-de-la-base&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Mise-a-niveau-de-la-base&#034; class=&#034;spip_ancre&#034;&gt;Mise &#224; niveau de la base&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-En-cas-de-probleme&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#En-cas-de-probleme&#034; class=&#034;spip_ancre&#034;&gt;En cas de probl&#232;me&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Installation-des-plugins-et-squelettes&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Installation-des-plugins-et-squelettes&#034; class=&#034;spip_ancre&#034;&gt;Installation des plugins et squelettes&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Menage&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Menage&#034; class=&#034;spip_ancre&#034;&gt;M&#233;nage&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-A-propos-de-cette-documentation&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#A-propos-de-cette-documentation&#034; class=&#034;spip_ancre&#034;&gt;&#192; propos de cette documentation&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;Sauvegarde-avant-la-migration&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Sauvegarde-avant-la-migration'&gt;&lt;a id=&#034;Sauvegarde_avant_la_migration&#034;&gt;&lt;/a&gt;
Sauvegarde avant la migration &lt;a class='sommaire-back sommaire-back-9' href='#s-Sauvegarde-avant-la-migration' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Sauvegarde de la base de donn&#233;es&lt;/strong&gt;
&lt;br /&gt;- Si vous en avez la possibilit&#233;, il est sage de faire une sauvegarde de la base MySQL via PHPMyAdmin, disponible sur beaucoup d'h&#233;bergements, en faisant le choix d'une sauvegarde compress&#233;e.
&lt;br /&gt;- SPIP propose aussi un syst&#232;me de sauvegarde&lt;/p&gt;
&lt;ol class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; R&#233;cup&#233;rer par ftp le fichier g&#233;n&#233;r&#233; : format xml pour les spip2, dans tmp/dump (ou ecrire/data pour un spip plus ancien)&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Sauvegarde des dossiers personnels&lt;/strong&gt;
&lt;br /&gt;- R&#233;cup&#233;rer par ftp les r&#233;pertoires :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;i&gt;IMG&lt;/i&gt;&lt;/li&gt;&lt;li&gt; &lt;i&gt;config&lt;/i&gt; (pour les spip tr&#232;s ancien munissez-vous de vos codes de base de donn&#233;es)&lt;/li&gt;&lt;li&gt; &#233;ventuellement &lt;i&gt;squelettes&lt;/i&gt; si son contenu pourrait &#234;tre r&#233;utilis&#233;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Avec la sauvegarde de votre base de donn&#233;es et le dossier IMG (qui contient tous les documents et images joints &#224; votre site), vos contenus sont sauvegard&#233;s. &lt;i&gt;config&lt;/i&gt; contient les infos de connexion &#224; la base de donn&#233;es et squelettes vos personnalisations de squelette. Notez &#233;ventuellement la version pr&#233;cise de SPIP utilis&#233;e (avant cette migration).&lt;/p&gt;
&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Verification-de-l-encodage-avant-la-migration&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Verification-de-l-encodage-avant-la-migration'&gt;&lt;a id=&#034;Verification_encodage&#034;&gt;&lt;/a&gt;
V&#233;rification de l'encodage avant la migration &lt;a class='sommaire-back sommaire-back-9' href='#s-Verification-de-l-encodage-avant-la-migration' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Si votre site est suffisamment r&#233;cent (site en utf-8) ou si l'encodage de celui-ci est d&#233;j&#224; en utf-8, vous pouvez passer &#224; l'&#233;tape suivante.&lt;/p&gt;
&lt;p&gt;Pour le savoir, voir dans les param&#232;tres de langue.&lt;/p&gt;
&lt;p&gt;Si l'encodage est en iso-8859-1, il est conseill&#233; de passer votre site en utf-8. Une telle proc&#233;dure est propos&#233; dans SPIP 2 :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; faire une sauvegarde de la base de donn&#233;es (en principe vous en avez d&#233;j&#224; une)&lt;/li&gt;&lt;li&gt; dans la page de gestion des langues, cliquer sur le lien propos&#233; vers &#171; la page de conversion vers l'utf-8 &#187; ( url : ecrire/ ?exec=convert_utf8)&lt;/li&gt;&lt;li&gt; lancer ensuite la page : ecrire/ ?exec=sql_convert_utf8&lt;/li&gt;&lt;/ul&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Verification-des-plugins&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Verification-des-plugins'&gt;&lt;a id=&#034;Verification_plugins&#034;&gt;&lt;/a&gt;
V&#233;rification des plugins &lt;a class='sommaire-back sommaire-back-9' href='#s-Verification-des-plugins' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Penser &#224; mettre &#224; jour vos plugins pour limiter les incompatibilit&#233;s.&lt;/p&gt;
&lt;p&gt;Les plugins non compatibles seront d&#233;sactiv&#233;s lors de l'installation de la nouvelle version.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Preparation-de-la-migration&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Preparation-de-la-migration'&gt;&lt;a id=&#034;Preparation_migration&#034;&gt;&lt;/a&gt;
Pr&#233;paration de la migration &lt;a class='sommaire-back sommaire-back-9' href='#s-Preparation-de-la-migration' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;V&#233;rifiez la version PHP qui est ex&#233;cut&#233;e sur votre serveur (via &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;https://example.com/ecrire/?exec=info&lt;/code&gt; par exemple). &lt;br class='autobr' /&gt;
SPIP 2 fonctionne en PHP 4.x et SPIP 3 n&#233;cessite PHP en version 5.1 minimum. &lt;br class='autobr' /&gt;
Si n&#233;cessaire, voyez avec votre h&#233;bergeur comment utiliser une version r&#233;cente de PHP 5.3 ou 5.4, par exemple.&lt;/p&gt;
&lt;p&gt;Pour ex&#233;cuter SPIP 3.2, il vous &lt;strong&gt;faut&lt;/strong&gt; PHP 5.4 minimum donc passer d'abord votre h&#233;bergement en PHP 5.4&lt;/p&gt;
&lt;ol class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; T&#233;l&#233;charger &lt;a href=&#034;https://files.spip.net/spip/archives/spip-v3.2.19.zip&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;SPIP 3.2.19&lt;/a&gt; puis d&#233;compresser l'archive dans un dossier &lt;i&gt;spip&lt;/i&gt; de votre ordinateur&lt;/li&gt;&lt;li&gt; Cr&#233;er par ftp le r&#233;pertoire &#224; la racine de votre site, sur le serveur : &lt;i&gt;/ancienSpip&lt;/i&gt;&lt;/li&gt;&lt;li&gt; D&#233;placer dedans tous les dossiers &lt;i&gt;plugins plugins-dist prive ecrire squelettes squelettes-dist local tmp&lt;/i&gt; et fichiers &lt;i&gt;spip.php index.php&lt;/i&gt; mais pas les dossiers &lt;i&gt;config IMG&lt;/i&gt;&lt;/li&gt;&lt;li&gt; Transf&#233;rer par ftp les r&#233;pertoires et fichiers contenus dans le dossier local &lt;i&gt;spip&lt;/i&gt; de votre ordinateur vers le dossier distant&lt;/li&gt;&lt;/ol&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Mise-a-niveau-de-la-base&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Mise-a-niveau-de-la-base'&gt;&lt;a id=&#034;maj_base&#034;&gt;&lt;/a&gt;
Mise &#224; niveau de la base &lt;a class='sommaire-back sommaire-back-9' href='#s-Mise-a-niveau-de-la-base' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;En fonction du type de mise &#224; jour, une proc&#233;dure de mise &#224; niveau de la base de donn&#233;es vous sera propos&#233; en acc&#233;dant &#224; l'espace priv&#233;. Suivez les indications.&lt;/p&gt;
&lt;ol class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Consulter votre site. Normalement, il devrait s'afficher (sous l'apparence des squelettes par d&#233;faut de SPIP)&lt;/li&gt;&lt;li&gt; Se connecter sur l'interface priv&#233; de SPIP avec un compte administrateur (en cas de difficult&#233;, se rendre &#224; l'url /ecrire du site).&lt;/li&gt;&lt;li&gt; Suivre la proc&#233;dure de maintenance propos&#233;e.
&lt;div class='spip_document_4341 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;34&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://www.spip.net/local/cache-vignettes/L500xH252/upgrade_1-3a316.png?1776278267' width='500' height='252' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-4341 '&gt;&lt;strong&gt;Mise &#224; jour de la base - Etape 1
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div class='spip_document_4342 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;34&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://www.spip.net/local/cache-vignettes/L500xH153/upgrade_2-8c8bd.png?1776278267' width='500' height='153' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-4342 '&gt;&lt;strong&gt;Mise &#224; jour de la base - Etape 2
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div class='spip_document_4343 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;34&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://www.spip.net/local/cache-vignettes/L500xH146/upgrade_3-d3a41.png?1776278267' width='500' height='146' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-4343 '&gt;&lt;strong&gt;Mise &#224; jour de la base - Etape 3
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;/li&gt;&lt;li&gt; Se rendre ensuite sur la page de gestion des plugins (dans configuration) afin de r&#233;activ&#233; les plugins compatible et mettre &#224; jour ceux qui ne le sont pas.&lt;/li&gt;&lt;li&gt; V&#233;rifier que le site fonctionne.&lt;/li&gt;&lt;/ol&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;En-cas-de-probleme&#034;&gt;&lt;h2 class=&#034;h2&#034; id='En-cas-de-probleme'&gt;&lt;a id=&#034;probleme&#034;&gt;&lt;/a&gt;
En cas de probl&#232;me &lt;a class='sommaire-back sommaire-back-9' href='#s-En-cas-de-probleme' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Si besoin (si on n'arrive plus &#224; acc&#233;der &#224; l'espace priv&#233; du site, si des erreurs r&#233;currentes s'affichent), il peut aussi &#234;tre utile de r&#233;initialiser certains fichiers temporaires de SPIP.&lt;/p&gt;
&lt;p&gt;Il s'agit de vider le r&#233;pertoire &lt;i&gt;tmp&lt;/i&gt; sauf &#233;ventuellement les sous-r&#233;pertoires &lt;i&gt;dump&lt;/i&gt;, sessions et visites.&lt;/p&gt;
&lt;p&gt;Pour cette op&#233;ration : aller dans le dossier &lt;i&gt;tmp&lt;/i&gt; et effacer tout sauf les dossiers &lt;i&gt;dump&lt;/i&gt; et visites. Il vous faudra ensuite vous reconnecter.&lt;/p&gt;
&lt;p&gt;Si un probl&#232;me persiste, venez poser vos question sur le forum : &lt;a href=&#034;https://discuter.spip.net/c/spip/6&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://discuter.spip.net/c/spip/6&lt;/a&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Installation-des-plugins-et-squelettes&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Installation-des-plugins-et-squelettes'&gt;&lt;a id=&#034;installation_plugins&#034;&gt;&lt;/a&gt;
Installation des plugins et squelettes&lt;a class='sommaire-back sommaire-back-9' href='#s-Installation-des-plugins-et-squelettes' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Cr&#233;er les dossier suivant &#224; la racine de votre site :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; /plugins (puis dans ce dossier, cr&#233;er le dossier auto)&lt;/li&gt;&lt;li&gt; /lib&lt;/li&gt;&lt;li&gt; /squelettes&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Adaptez les droits de ces dossiers pour que le serveur puisse y &#233;crire.&lt;/p&gt;
&lt;p&gt;Se rendre dans l'interface de gestion des plugins et, &lt;strong&gt;dans &#171; d&#233;p&#244;ts &#187;, utiliser le d&#233;p&#244;t propos&#233;&lt;/strong&gt; - (&lt;i&gt;important pour la mise en &#339;uvre de la nouvelle gestion des plugins&lt;/i&gt;).&lt;/p&gt;
&lt;p&gt;Installez les plugins n&#233;cessaires (les rechercher dans le moteur de recherche) au fonctionnement de votre site. V&#233;rifiez que le site public fonctionne (&#233;ventuellement, vider le cache ou le r&#233;pertoire &lt;i&gt;tmp&lt;/i&gt; comme expliqu&#233; ci-dessus). Repassez en revue les r&#233;glages des plugins (cliquez sur l'ic&#244;ne de configuration apr&#232;s les avoir activ&#233;s).&lt;/p&gt;
&lt;p&gt;R&#233;tablissez enfin si besoin vos personnalisations de squelettes en remettant progressivement les fichiers html dans votre dossier squelettes qui se trouve dans &lt;i&gt;/ancienSpip&lt;/i&gt;. V&#233;rifiez que chacun produit bien le r&#233;sultat souhait&#233;.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Menage&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Menage'&gt;&lt;a id=&#034;Menage&#034;&gt;&lt;/a&gt;
M&#233;nage &lt;a class='sommaire-back sommaire-back-9' href='#s-Menage' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Quand tout est termin&#233; :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; v&#233;rifier que les autres applications install&#233;es sur l'h&#233;bergement fonctionnent.&lt;/li&gt;&lt;li&gt; v&#233;rifier le contenu du dossier &lt;i&gt;/ancienSpip&lt;/i&gt;. Celui-ci ne devrait contenir que des dossiers et fichiers issus de votre ancien SPIP (&lt;i&gt;ecrire&lt;/i&gt;, &lt;i&gt;local&lt;/i&gt;, &lt;i&gt;tmp&lt;/i&gt;, &lt;i&gt;squelettes-dist&lt;/i&gt; ou &lt;i&gt;dist&lt;/i&gt;, &lt;i&gt;extensions&lt;/i&gt; et quelques fichiers)&lt;/li&gt;&lt;li&gt; supprimer finalement le dossier &lt;i&gt;/ancienSpip&lt;/i&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;A-propos-de-cette-documentation&#034;&gt;&lt;h2 class=&#034;h2&#034; id='A-propos-de-cette-documentation'&gt;&lt;a id=&#034;A_propos&#034;&gt;&lt;/a&gt;
&#192; propos de cette documentation &lt;a class='sommaire-back sommaire-back-9' href='#s-A-propos-de-cette-documentation' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Auteurs&lt;/strong&gt;&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Michel Suquet&lt;/li&gt;&lt;li&gt; Johan Pustoch&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Adaptations&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Collectif SPIP&lt;/p&gt;&lt;/section&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>_DIR_PLUGIN_XXX</title>
		<link>https://www.spip.net/fr_article7336.html</link>
		<guid isPermaLink="true">https://www.spip.net/fr_article7336.html</guid>
		<dc:date>2026-03-10T15:00:33Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>JLuc</dc:creator>


		<dc:subject>_DIR_PLUGIN_XXX</dc:subject>

		<description>
&lt;p&gt;La constante _DIR_PLUGIN_TRUC indique le chemin du dossier o&#249; est install&#233; le plugin truc. &lt;br class='autobr' /&gt;
On peut s'en servir en PHP pour inclure des fichiers de ce plugin : include_once _DIR_PLUGIN_TRUC . 'inc/une_inclusion.php ;' &lt;br class='autobr' /&gt;
Toutefois, pour que d'autres plugins puissent surcharger l'inclusion, on pr&#233;f&#233;rera ne pas utiliser cette constante mais la fonction include_spip, car celle-ci parcourt tous les chemins accessibles : include_spip( 'inc/une_inclusion.php) ; &lt;br class='autobr' /&gt;
Voir : fonction include_spip&lt;/p&gt;


-
&lt;a href="https://www.spip.net/fr_rubrique643.html" rel="directory"&gt;Variables et Constantes de personnalisation&lt;/a&gt;

/ 
&lt;a href="https://www.spip.net/@_dir_plugin_xxx" rel="tag"&gt;_DIR_PLUGIN_XXX&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;La constante &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;_DIR_PLUGIN_TRUC&lt;/code&gt; indique le chemin du dossier o&#249; est install&#233; le plugin &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;truc&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;On peut s'en servir en PHP pour inclure des fichiers de ce plugin :&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;include_once _DIR_PLUGIN_TRUC . 'inc/une_inclusion.php;' &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Toutefois, pour que d'autres plugins puissent surcharger l'inclusion, on pr&#233;f&#233;rera ne pas utiliser cette constante mais la fonction &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;include_spip&lt;/code&gt;, car celle-ci parcourt tous les chemins accessibles :&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;include_spip( 'inc/une_inclusion.php); &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Voir : &lt;a href=&#034;https://programmer.spip.net/include_spip&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;fonction &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;include_spip&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>_IFRAME_SAFE_DOMAINS</title>
		<link>https://www.spip.net/fr_article7328.html</link>
		<guid isPermaLink="true">https://www.spip.net/fr_article7328.html</guid>
		<dc:date>2026-02-17T18:04:41Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>JLuc</dc:creator>


		<dc:subject>SPIP 4.4</dc:subject>
		<dc:subject>_IFRAME_SAFE_DOMAINS</dc:subject>

		<description>
&lt;p&gt;Par mesure de s&#233;curit&#233;, les iframes sont masqu&#233;es dans l'espace priv&#233; &#224; partir de SPIP 4.4.8, sauf pour les domaines explicitement autoris&#233;s via une constante _IFRAME_SAFE_DOMAINS. &lt;br class='autobr' /&gt;
Cette constante doit contenir un tableau d'expression r&#233;guli&#232;res d&#233;crivant tous les domaines autoris&#233;s, sans protocole, sans chemin et sans '/' &#224; la fin. &lt;br class='autobr' /&gt;
Exemple : define ('_IFRAME_SAFE_DOMAINS', [ 'fr\.wikipedia.org', '.*\.spip\.net']) ;&lt;/p&gt;


-
&lt;a href="https://www.spip.net/fr_rubrique643.html" rel="directory"&gt;Variables et Constantes de personnalisation&lt;/a&gt;

/ 
&lt;a href="https://www.spip.net/@spip44" rel="tag"&gt;SPIP 4.4&lt;/a&gt;, 
&lt;a href="https://www.spip.net/@_iframe_safe_domains" rel="tag"&gt;_IFRAME_SAFE_DOMAINS&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Par mesure de s&#233;curit&#233;, les iframes sont masqu&#233;es dans l'espace priv&#233; &#224; partir de SPIP 4.4.8, sauf pour les domaines explicitement autoris&#233;s via une constante &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;_IFRAME_SAFE_DOMAINS&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Cette constante doit contenir un tableau d'expression r&#233;guli&#232;res d&#233;crivant tous les domaines autoris&#233;s, sans protocole, sans chemin et sans '/' &#224; la fin.&lt;/p&gt;
&lt;p&gt;Exemple :&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;define ('_IFRAME_SAFE_DOMAINS', [ 'fr\.wikipedia.org', '.*\.spip\.net']); &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>#VIRTUEL</title>
		<link>https://www.spip.net/fr_article7116.html</link>
		<guid isPermaLink="true">https://www.spip.net/fr_article7116.html</guid>
		<dc:date>2025-05-08T15:17:39Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>JLuc</dc:creator>


		<dc:subject>BOUCLE(ARTICLES)</dc:subject>
		<dc:subject>#VIRTUEL</dc:subject>

		<description>
&lt;p&gt;Cette balise renvoie la valeur du champ de redirection saisi pour un article (cette saisie se fait dans la colonne secondaire de la page d'&#233;dition d'un article). &lt;br class='autobr' /&gt;
Cette possibilit&#233; doit avoir &#233;t&#233; activ&#233;e dans la page de configuration &#034;Contenu du site&#034;.&lt;/p&gt;


-
&lt;a href="https://www.spip.net/fr_rubrique543.html" rel="directory"&gt;Balises&lt;/a&gt;

/ 
&lt;a href="https://www.spip.net/@bouclearticles" rel="tag"&gt;BOUCLE(ARTICLES)&lt;/a&gt;, 
&lt;a href="https://www.spip.net/@virtuel" rel="tag"&gt;#VIRTUEL&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Cette balise renvoie la valeur du champ de redirection saisi pour un article (cette saisie se fait dans la colonne secondaire de la page d'&#233;dition d'un article).&lt;/p&gt;
&lt;p&gt;Cette possibilit&#233; doit avoir &#233;t&#233; activ&#233;e dans la page de configuration &#034;Contenu du site&#034;.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>{virtuel}</title>
		<link>https://www.spip.net/fr_article7117.html</link>
		<guid isPermaLink="true">https://www.spip.net/fr_article7117.html</guid>
		<dc:date>2025-05-08T10:18:28Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>JLuc</dc:creator>


		<dc:subject>BOUCLE(ARTICLES)</dc:subject>
		<dc:subject>virtuel</dc:subject>

		<description>
&lt;p&gt;Le crit&#232;re virtuel d'une boucle ARTICLES permet de ne retenir que les articles virtuels (qui redirigent vers une autre url). &lt;br class='autobr' /&gt;
Inversement, avec virtuel='' ou !virtuel , la boucle ne retournera que les articles non redirig&#233;s. &lt;br class='autobr' /&gt;
Voir : #VIRTUEL&lt;/p&gt;


-
&lt;a href="https://www.spip.net/fr_rubrique544.html" rel="directory"&gt;Crit&#232;res&lt;/a&gt;

/ 
&lt;a href="https://www.spip.net/@bouclearticles" rel="tag"&gt;BOUCLE(ARTICLES)&lt;/a&gt;, 
&lt;a href="https://www.spip.net/@virtuel" rel="tag"&gt;virtuel&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Le crit&#232;re &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;{virtuel}&lt;/code&gt; d'une boucle ARTICLES permet de ne retenir que les articles virtuels (qui redirigent vers une autre url).&lt;/p&gt;
&lt;p&gt;Inversement, avec &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;{virtuel=''}&lt;/code&gt; ou &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;{!virtuel}&lt;/code&gt; , la boucle ne retournera que les articles non redirig&#233;s.&lt;/p&gt;
&lt;p&gt;Voir : &lt;a href='https://www.spip.net/fr_article7116.html' class=&#034;spip_in&#034;&gt;#VIRTUEL&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Utiliser Rector</title>
		<link>https://www.spip.net/fr_article7090.html</link>
		<guid isPermaLink="true">https://www.spip.net/fr_article7090.html</guid>
		<dc:date>2025-03-20T13:43:48Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>bricebou</dc:creator>



		<description>
&lt;p&gt;Rector est un outil de refactoring et d'am&#233;lioration automatis&#233; de code PHP ; SPIP s'est dot&#233; d'un jeu de r&#232;gles : https://git.spip.net/spip-league/rector. &lt;br class='autobr' /&gt; * Pr&#233;alable &lt;br class='autobr' /&gt;
Il faut un fichier composer.json &#224; la racine du plugin, dans lequel on d&#233;clare le d&#233;p&#244;t composer propre &#224; SPIP : &#034;repositories&#034; : &#034;spip&#034; : &#034;type&#034; : &#034;composer&#034;, &#034;url&#034; : &#034;https://get.spip.net/composer&#034; &lt;br class='autobr' /&gt; * (&#8230;)&lt;/p&gt;


-
&lt;a href="https://www.spip.net/fr_rubrique809.html" rel="directory"&gt;Outils de d&#233;veloppement&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Rector est un outil de refactoring et d'am&#233;lioration automatis&#233; de code PHP ; SPIP s'est dot&#233; d'un jeu de r&#232;gles : &lt;a href=&#034;https://git.spip.net/spip-league/rector&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;https://git.spip.net/spip-league/rector&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;!--sommaire--&gt;&lt;div class=&#034;well nav-sommaire nav-sommaire-4&#034; id=&#034;nav69f764a9d7beb1.56166436&#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-Prealable&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Prealable&#034; class=&#034;spip_ancre&#034;&gt;Pr&#233;alable&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Installation&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Installation&#034; class=&#034;spip_ancre&#034;&gt;Installation&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Configuration&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Configuration&#034; class=&#034;spip_ancre&#034;&gt;Configuration&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Usage&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Usage&#034; class=&#034;spip_ancre&#034;&gt;Usage&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;Prealable&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Prealable'&gt; Pr&#233;alable&lt;a class='sommaire-back sommaire-back-4' href='#s-Prealable' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Il faut un fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;composer.json&lt;/code&gt; &#224; la racine du plugin, dans lequel on d&#233;clare le d&#233;p&#244;t composer propre &#224; SPIP :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;json&#034; class='spip_code spip_code_block language-json' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;{ &#034;repositories&#034;: { &#034;spip&#034;: { &#034;type&#034;: &#034;composer&#034;, &#034;url&#034;: &#034;https://get.spip.net/composer&#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;Installation&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Installation'&gt; Installation&lt;a class='sommaire-back sommaire-back-4' href='#s-Installation' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;console&#034; class='spip_code spip_code_block language-console' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;composer require --dev rector/rector spip-league/rector:&#034;dev-main&#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;Configuration&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Configuration'&gt; Configuration&lt;a class='sommaire-back sommaire-back-4' href='#s-Configuration' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;La configuration se fait dans le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;rector.php&lt;/code&gt; &#224; la racine de votre plugin :&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;&lt;?php declare(strict_types=1); use Rector\Config\RectorConfig; use Rector\Set\ValueObject\LevelSetList; use SpipLeague\Component\Rector\Set\SpipSetList; return RectorConfig::configure() -&gt;withPaths([__DIR__]) -&gt;withRootFiles() -&gt;withSets([SpipSetList::SPIP_41, LevelSetList::UP_TO_PHP_74]) -&gt;withSkip([ __DIR__ . '/lang', __DIR__ . '/vendor', ]) ; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On peut configurer des scripts dans le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;composer.json&lt;/code&gt; :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;json&#034; class='spip_code spip_code_block language-json' dir='ltr' style='text-align:left;'&gt;&lt;code&gt; &#034;scripts&#034;: { &#034;rector&#034;: &#034;vendor/bin/rector process --ansi&#034;, &#034;rector-dry-run&#034;: &#034;vendor/bin/rector process --dry-run --ansi&#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;Usage&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Usage'&gt; Usage&lt;a class='sommaire-back sommaire-back-4' href='#s-Usage' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;console&#034; class='spip_code spip_code_block language-console' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;composer rector-dry-run composer rector composer rector dossier/fichier &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/section&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Utiliser ECS</title>
		<link>https://www.spip.net/fr_article7086.html</link>
		<guid isPermaLink="true">https://www.spip.net/fr_article7086.html</guid>
		<dc:date>2025-03-20T13:40:49Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>bricebou</dc:creator>



		<description>
&lt;p&gt;SPIP propose un jeu de r&#232;gles pour Easy Coding Standard (https://github.com/easy-coding-standard/easy-coding-standard) via le d&#233;p&#244;t spip-league/easy-coding-standard. &lt;br class='autobr' /&gt;
L'utiliser permet de s'assurer de respecter les conventions d'&#233;criture PHP utilis&#233;es dans la communaut&#233; SPIP. &lt;br class='autobr' /&gt; * Pr&#233;alable &lt;br class='autobr' /&gt;
Il faut un fichier composer.json &#224; la racine du plugin, dans lequel on d&#233;clare le d&#233;p&#244;t composer propre &#224; SPIP : &#034;repositories&#034; : &#034;spip&#034; : (&#8230;)&lt;/p&gt;


-
&lt;a href="https://www.spip.net/fr_rubrique809.html" rel="directory"&gt;Outils de d&#233;veloppement&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;SPIP propose un jeu de r&#232;gles pour Easy Coding Standard (&lt;a href=&#034;https://github.com/easy-coding-standard/easy-coding-standard&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;https://github.com/easy-coding-standard/easy-coding-standard&lt;/a&gt;) via le d&#233;p&#244;t &lt;a href=&#034;https://git.spip.net/spip-league/easy-coding-standard&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;spip-league/easy-coding-standard&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;L'utiliser permet de s'assurer de respecter les conventions d'&#233;criture PHP utilis&#233;es dans la communaut&#233; 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-4&#034; id=&#034;nav69f764a9d99a78.32636405&#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-Prealable&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Prealable&#034; class=&#034;spip_ancre&#034;&gt;Pr&#233;alable&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Installation&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Installation&#034; class=&#034;spip_ancre&#034;&gt;Installation&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Configuration&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Configuration&#034; class=&#034;spip_ancre&#034;&gt;Configuration&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Usage&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Usage&#034; class=&#034;spip_ancre&#034;&gt;Usage&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;Prealable&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Prealable'&gt; Pr&#233;alable&lt;a class='sommaire-back sommaire-back-4' href='#s-Prealable' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Il faut un fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;composer.json&lt;/code&gt; &#224; la racine du plugin, dans lequel on d&#233;clare le d&#233;p&#244;t composer propre &#224; SPIP :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;json&#034; class='spip_code spip_code_block language-json' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;{ &#034;repositories&#034;: { &#034;spip&#034;: { &#034;type&#034;: &#034;composer&#034;, &#034;url&#034;: &#034;https://get.spip.net/composer&#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;Installation&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Installation'&gt; Installation&lt;a class='sommaire-back sommaire-back-4' href='#s-Installation' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;L'installation se fait avec la commande :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;console&#034; class='spip_code spip_code_block language-console' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;composer require --dev spip-league/easy-coding-standard &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;Configuration&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Configuration'&gt; Configuration&lt;a class='sommaire-back sommaire-back-4' href='#s-Configuration' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Cr&#233;ez le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ecs.php&lt;/code&gt; &#224; la racine de votre plugin :&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;&lt;?php use SpipLeague\EasyCodingStandard\Set\SetList; use Symplify\EasyCodingStandard\Config\ECSConfig; return ECSConfig::configure() -&gt;withSets([SetList::SPIP]) -&gt;withPaths([__DIR__]) -&gt;withRootFiles() -&gt;withSkip([__DIR__ . '/lang', __DIR__ . '/vendor']) ; &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;Usage&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Usage'&gt; Usage&lt;a class='sommaire-back sommaire-back-4' href='#s-Usage' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Pour en faciliter l'usage, on peut ajouter des &#034;alias&#034; dans les scripts du fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;composer.json&lt;/code&gt; :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;json&#034; class='spip_code spip_code_block language-json' dir='ltr' style='text-align:left;'&gt;&lt;code&gt; &#034;scripts&#034;: { &#034;check-cs&#034;: &#034;vendor/bin/ecs check --ansi&#034;, &#034;fix-cs&#034;: &#034;vendor/bin/ecs check --fix --ansi&#034; } &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;console&#034; class='spip_code spip_code_block language-console' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;composer fix-cs composer fix-cs inc/inc.inc &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/section&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>_AUTORISER_TELECHARGER_PLUGINS</title>
		<link>https://www.spip.net/fr_article7033.html</link>
		<guid isPermaLink="true">https://www.spip.net/fr_article7033.html</guid>
		<dc:date>2025-03-19T20:27:24Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Pierre KUHN</dc:creator>


		<dc:subject>_AUTORISER_TELECHARGER_PLUGINS</dc:subject>

		<description>
&lt;p&gt;La constante _AUTORISER_TELECHARGER_PLUGINS a comme valeur par d&#233;faut true, ainsi les admins d'un site peuvent ajouter ou mettre &#224; jour les plugins du site. &lt;br class='autobr' /&gt;
Si vous souhaitez d&#233;sactiver le chargement des plugins, elle peut &#234;tre d&#233;finie &#224; false dans votre fichier config/mes_options.php (voir l'article qui lui est consacr&#233;). define('_AUTORISER_TELECHARGER_PLUGINS', false) ;&lt;/p&gt;


-
&lt;a href="https://www.spip.net/fr_rubrique643.html" rel="directory"&gt;Variables et Constantes de personnalisation&lt;/a&gt;

/ 
&lt;a href="https://www.spip.net/@_autoriser_telecharger_plugins" rel="tag"&gt;_AUTORISER_TELECHARGER_PLUGINS&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;La constante &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;_AUTORISER_TELECHARGER_PLUGINS&lt;/code&gt; a comme valeur par d&#233;faut &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;true&lt;/code&gt;, ainsi les admins d'un site peuvent ajouter ou mettre &#224; jour les plugins du site.&lt;/p&gt;
&lt;p&gt;Si vous souhaitez d&#233;sactiver le chargement des plugins, elle peut &#234;tre d&#233;finie &#224; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;false&lt;/code&gt; dans votre fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;config/mes_options.php&lt;/code&gt; (voir &lt;a href='https://www.spip.net/fr_article4654.html' class=&#034;spip_in&#034;&gt;l'article qui lui est consacr&#233;&lt;/a&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;define('_AUTORISER_TELECHARGER_PLUGINS', false); &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>SPIP 4.4</title>
		<link>https://www.spip.net/fr_article7018.html</link>
		<guid isPermaLink="true">https://www.spip.net/fr_article7018.html</guid>
		<dc:date>2025-02-14T13:30:11Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>b_b</dc:creator>



		<description>
&lt;p&gt;Cette branche LTS va b&#233;n&#233;ficier d'un support &#233;tendu jusqu'en juillet 2028. &lt;br class='autobr' /&gt; Compatibilit&#233; PHP 7.4 &#224; 8.5 &lt;br class='autobr' /&gt;
SPIP 4.4 n&#233;cessite PHP 7.4 minimum, et fonctionne jusqu'&#224; PHP 8.5. Il n&#233;cessite les extensions PHP : sodium, Zlib, Zip et Phar. &lt;br class='autobr' /&gt;
Changements apport&#233;s par SPIP 4.4 &lt;br class='autobr' /&gt;
Les changements les plus marquants sont le fait que SPIP n'envoie plus de mot de passe en clair dans les mails d'inscription et de rappel de mot de passe. &lt;br class='autobr' /&gt;
C&#244;t&#233; technique on peut noter que les dossiers ecrire, prive, (&#8230;)&lt;/p&gt;


-
&lt;a href="https://www.spip.net/fr_rubrique155.html" rel="directory"&gt;&#201;volutions et mises &#224; jour&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Cette branche LTS&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb1&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; id=&#034;nh1&#034;&gt;1&lt;/a&gt;]&lt;/span&gt; va b&#233;n&#233;ficier d'un support &#233;tendu jusqu'en juillet 2028.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;!--sommaire--&gt;&lt;div class=&#034;well nav-sommaire nav-sommaire-9&#034; id=&#034;nav69f718989018c9.04919089&#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-Compatibilite-PHP-7-4-a-8-5&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Compatibilite-PHP-7-4-a-8-5&#034; class=&#034;spip_ancre&#034;&gt;Compatibilit&#233; PHP 7.4 &#224; 8.5&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Changements-apportes-par-SPIP-4-4&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Changements-apportes-par-SPIP-4-4&#034; class=&#034;spip_ancre&#034;&gt;Changements apport&#233;s par SPIP 4.4&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Securite&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Securite&#034; class=&#034;spip_ancre&#034;&gt;S&#233;curit&#233;&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Ajouts&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Ajouts&#034; class=&#034;spip_ancre&#034;&gt;Ajouts&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Changements&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Changements&#034; class=&#034;spip_ancre&#034;&gt;Changements&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Corrections&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Corrections&#034; class=&#034;spip_ancre&#034;&gt;Corrections&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Depreciations&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Depreciations&#034; class=&#034;spip_ancre&#034;&gt;D&#233;pr&#233;ciations&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Retraits&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Retraits&#034; class=&#034;spip_ancre&#034;&gt;Retraits&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Plugins-compatibles&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Plugins-compatibles&#034; class=&#034;spip_ancre&#034;&gt;Plugins compatibles&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;Compatibilite-PHP-7-4-a-8-5&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Compatibilite-PHP-7-4-a-8-5'&gt; Compatibilit&#233; PHP 7.4 &#224; 8.5 &lt;a class='sommaire-back sommaire-back-9' href='#s-Compatibilite-PHP-7-4-a-8-5' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;SPIP 4.4 n&#233;cessite PHP 7.4 minimum, et fonctionne jusqu'&#224; PHP 8.5.&lt;br class='autobr' /&gt;
Il n&#233;cessite les extensions PHP : sodium, Zlib, Zip et Phar.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Changements-apportes-par-SPIP-4-4&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Changements-apportes-par-SPIP-4-4'&gt;Changements apport&#233;s par SPIP 4.4&lt;a class='sommaire-back sommaire-back-9' href='#s-Changements-apportes-par-SPIP-4-4' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Les changements les plus marquants sont le fait que SPIP n'envoie plus de mot de passe en clair dans les mails d'inscription et de rappel de mot de passe.&lt;/p&gt;
&lt;p&gt;C&#244;t&#233; technique on peut noter que les dossiers &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ecrire&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;prive&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;squelettes-dist&lt;/code&gt; ainsi que l'&#233;cran de s&#233;curit&#233; s'installent avec Composer. Cela ne change rien pour les personnes qui utilisent spip_loader. &#192; noter aussi, l'introduction des balises &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#LAYOUT_PRIVE&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#TRAD&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#URL_DOCUMENT_FICHIER&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;On peut &#233;galement noter une s&#233;rie d'optimisations pour les filtres d'images.&lt;/p&gt;
&lt;p&gt;La balise &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#LAYOUT_PRIVE&lt;/code&gt; remplace &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#LARGEUR_ECRAN&lt;/code&gt; et permet d'utiliser de nouvelles dispositions pour les pages de l'espace priv&#233; :&lt;/p&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#LAYOUT_PRIVE{fluide}&lt;/code&gt;, le contenu central s'adapte selon la pr&#233;sence ou pas de contenu dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#extra&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#navigation&lt;/code&gt;.&lt;/p&gt;
&lt;div class='spip_document_4257 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://www.spip.net/IMG/png/disposition_flui-9b36212e.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://www.spip.net/local/cache-vignettes/L500xH194/disposition_flui-9b36212e-fa321.png?1739543711' width='500' height='194' alt='' /&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div class='spip_document_4258 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://www.spip.net/IMG/png/disposition_flui-44f5d7b1.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://www.spip.net/local/cache-vignettes/L500xH194/disposition_flui-44f5d7b1-d2ac5.png?1739543711' width='500' height='194' alt='' /&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div class='spip_document_4259 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://www.spip.net/IMG/png/disposition_flui-660a45c8.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://www.spip.net/local/cache-vignettes/L500xH194/disposition_flui-660a45c8-41ebb.png?1739543711' width='500' height='194' alt='' /&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#LAYOUT_PRIVE{pleine-largeur}&lt;/code&gt;&lt;/p&gt;
&lt;div class='spip_document_4260 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://www.spip.net/IMG/png/disposition_plei-a46afc98.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://www.spip.net/local/cache-vignettes/L500xH191/disposition_plei-a46afc98-eafdc.png?1739543711' width='500' height='191' alt='' /&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#LAYOUT_PRIVE{complements-gauche}&lt;/code&gt;&lt;/p&gt;
&lt;div class='spip_document_4261 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://www.spip.net/IMG/png/disposition_comp-f758c317.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://www.spip.net/local/cache-vignettes/L500xH191/disposition_comp-f758c317-6afc6.png?1739543711' width='500' height='191' alt='' /&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#LAYOUT_PRIVE{complements-droite}&lt;/code&gt;&lt;/p&gt;
&lt;div class='spip_document_4262 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://www.spip.net/IMG/png/disposition_comp-5e19ffc0.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://www.spip.net/local/cache-vignettes/L500xH191/disposition_comp-5e19ffc0-35a7a.png?1739543711' width='500' height='191' alt='' /&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#LAYOUT_PRIVE{complements-bas}&lt;/code&gt;&lt;/p&gt;
&lt;div class='spip_document_4263 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://www.spip.net/IMG/png/disposition_comp-7787f8f6.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://www.spip.net/local/cache-vignettes/L500xH213/disposition_comp-7787f8f6-bcf2a.png?1739543711' width='500' height='213' alt='' /&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#LAYOUT_PRIVE{complements-bas-inverse}&lt;/code&gt;&lt;/p&gt;
&lt;div class='spip_document_4264 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://www.spip.net/IMG/png/disposition_comp-d195e1b6.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://www.spip.net/local/cache-vignettes/L500xH213/disposition_comp-d195e1b6-05090.png?1739543711' width='500' height='213' alt='' /&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;La balise &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#TRAD&lt;/code&gt; permet d'&#233;viter les &#233;criture du style &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#VAL{module:cle}|_T&lt;/code&gt;, exemple &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#TRAD{module:cle, #ARRAY{param, val, ..}, #ARRAY{option, val..}}&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;R&#233;pertoires&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;- Le r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;vendor/&lt;/code&gt; se compl&#232;te, avec l'arriv&#233;e de premi&#232;res librairies &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;spip-league&lt;/code&gt;, qui vont faire une premi&#232;re passerelle vers des &#233;l&#233;ments du futur SPIP 5.0
&lt;br /&gt;- &#192; ce titre, un r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;config/spip&lt;/code&gt; est maintenant pr&#233;sent &#233;galement&lt;/p&gt;
&lt;hr class=&#034;spip&#034; /&gt;
&lt;p&gt;Cette version apporte &#233;galement d'autres am&#233;liorations ou corrections de bugs.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Securite&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Securite'&gt;S&#233;curit&#233;&lt;a class='sommaire-back sommaire-back-9' href='#s-Securite' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Nettoyer certaines entr&#233;es auteurs sur le formulaire d'&#233;dition d'auteur (&#233;vite de se retrouver dans des logs, si des logs verbeux sont activ&#233;s)&lt;/li&gt;&lt;li&gt; Mise &#224; jour de la liste des bots &amp; ajout de antennapod (lecteur RSS) comme bot licite&lt;/li&gt;&lt;/ul&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Ajouts&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Ajouts'&gt;Ajouts&lt;a class='sommaire-back sommaire-back-9' href='#s-Ajouts' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Ne pas envoyer de mot de passe en clair, mais plut&#244;t des liens pour d&#233;finir son mot de passe&lt;/li&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;copie_locale()&lt;/code&gt; passe une cl&#233; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;action&lt;/code&gt; au pipeline &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;post_edition&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Cha&#238;nes de langue suppl&#233;mentaire pour les listes d'articles&lt;/li&gt;&lt;li&gt; Balise &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#LAYOUT_PRIVE&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Balise &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#TRAD{module:cle, #ARRAY{param, val, ..}, #ARRAY{option, val..}}&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Balise #MIME_TYPE calcul&#233;e&lt;/li&gt;&lt;li&gt; Balise &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#URL_DOCUMENT_FICHIER&lt;/code&gt; renvoyant toujours le fichier d'un document, ce qui permet quand on le souhaite d'utiliser &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#URL_DOCUMENT&lt;/code&gt; pour renvoyer vers une page web. Les mod&#232;les de document sont mis &#224; jour pour utiliser cette balise.&lt;/li&gt;&lt;li&gt; Les actions &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ajouter_lien&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;supprimer_lien&lt;/code&gt; peuvent g&#233;rer un qualificatif&lt;/li&gt;&lt;li&gt; Pipeline &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ajouter_menus_args&lt;/code&gt;, en compl&#233;ment au pipeline &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ajouter_menus&lt;/code&gt;, qui transmet les arguments de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;definir_barre_boutons()&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Purger les variables de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;var_nullify&lt;/code&gt; du contexte dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;traiter_appels_inclusions_ajax&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Balise &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#PARAM&lt;/code&gt; pour r&#233;cup&#233;rer les param&#232;tres du container de services&lt;/li&gt;&lt;li&gt; Le filtre &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;|affdate&lt;/code&gt; accepte un timestamp en entr&#233;e&lt;/li&gt;&lt;li&gt; Fonction &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;_image_extensions_logos()&lt;/code&gt; et pipeline &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;image_extensions_logos&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Commande cli pour purger les images cache trop anciennes (&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;cache-gd2&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;cache-vignettes&lt;/code&gt;)&lt;/li&gt;&lt;li&gt; Filtre &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;image_oriente_selon_exif()&lt;/code&gt; pour r&#233;orienter automatiquement une image selon son exif&lt;/li&gt;&lt;/ul&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Changements&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Changements'&gt;Changements&lt;a class='sommaire-back sommaire-back-9' href='#s-Changements' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Les dossiers &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ecrire&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;prive&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;squelettes-dist&lt;/code&gt; s'installent avec Composer&lt;/li&gt;&lt;li&gt; L'&#233;cran de s&#233;curit&#233; s'installe avec Composer&lt;/li&gt;&lt;li&gt; Mise &#224; jour des cha&#238;nes de langues depuis trad.spip.net&lt;/li&gt;&lt;li&gt; Utiliser le pipeline &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;compter_contributions_auteur&lt;/code&gt; dans la boite d'info d'un auteur&lt;/li&gt;&lt;li&gt; Possibilit&#233; de personnaliser les cha&#238;nes de langue singulier et pluriel du titre de toutes les listes d'objets&lt;/li&gt;&lt;li&gt; Nouveaux layouts pour le priv&#233; (&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#LAYOUT_PRIVE&lt;/code&gt;) : &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;defaut&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;fluide&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;pleine-largeur&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;complements-droite&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;complements-bas&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;complements-bas-inverse&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Les valeurs d'environnement explicitement vid&#233;es en ajax passent par &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;var_nullify&lt;/code&gt; pour en &#234;tre totalement expurg&#233;es&lt;/li&gt;&lt;li&gt; Permettre de trier les comptes visiteurs &#034;nouveau&#034; par date d'inscription-relance&lt;/li&gt;&lt;li&gt; Ajouter l'heure de publication &#224; c&#244;t&#233; de la date&lt;/li&gt;&lt;li&gt; Utiliser des variables CSS et propri&#233;t&#233;s logiques dans l'espace priv&#233; pour &#233;viter la compilation des fichiers CSS&lt;/li&gt;&lt;li&gt; La page de contr&#244;le des t&#226;ches utilise le layout &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;complement-gauche&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Utilisation de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;image_extensions_logos()&lt;/code&gt; &#224; la place de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;$GLOBALS['formats_logos']&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Les filtres d'images tel que &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;image_recadre&lt;/code&gt; r&#233;orientent l'image selon l'exif d'orientation&lt;/li&gt;&lt;/ul&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Corrections&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Corrections'&gt;Corrections&lt;a class='sommaire-back sommaire-back-9' href='#s-Corrections' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Dans l'espace priv&#233;, &#233;viter une scrollbar horizontale dans certaines configurations de syst&#232;mes d'exploitation.&lt;/li&gt;&lt;li&gt; Aligner le contenu de la bande en_lignes avec celui du bandeau&lt;/li&gt;&lt;li&gt; Meilleur affichage des listes d'objets sur petit &#233;cran&lt;/li&gt;&lt;li&gt; Pas de marge basse sur les derniers &#233;l&#233;ments des r&#233;ponses&lt;/li&gt;&lt;li&gt; Charger l'autoloader dans le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;prive.php&lt;/code&gt;&lt;/li&gt;&lt;li&gt; &#201;viter un warning PHP si le fichier du logo n'est pas pr&#233;sent&lt;/li&gt;&lt;li&gt; Suivre medias sur &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;inc_vignette_dist&lt;/code&gt; qui attend un param&#232;tre &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;medias&lt;/code&gt;&lt;/li&gt;&lt;li&gt; R&#233;tablir le masquage des documents vus dans le bloc des documents&lt;/li&gt;&lt;li&gt; Ne plus d&#233;clarer de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;z-index&lt;/code&gt; sur les colonnes qui sont d&#233;j&#224; en flex&lt;/li&gt;&lt;li&gt; R&#233;parer la rotation des images avec convert&lt;/li&gt;&lt;li&gt; Pouvoir scroller apr&#232;s avoir quitt&#233; le mode plein &#233;cran via la touche &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;ESC&gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Utiliser pour &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;IMAGETYPE_SVG&lt;/code&gt; une valeur qui ne risque pas une collision avec un futur ajout de format image (19 a &#233;t&#233; pris par &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;IMAGETYPE_AVIF&lt;/code&gt; entre temps)&lt;/li&gt;&lt;li&gt; Correction d'une erreur fatale sur l'appel &#224; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;phraser_champs_interieurs()&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Utiliser &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;fpassthru()&lt;/code&gt; pour livrer directement les fichiers et &#233;viter un memory limit plut&#244;t que &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;readfile()&lt;/code&gt; qui passe par un chargement en m&#233;moire du fichier&lt;/li&gt;&lt;li&gt; Requ&#234;ter les fichiers distants avec &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;STREAM_CRYPTO_METHOD_TLS_CLIENT&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Remplacer les balises &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;tt&lt;/code&gt; obsol&#232;tes par &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;code&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Les emails des auteurs sont masqu&#233;s par d&#233;faut&lt;/li&gt;&lt;li&gt; Transmettre au pipeline &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;compter_contributions_auteur&lt;/code&gt; le nombre de contribution sur les articles&lt;/li&gt;&lt;li&gt; Passer l'url &#224; l'item de langue &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;pass_reset_url&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Pour le formulaire g&#233;n&#233;rique d'institution d'objet, tester l'autorisation &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;publierdans&lt;/code&gt; en utilisant le parent d&#233;clar&#233; par l'API de parent&#233;&lt;/li&gt;&lt;li&gt; Dans le formulaire g&#233;n&#233;rique d'institution d'un objet, utiliser le m&#234;me jeu de test pour l'affichage du statut &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;publie&lt;/code&gt; dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;charger&lt;/code&gt; et pour la validation dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;verifier&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Pouvoir supprimer l'image de l'&#233;cran de connexion&lt;/li&gt;&lt;li&gt; Pouvoir modifier logo principal quand il y a un logo de survol&lt;/li&gt;&lt;li&gt; Inclusion manquante dans certains contextes ajax pour bigup&lt;/li&gt;&lt;li&gt; V&#233;rifier l'existence de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;exif_read_data()&lt;/code&gt;&lt;/li&gt;&lt;li&gt; &#201;viter des warnings sur &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;image_oriente_selon_exif()&lt;/code&gt; en absence d'image&lt;/li&gt;&lt;li&gt; Optimisation des filtres &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;image_aplatir()&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;image_renforcement()&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;image_flou()&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;image_sepia()&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;image_flip_vertical()&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;image_flip_horizontal()&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;image_nb()&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;image_gamma()&lt;/code&gt; &amp; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;image_rotation()&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Correction du param&#232;tre &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;crop&lt;/code&gt; de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;image_rotation()&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Message de retour des formulaires en &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;div&lt;/code&gt; plutot qu'en &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;p&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Le mimetype &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;audio/x-m4a&lt;/code&gt; est un alias de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;audio/mp4a-latm&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Appel &#224; la globale &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;$formats_logos&lt;/code&gt; remplac&#233;e par &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;_image_extensions_acceptees_en_entree()&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Corriger la duplication (plugin Duplicator par exemple) de logo si le dossier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;tmp/upload&lt;/code&gt; n'existe pas&lt;/li&gt;&lt;li&gt; Affichage du s&#233;lecteur de r&#244;les de documents (avec le plugin en question)&lt;/li&gt;&lt;li&gt; Affichage des aper&#231;us dans les mod&#232;les &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;emb&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Correction du chemin des plugins de la librairie mediaelements et suppression du fallback Flash&lt;/li&gt;&lt;li&gt; Ajouter le pipeline &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;afficher_config_objet&lt;/code&gt; qui manquait sur les pages mots et groupes_mots.&lt;/li&gt;&lt;li&gt; D&#233;doublonner test de statut dans une requ&#234;te SQL.&lt;/li&gt;&lt;li&gt; Support de la branche 4.4 de SPIP dans le r&#233;f&#233;rentiel des plugins&lt;/li&gt;&lt;li&gt; Invalider le cache (m&#234;me pour les bots) lorsqu'une URL permanente est ajout&#233;e&lt;/li&gt;&lt;/ul&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Depreciations&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Depreciations'&gt;D&#233;pr&#233;ciations&lt;a class='sommaire-back sommaire-back-9' href='#s-Depreciations' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Inclusion de fichier PHP via &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;INCLURE(fichier.php)&gt;&lt;/code&gt; ou &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;INCLURE{fond=fichier.php}&gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Balise fermante &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;/INCLURE&gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Balise &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#LARGEUR_ECRAN&lt;/code&gt; pour les squelettes du priv&#233; &#224; remplacer par &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#LAYOUT_PRIVE&lt;/code&gt;&lt;/li&gt;&lt;li&gt; &#192; partir de SPIP 5, l'appel des cha&#238;nes de langues en squelette sera sensible &#224; la casse de la d&#233;claration, il n'y aura plus de conversion automatique en minuscule&lt;/li&gt;&lt;li&gt; Fonction interne &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;phraser_boucle_placeholder()&lt;/code&gt; &#224; remplacer par &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;phraser_placeholder_memoriser()&lt;/code&gt; ou &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;phraser_placeholder_reinjecter()&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Fonction interne &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;public_generer_boucle_placeholder()&lt;/code&gt; &#224; remplacer par &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;public_placeholder_generer()&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Les fichiers de langue peuplant une &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;$GLOBALS&lt;/code&gt; sont d&#233;pr&#233;ci&#233;s ; renvoyer directement un tableau&lt;/li&gt;&lt;li&gt; Constante obsol&#232;te &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;_DIR_IMG_PACK&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Globales &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;$traiter_math&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;$tex_server&lt;/code&gt;, fonctions &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;produire_image_math()&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;traiter_math()&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;replace_math()&lt;/code&gt;, utiliser le plugin &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;mathjax&lt;/code&gt; &#224; la place&lt;/li&gt;&lt;li&gt; Modifier la globale &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;$formats_logos&lt;/code&gt; est d&#233;pr&#233;ci&#233; : utiliser le pipeline &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;image_extensions_logos&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Appeler la globale &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;$formats_logos&lt;/code&gt; est d&#233;pr&#233;ci&#233;, utiliser la fonction &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;_images_extensions_logos()&lt;/code&gt;&lt;/li&gt;&lt;li&gt; D&#233;pr&#233;ciation de la constante &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;_DIR_RESTREINT_ABS&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Filtre &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;|image_typo&lt;/code&gt;, et fonctions &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;rtl_mb_ord()&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;rtl_reverse()&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;rtl_visuel()&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;printWordWrapped()&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;produire_image_typo()&lt;/code&gt;, installer le plugin &lt;a href=&#034;https://plugins.spip.net/image_typo.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Images typographiques&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Retraits&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Retraits'&gt;Retraits&lt;a class='sommaire-back sommaire-back-9' href='#s-Retraits' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Fonctions &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;verif_butineur()&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;editer_texte_recolle()&lt;/code&gt; et environnement &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;_texte_trop_long&lt;/code&gt; des formulaires (inutilis&#233; &#8212; servait pour IE)&lt;/li&gt;&lt;li&gt; Prise en compte de l'environnement de formulaire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;_texte_trop_long&lt;/code&gt; (servait pour IE)&lt;/li&gt;&lt;li&gt; Un fichier de langue obsol&#232;te et non traduit.&lt;/li&gt;&lt;/ul&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Plugins-compatibles&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Plugins-compatibles'&gt;Plugins compatibles&lt;a class='sommaire-back sommaire-back-9' href='#s-Plugins-compatibles' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Comme pour la version pr&#233;c&#233;dente, la plupart des plugins sont d&#233;j&#224; compatibles avec SPIP 4.4, ce qui facilitera les mises &#224; jour.&lt;br class='autobr' /&gt;
Voir : &lt;a href='https://www.spip.net/fr_article1318.html#Etape-2-Mettez-a-jour-vos-plugins' class=&#034;spip_in&#034;&gt;Effectuer une mise &#224; jour&lt;/a&gt;&lt;/p&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;&lt;a href=&#034;https://fr.wikipedia.org/wiki/Long-term_support&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://fr.wikipedia.org/wiki/Long-term_support&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Les outils utilis&#233;s pour le d&#233;veloppement</title>
		<link>https://www.spip.net/fr_article6924.html</link>
		<guid isPermaLink="true">https://www.spip.net/fr_article6924.html</guid>
		<dc:date>2025-01-14T06:58:03Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>bricebou, b_b, James, Ma&#239;eul, Matthieu Marcillaud, placido, tofulm</dc:creator>



		<description>
&lt;p&gt;L'&#233;quipe de maintenance utilise ces outils pour maintenir et d&#233;velopper SPIP. Cet article r&#233;sume succinctement le r&#244;le des outils et les liens de documentation. &lt;br class='autobr' /&gt; |Nom de l'outil|R&#244;le|Documentation sp&#233;cifique &#224; la communaut&#233; SPIP| D&#233;veloppement c&#244;t&#233; serveur ou back-end PHP Langage dans lequel SPIP est &#233;crit c&#244;t&#233; serveur PHPdoc Commentaire du code Composer Installer les biblioth&#232;ques de code (library) dont le projet principal a besoin Qualit&#233; de code Easy Coding Standard (&#8230;)&lt;/p&gt;


-
&lt;a href="https://www.spip.net/fr_rubrique809.html" rel="directory"&gt;Outils de d&#233;veloppement&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;L'&#233;quipe de maintenance utilise ces outils pour maintenir et d&#233;velopper SPIP. Cet article r&#233;sume succinctement le r&#244;le des outils et les liens de documentation.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;table class=&#034;table spip&#034;&gt;
&lt;thead&gt;&lt;tr class='row_first'&gt;&lt;th id='id7894_c0'&gt;Nom de l'outil&lt;/th&gt;&lt;th id='id7894_c1'&gt;R&#244;le&lt;/th&gt;&lt;th id='id7894_c2'&gt;Documentation sp&#233;cifique &#224; la communaut&#233; SPIP&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;table class=&#034;table spip&#034;&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td colspan='3'&gt;&lt;strong&gt;D&#233;veloppement c&#244;t&#233; serveur ou &lt;i&gt;back-end&lt;/i&gt; &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;a href=&#034;https://www.php.net/manual/fr&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;PHP&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Langage dans lequel SPIP est &#233;crit c&#244;t&#233; serveur&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;a href=&#034;https://docs.phpdoc.org/guide/getting-started/index.html#getting-started&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;PHPdoc&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Commentaire du code&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;a href=&#034;https://getcomposer.org/doc&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Composer&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Installer les biblioth&#232;ques de code (library) dont le projet principal a besoin&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td colspan='3'&gt;&lt;strong&gt;Qualit&#233; de code&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;a href=&#034;https://github.com/easy-coding-standard/easy-coding-standard&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Easy Coding Standard&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Automatiser le respect des r&#233;gles de codages&lt;/td&gt;
&lt;td&gt;&lt;a href='https://www.spip.net/fr_article7086.html' class=&#034;spip_in&#034;&gt;Utiliser ECS&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;a href=&#034;https://getrector.com/documentation&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Rector&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Corriger du code historique pour le rendre plus durable&lt;/td&gt;
&lt;td&gt;&lt;a href='https://www.spip.net/fr_article7090.html' class=&#034;spip_in&#034;&gt;Utiliser Rector&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;a href=&#034;https://www.php-fig.org/psr/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;PSR&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Bonne pratiques de codage&lt;/td&gt;
&lt;td&gt;&lt;a href='https://www.spip.net/fr_rubrique783.html' class=&#034;spip_in&#034;&gt;Conventions&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;a href=&#034;https://phpunit.de/documentation.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;PHPUnit&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Tester le code&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;a href=&#034;https://phpstan.org/user-guide/getting-started&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;PHPStan&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Analyser le code&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;a href=&#034;https://refactoring.guru/design-patterns/php&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Refactoring Guru&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Inspiration pour transformer le code proc&#233;dural historique en code POO et pour gagner en robustesse&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;a href=&#034;https://12factor.net/fr/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;The Twelve-Factor App&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Inspiration : une m&#233;thodologie pour concevoir des logiciels en tant que service&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;table class=&#034;table spip&#034;&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td colspan='3'&gt;&lt;strong&gt;D&#233;veloppement c&#244;t&#233; navigateur ou &lt;i&gt;front-end&lt;/i&gt; &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;a href=&#034;https://javascript.info/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Javascript&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Langage pour l'affichage dynamique de fragments de page (front-end)&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;a href=&#034;https://api.jquery.com&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;jQuery&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Biblioth&#232;que longtemps rest&#233;e comme r&#233;f&#233;rence (en voie de migration)&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;a href=&#034;https://docs.npmjs.com&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;npm&lt;/a&gt; + &lt;a href=&#034;https://bun.sh/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Bun&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Installer des modules ou biblioth&#232;ques de code (library)&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td colspan='3'&gt;&lt;strong&gt;Qualit&#233; de code&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;a href=&#034;https://bun.sh/docs/cli/test&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;bun:test&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Tester le code&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;a href=&#034;https://biomejs.dev/guides/getting-started/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;biomejs&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Normaliser le code (linter)&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;table class=&#034;table spip&#034;&gt;
&lt;thead&gt;&lt;tr class='row_first'&gt;&lt;th id='id8889_c0' colspan='3'&gt;Versionnage&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td headers='id8889_c0'&gt;&lt;a href=&#034;https://git-scm.com/doc&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Git&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Suivi de version de code&lt;/td&gt;
&lt;td&gt;&lt;a href=&#034;https://git-scm.com/book/fr/v2&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Consulter un livre en fran&#231;ais&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td headers='id8889_c0'&gt;&lt;a href=&#034;https://about.gitlab.com/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Gitlab&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Plateforme de d&#233;veloppement&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td headers='id8889_c0'&gt;&lt;a href=&#034;https://semver.org/lang/fr/spec/v2.0.0.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;S&#233;mantique&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Comment fonctionnent les versions de SPIP et de ses d&#233;pendances&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td headers='id8889_c0'&gt;&lt;a href=&#034;https://www.conventionalcommits.org/fr/v1.0.0/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Conventionnel commit&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Des messages des commits signifiants, lisibles pour l'humain&lt;/td&gt;
&lt;td&gt;Voir aussi &lt;a href='https://www.spip.net/fr_article6824.html' class=&#034;spip_in&#034;&gt;&#201;crire un message de commit&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td headers='id8889_c0'&gt;&lt;a href=&#034;https://keepachangelog.com/fr/1.0.0/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Changelog&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Permettre de voir pr&#233;cis&#233;ment quels changements notables ont &#233;t&#233; faits entre chaque publication (release) d'un projet&lt;/td&gt;
&lt;td&gt;Voir aussi &lt;a href='https://www.spip.net/fr_article6825.html' class=&#034;spip_in&#034;&gt;Tenir un CHANGELOG&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
		&lt;div class='rss_ps'&gt;&lt;p&gt;Nous d&#233;veloppons et utilisons aussi nos propres outils :&lt;/p&gt;
&lt;p&gt;- &lt;a href=&#034;https://git.spip.net/spip-contrib-outils/spip-releases&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;spip-releases&lt;/a&gt;
&lt;br /&gt;- &lt;a href=&#034;https://git.spip.net/spip-league/easy-coding-standard&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;spip-league/ecs&lt;/a&gt;
&lt;br /&gt;- &lt;a href=&#034;https://git.spip.net/spip-league/rector&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;spip-league/rector&lt;/a&gt;
&lt;br /&gt;- &lt;a href=&#034;https://git.spip.net/spip-league/sdk&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;spip-league/sdk&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		</content:encoded>


		

	</item>



</channel>

</rss>
