<?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="en">
	<title>SPIP</title>
	<link>https://www.spip.net/</link>
	<description>Syst&#232;me de Publication pour Internet</description>
	<language>en</language>
	<generator>SPIP - www.spip.net</generator>
	<atom:link href="https://www.spip.net/spip.php?page=backend" rel="self" type="application/rss+xml" />

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



<item xml:lang="en">
		<title>Maintain a CHANGELOG</title>
		<link>https://www.spip.net/en_article7162.html</link>
		<guid isPermaLink="true">https://www.spip.net/en_article7162.html</guid>
		<dc:date>2026-04-29T09:44:29Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>en</dc:language>
		<dc:creator>jack</dc:creator>



		<description>
&lt;p&gt;CHANGELOG files follow the standard Keep a Changelog. What is a changelog? &lt;br class='autobr' /&gt;
A changelog (change log) is a file that contains a chronological list of notable changes for each version of a project. Why keep a changelog? &lt;br class='autobr' /&gt;
To allow users and contributors to see exactly what notable changes have been made between each release (or version) of a project. &lt;br class='autobr' /&gt;
More details at https://keepachangelog.com. &lt;br class='autobr' /&gt;
Each entry in the changelog must: reference the ticket (or the PR if there is no corresponding (&#8230;)&lt;/p&gt;


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


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;CHANGELOG files follow the standard &lt;a href=&#034;https://keepachangelog.com/en/1.1.0/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Keep a Changelog&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;nav6a0198d274adf8.04555176&#034;&gt;
&lt;h2&gt;Table of contents&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-What-is-a-changelog&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#What-is-a-changelog&#034; class=&#034;spip_ancre&#034;&gt;What is a changelog?&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Why-keep-a-changelog&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Why-keep-a-changelog&#034; class=&#034;spip_ancre&#034;&gt;Why keep a changelog?&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Example-of-simple-changelog&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Example-of-simple-changelog&#034; class=&#034;spip_ancre&#034;&gt;Example of simple changelog&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Example-of-complete-changelog&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Example-of-complete-changelog&#034; class=&#034;spip_ancre&#034;&gt;Example of complete changelog&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;What-is-a-changelog&#034;&gt;&lt;h2 class=&#034;h2&#034; id='What-is-a-changelog'&gt;What is a changelog?&lt;a class='sommaire-back sommaire-back-4' href='#s-What-is-a-changelog' title='Back to the table of contents'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A changelog (change log) is a file that contains a chronological list of notable changes for each version of a project.&lt;/p&gt;
&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Why-keep-a-changelog&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Why-keep-a-changelog'&gt;Why keep a changelog?&lt;a class='sommaire-back sommaire-back-4' href='#s-Why-keep-a-changelog' title='Back to the table of contents'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;To allow users and contributors to see exactly what notable changes have been made between each release (or version) of a project.&lt;/p&gt;
&lt;p&gt;More details at &lt;a href=&#034;https://keepachangelog.com&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://keepachangelog.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Each entry in the changelog must:&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; reference the ticket (or the PR if there is no corresponding ticket);&lt;/li&gt;&lt;li&gt; clearly and concisely describe the changes made by the PR;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;For each version, indicate the version number followed by the date in &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;YEAR-MONTH-DAY&lt;/code&gt; format.&lt;/p&gt;
&lt;p&gt;Entries are grouped by category. Here are the categories used in SPIP.&lt;/p&gt;
&lt;table class=&#034;table spip&#034;&gt;
&lt;thead&gt;&lt;tr class='row_first'&gt;&lt;th id='id989d_c0'&gt;Entry type&lt;/th&gt;&lt;th id='id989d_c1'&gt;Meaning&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td headers='id989d_c0'&gt;Added&lt;/td&gt;
&lt;td headers='id989d_c1'&gt;For new features&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td headers='id989d_c0'&gt;Changed&lt;/td&gt;
&lt;td headers='id989d_c1'&gt;For changes to existing features&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td headers='id989d_c0'&gt;Deprecated&lt;/td&gt;
&lt;td headers='id989d_c1'&gt;For features that will soon be removed&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td headers='id989d_c0'&gt;Removed&lt;/td&gt;
&lt;td headers='id989d_c1'&gt;For features that have now been removed&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td headers='id989d_c0'&gt;Fixed&lt;/td&gt;
&lt;td headers='id989d_c1'&gt;For bug fixes&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td headers='id989d_c0'&gt;Security&lt;/td&gt;
&lt;td headers='id989d_c1'&gt;In case of vulnerabilities&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Example-of-simple-changelog&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Example-of-simple-changelog'&gt;Example of simple changelog &lt;a class='sommaire-back sommaire-back-4' href='#s-Example-of-simple-changelog' title='Back to the table of contents'&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;# Changelog ## 1.0.2 - 2023-07-25 ## Fixed - Ne pas afficher le texte du mod&#232;le `icone` et le mettre en `title` du lien ### Changed - mise &#224; jour du README.md maintenant que la doc est sur contrib ## 1.0.1 - 2023-06-22 ### Added - ajout d'un CHANGELOG.md ### Changed - compatibilit&#233; SPIP 4.1+ - mise &#224; jour de la documentation dans le README.md &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;Example-of-complete-changelog&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Example-of-complete-changelog'&gt;Example of complete changelog &lt;a class='sommaire-back sommaire-back-4' href='#s-Example-of-complete-changelog' title='Back to the table of contents'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;For a more comprehensive example, &lt;a href=&#034;https://git.spip.net/spip/spip/-/blob/master/CHANGELOG.md&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;see SPIP&lt;/a&gt;.&lt;/p&gt;&lt;/section&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="en">
		<title>_IFRAME_SAFE_DOMAINS</title>
		<link>https://www.spip.net/en_article7330.html</link>
		<guid isPermaLink="true">https://www.spip.net/en_article7330.html</guid>
		<dc:date>2026-04-29T09:43:55Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>en</dc:language>
		<dc:creator>jack</dc:creator>


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

		<description>
&lt;p&gt;As a matter of security, iframes are hidden in the private area from SPIP 4.4.8 onwards, except for domains explicitly authorised via a constant _IFRAME_SAFE_DOMAINS. &lt;br class='autobr' /&gt;
This constant must contain an array of regular expressions describing all authorised domains, without protocol, without path and without &#8220;/&#8221; at the end. &lt;br class='autobr' /&gt;
Example : define ('_IFRAME_SAFE_DOMAINS', [ 'en\.wikipedia.org', '.*\.spip\.net']);&lt;/p&gt;


-
&lt;a href="https://www.spip.net/en_rubrique654.html" rel="directory"&gt;Variables and Constants for customisation&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;As a matter of security, iframes are hidden in the private area from SPIP 4.4.8 onwards, except for domains explicitly authorised via a constant &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;_IFRAME_SAFE_DOMAINS&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This constant must contain an array of regular expressions describing all authorised domains, without protocol, without path and without &#8220;/&#8221; at the end.&lt;/p&gt;
&lt;p&gt;Example :&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', [ 'en\.wikipedia.org', '.*\.spip\.net']); &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="en">
		<title>|propre</title>
		<link>https://www.spip.net/en_article7164.html</link>
		<guid isPermaLink="true">https://www.spip.net/en_article7164.html</guid>
		<dc:date>2026-04-29T09:43:37Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>en</dc:language>
		<dc:creator>jack</dc:creator>


		<dc:subject>propre</dc:subject>

		<description>
&lt;p&gt;This filter is applied by default by SPIP to long texts (#TEXT, #CHAPO, #PS, etc.). &lt;br class='autobr' /&gt;
It applies typographical processing and SPIP shortcuts (italics, bold, subheadings, etc.) to a text. &lt;br class='autobr' /&gt;
See also Filters&lt;/p&gt;


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

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

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;This filter is applied by default by SPIP to long texts (#TEXT, #CHAPO, #PS, etc.).&lt;/p&gt;
&lt;p&gt;It applies typographical processing and SPIP shortcuts (italics, bold, subheadings, etc.) to a text.&lt;/p&gt;
&lt;p&gt;See also &lt;a href='https://www.spip.net/en_article2147.html' class=&#034;spip_in&#034; hreflang=&#034;en&#034;&gt;Filters&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="en">
		<title>#_n:BALISE</title>
		<link>https://www.spip.net/en_article7178.html</link>
		<guid isPermaLink="true">https://www.spip.net/en_article7178.html</guid>
		<dc:date>2026-04-29T09:43:14Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>en</dc:language>
		<dc:creator>jack</dc:creator>


		<dc:subject>#_n:BALISE</dc:subject>

		<description>
&lt;p&gt;In case of embedded loops, it is sometimes useful to retrieve the content of a parent loop from the current loop using a tag. SPIP has a syntax for this (n being the identifier of the desired loop): &lt;br class='autobr' /&gt;
#_n:TAG &lt;br class='autobr' /&gt;
Example &lt;br class='autobr' /&gt;
Systematically display the section title along with the article title: &lt;BOUCLE_rubs(RUBRIQUES)&gt; &lt;ul&gt; &lt;BOUCLE_arts(ARTICLES)id_rubrique&gt; &lt;li&gt;#_rubs:TITRE - #TITRE&lt;/li&gt; &lt;/BOUCLE_arts&gt; (&#8230;)&lt;/p&gt;


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

/ 
&lt;a href="https://www.spip.net/@_nbalise" rel="tag"&gt;#_n:BALISE&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;In case of embedded loops, it is sometimes useful to retrieve the content of a parent loop from the current loop using a tag. SPIP has a syntax for this (&lt;strong&gt;n&lt;/strong&gt; being the identifier of the desired loop):&lt;/p&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#_n:TAG&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Example&lt;/p&gt;
&lt;p&gt;Systematically display the section title along with the article title:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;spip&#034; class='spip_code spip_code_block language-spip' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;&lt;BOUCLE_rubs(RUBRIQUES)&gt; &lt;ul&gt; &lt;BOUCLE_arts(ARTICLES){id_rubrique}&gt; &lt;li&gt;#_rubs:TITRE - #TITRE&lt;/li&gt; &lt;/BOUCLE_arts&gt; &lt;/ul&gt; &lt;/BOUCLE_rubs&gt; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="en">
		<title>|balise_img_svg</title>
		<link>https://www.spip.net/en_article7335.html</link>
		<guid isPermaLink="true">https://www.spip.net/en_article7335.html</guid>
		<dc:date>2026-04-29T09:41:47Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>en</dc:language>
		<dc:creator>jack</dc:creator>


		<dc:subject>balise_img_svg</dc:subject>
		<dc:subject>SPIP 4.2</dc:subject>

		<description>
&lt;p&gt;The balise_img_svg filter allows to insert a &lt;svg&gt; tag or an &lt;img&gt; tag depending on whether its argument is an SVG file or another image format. &lt;br class='autobr' /&gt; Indeed: the balise_img filter inserts an &lt;img&gt; tag regardless of the type of image received as an argument, including when it is an SVG file the balise_svg filter always inserts an &lt;svg&gt; tag. &lt;br class='autobr' /&gt;
The balise_img_svg filter is therefore useful when applied to an image whose format is unknown in advance and when you want SVG (&#8230;)&lt;/p&gt;


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

/ 
&lt;a href="https://www.spip.net/@balise_img_svg" rel="tag"&gt;balise_img_svg&lt;/a&gt;, 
&lt;a href="https://www.spip.net/@spip42" rel="tag"&gt;SPIP 4.2&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;The &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;balise_img_svg&lt;/code&gt; filter allows to insert a &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;svg&gt;&lt;/code&gt; tag or an &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;img&gt;&lt;/code&gt; tag depending on whether its argument is an SVG file or another image format.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Indeed:&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; the &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;balise_img&lt;/code&gt; filter inserts an &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;img&gt;&lt;/code&gt; tag regardless of the type of image received as an argument, including when it is an SVG file&lt;/li&gt;&lt;li&gt; the &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;balise_svg&lt;/code&gt; filter always inserts an &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;svg&gt;&lt;/code&gt; tag.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;The &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;balise_img_svg&lt;/code&gt; filter is therefore useful when applied to an image whose format is unknown in advance and when you want SVG images to be inserted with an &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;svg&gt;&lt;/code&gt; tag.&lt;/p&gt;
&lt;p&gt;This filter is applied to the relative URL of an image file or an already formed image tag. It accepts the following optional parameters:&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;alt&lt;/code&gt;: alternative text (or a null value to explicitly not have an alt tag on the image instead of an empty alt)&lt;/li&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;class&lt;/code&gt;: null by default&lt;/li&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;size&lt;/code&gt;: allows you to specify the size of the rendering (see syntax details: &lt;a href='https://www.spip.net/en_article5009.html' class=&#034;spip_in&#034; hreflang=&#034;en&#034;&gt;|balise_img&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Usage examples:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;spip&#034; class='spip_code spip_code_block language-spip' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;[(#LOGO_ARTICLE|balise_img_svg{'here application on an img tag', 'spip_logo'})] [(#FICHIER|balise_img_svg{'here application on a file', 'spip_doc'})] [(#CHEMIN{#GET{animage}}|balise_img_svg)] &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="en">
		<title>Configuring a feature of your site or a plugin</title>
		<link>https://www.spip.net/en_article7334.html</link>
		<guid isPermaLink="true">https://www.spip.net/en_article7334.html</guid>
		<dc:date>2026-02-28T11:11:15Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>en</dc:language>
		<dc:creator>jack</dc:creator>


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

		<description>
&lt;p&gt;Configuring a feature or plugin involves defining values for their various parameters. To do this, you need to define a form and be able to access the parameter values anywhere in your templates. &lt;br class='autobr' /&gt;
CVT forms also make it easy to create a configuration page for a feature on your site or for configuring a plugin. &lt;br class='autobr' /&gt;
A configuration mode is built into SPIP. &lt;br class='autobr' /&gt; Configuration Form &lt;br class='autobr' /&gt;
Suppose you have a &#8216;thing' feature to configure. Create a CVT form whose name begins with &#8216;configure_', with just (&#8230;)&lt;/p&gt;


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

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

		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Configuring a feature or plugin involves defining values for their various parameters. To do this, you need to define a form and be able to access the parameter values anywhere in your templates.&lt;/p&gt;
&lt;p&gt;CVT forms also make it easy to create a configuration page for a feature on your site or for configuring a plugin.&lt;/p&gt;
&lt;p&gt;A configuration mode is built into SPIP.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;!--sommaire--&gt;&lt;div class=&#034;well nav-sommaire nav-sommaire-6&#034; id=&#034;nav6a0198d2777393.63523008&#034;&gt;
&lt;h2&gt;Table of contents&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-Configuration-Form&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Configuration-Form&#034; class=&#034;spip_ancre&#034;&gt;Configuration Form&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Configuring-a-plugin&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Configuring-a-plugin&#034; class=&#034;spip_ancre&#034;&gt;Configuring a plugin&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Access-configured-values&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Access-configured-values&#034; class=&#034;spip_ancre&#034;&gt;Access configured values&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Autorisations&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Autorisations&#034; class=&#034;spip_ancre&#034;&gt;Autorisations&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Customise-treatments&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Customise-treatments&#034; class=&#034;spip_ancre&#034;&gt;Customise treatments&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Use-another-table-to-store-the-configured-values&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Use-another-table-to-store-the-configured-values&#034; class=&#034;spip_ancre&#034;&gt;Use another table to store the configured values&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;Configuration-Form&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Configuration-Form'&gt;Configuration Form &lt;a class='sommaire-back sommaire-back-6' href='#s-Configuration-Form' title='Back to the table of contents'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Suppose you have a &#8216;thing' feature to configure.&lt;/p&gt;
&lt;ol class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Create a CVT form whose name begins with &#8216;configure_', with just the HTML file and without the PHP (and therefore without defining the load, verify and process functions)&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;To further simplify the creation of this form, you can use the Entries plugin&#034; id=&#034;nh1&#034;&gt;1&lt;/a&gt;]&lt;/span&gt;.&lt;/li&gt;&lt;li&gt; create a page &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;configure_thing.html&lt;/code&gt; in &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;private/squelettes/contenu/&lt;/code&gt;, inside your plugin or your skeleton directory. Inside, call the form with simply &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#FORMULAIRE_CONFIGURER_THING&lt;/code&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;That's all!&lt;/p&gt;
&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Configuring-a-plugin&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Configuring-a-plugin'&gt;Configuring a plugin&lt;a class='sommaire-back sommaire-back-6' href='#s-Configuring-a-plugin' title='Back to the table of contents'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;When a plugin has a configuration page, a &#8216;Configure' option leading to this page automatically appears next to this plugin in the plugin administration page.&lt;/p&gt;
&lt;p&gt;This page is defined by the template &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;prive/squelettes/contenu/configurer_prefixeplugin.html&lt;/code&gt; and most often uses a configuration form.&lt;/p&gt;
&lt;p&gt;Example: for the &#8220;mediabox&#8221; plugin, the file &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;prive/squelettes/contenu/configurer_mediabox.html&lt;/code&gt; contains:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;spip&#034; class='spip_code spip_code_block language-spip' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;[(#AUTORISER{configurer,mediabox}|oui) &lt;h1&gt;&lt;:mediabox:titre_page_configurer_box:&gt;&lt;/h1&gt; &lt;div class=&#034;ajax&#034;&gt; #FORMULAIRE_CONFIGURER_MEDIABOX &lt;/div&gt; ] &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If you want an entry to also appear in the menus in the private area to give you direct access to this configuration page, add a &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;menu&gt;&lt;/code&gt; entry in the &lt;a href=&#034;https://plugins.spip.net/redaction-du-paquet-xml.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;paquet.xml file&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Example :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;xml&#034; class='spip_code spip_code_block language-xml' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;&lt;menu nom=&#034;thing&#034; titre=&#034;prefixeplugin:itemdelangue_thing&#034; parent=&#034;bando_configuration&#034; icone=&#034;images/thing-16.png&#034; /&gt; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;To initialise the value of a configuration (e.g. the &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;in_the_spotlight&lt;/code&gt; parameter) when creating or updating the plugin, add the following to the myplugin_upgrade() pipeline:&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; during creation:
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;php&#034; class='spip_code spip_code_block language-php' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;$maj['create'] = array( array('ecrire_config','myplugin/in_the_spotlight', '3'), ); &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; during an update:
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;php&#034; class='spip_code spip_code_block language-php' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;$maj['0.1'] = array( array('ecrire_config','myplugin/in_the_spotlight', '3'), ); &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;To clear the value when uninstalling the plugin, add the following to the pipeline: myplugin_vider_tables():&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;php&#034; class='spip_code spip_code_block language-php' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;effacer_config(&#034;myplugin/in_the_spotlight&#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;Access-configured-values&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Access-configured-values'&gt;Access configured values&lt;a class='sommaire-back sommaire-back-6' href='#s-Access-configured-values' title='Back to the table of contents'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;In a template&lt;/strong&gt;, the value of a configuration can be accessed using the &lt;a href='https://www.spip.net/en_article5097.html' class=&#034;spip_in&#034;&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#CONFIG&lt;/code&gt;&lt;/a&gt; tag (for example &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#CONFIG{myplugin/in_the_spotlight}&lt;/code&gt;)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In PHP&lt;/strong&gt; the values can be accessed in read mode using the &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;lire_config&lt;/code&gt; function with &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;lire_config(&#8220;myplugin/in_the_spotlight&#8221;)&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;When writing, use the &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ecrire_config&lt;/code&gt; function:&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ecrire_config('myplugin/in_the_spotlight', 3)&lt;/code&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Autorisations&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Autorisations'&gt;Autorisations&lt;a class='sommaire-back sommaire-back-6' href='#s-Autorisations' title='Back to the table of contents'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Not all users have access to the configuration page. By default, only administrators have this option, but you can redefine access rights to your configuration form. To do this, use the php &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;authorise&lt;/code&gt; API, as well as the &lt;a href='https://www.spip.net/en_article5103.html' class=&#034;spip_in&#034;&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#AUTHORISE&lt;/code&gt;&lt;/a&gt; tag and the &lt;a href='https://www.spip.net/en_article6612.html' class=&#034;spip_in&#034;&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;otherwise_deny_access&lt;/code&gt;&lt;/a&gt; filter for your form template.&lt;/p&gt;
&lt;p&gt;Example : &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;[(#AUTORISER{configurer,mediabox}|sinon_interdire_acces)]&lt;/code&gt;&lt;/p&gt;
&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Customise-treatments&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Customise-treatments'&gt;Customise treatments&lt;a class='sommaire-back sommaire-back-6' href='#s-Customise-treatments' title='Back to the table of contents'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Sometimes, other specific treatments are required when configuration values are changed. In this case, the usual &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;traiter()&lt;/code&gt; function from the CVT API must be added, and the common function that handles configuration processing must be called:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;php&#034; class='spip_code spip_code_block language-php' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;function formulaires_configurer_myplugin_traiter_dist() { include_spip('inc/cvt_configurer'); $retours = array(); // The new configuration is saved. $trace = cvtconf_formulaires_configurer_enregistre('configurer_myplugin', array()); // Customised treatments // &#8230; $retours['message_ok'] = _T('config_info_enregistree') . $trace; $retours['editable'] = true; return $retours; } &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/section&gt;&lt;section class=&#034;sommaire-section sommaire-section_niveau1 sommaire-section_h2&#034; aria-labelledby=&#034;Use-another-table-to-store-the-configured-values&#034;&gt;&lt;h2 class=&#034;h2&#034; id='Use-another-table-to-store-the-configured-values'&gt;Use another table to store the configured values&lt;a class='sommaire-back sommaire-back-6' href='#s-Use-another-table-to-store-the-configured-values' title='Back to the table of contents'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;By default, the configured values are stored in the &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;spip_meta&lt;/code&gt; table, and the entire table is loaded into memory with each hit. However, it is possible to use another table to store the configured values.&lt;/p&gt;
&lt;p&gt;For example, to use the meta_myplugin table, add the following line to the configuration form:&lt;/p&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;input type=&#034;hidden&#034; name=&#034;_meta_table&#034; value=&#034;meta_myplugin&#034; /&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Then, to access the values stored in this table, specify the table name prefixed with a / at the beginning of the &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;lire_config&lt;/code&gt; argument:&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;php&#034; class='spip_code spip_code_block language-php' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;ecrire_config('/meta_myplugin/description', 'blah'); lire_config('/meta_myplugin/argument'); &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;In addition to &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;_meta_table&lt;/code&gt;, the name of the table where the configured values are stored, there are three other useful variables to change where or how the configuration is saved:&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;_meta_casier&lt;/code&gt;: name of the &#8216;casier' in which to serialise (by default, this is the xx from &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;formulaire_configurer_xx&lt;/code&gt;)&lt;/li&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;_meta_prefixe&lt;/code&gt;: prefix the &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;meta&lt;/code&gt; (alternative to the &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;casier&lt;/code&gt;) in the meta table (no default prefix)&lt;/li&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;_meta_stockage&lt;/code&gt;: use an external storage method. None are provided by the core.&lt;/li&gt;&lt;/ul&gt;&lt;/section&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#034;nb1&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh1&#034; class=&#034;spip_note&#034; title=&#034;Footnotes 1&#034; rev=&#034;appendix&#034;&gt;1&lt;/a&gt;] &lt;/span&gt;To further simplify the creation of this form, you can use the &lt;a href=&#034;https://contrib.spip.net/Formulaire-de-configuration-avec-le-plugin-Saisies&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Entries&lt;/a&gt; plugin&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="en">
		<title>#VIRTUEL</title>
		<link>https://www.spip.net/en_article7333.html</link>
		<guid isPermaLink="true">https://www.spip.net/en_article7333.html</guid>
		<dc:date>2026-02-28T09:34:16Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>en</dc:language>
		<dc:creator>jack</dc:creator>


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

		<description>
&lt;p&gt;This tag returns the value of the redirection field entered for an article (this entry is made in the navigation column of the article editing page). &lt;br class='autobr' /&gt;
This option must have been enabled in the &#8216;Site content' configuration page.&lt;/p&gt;


-
&lt;a href="https://www.spip.net/en_rubrique545.html" rel="directory"&gt;Tags&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;This tag returns the value of the redirection field entered for an article (this entry is made in the navigation column of the article editing page).&lt;/p&gt;
&lt;p&gt;This option must have been enabled in the &#8216;Site content' configuration page.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="en">
		<title>{virtuel}</title>
		<link>https://www.spip.net/en_article7332.html</link>
		<guid isPermaLink="true">https://www.spip.net/en_article7332.html</guid>
		<dc:date>2026-02-24T09:34:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>en</dc:language>
		<dc:creator>jack</dc:creator>


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

		<description>
&lt;p&gt;The virtuel criterion in an ARTICLES loop allows only virtual articles (which redirect to another URL) to be retained. &lt;br class='autobr' /&gt;
Conversely, with virtuel='' or !virtuel, the loop will only return items that have not been redirected. &lt;br class='autobr' /&gt;
See: #VIRTUEL&lt;/p&gt;


-
&lt;a href="https://www.spip.net/en_rubrique546.html" rel="directory"&gt;Criteria&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;The &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;{virtuel}&lt;/code&gt; criterion in an ARTICLES loop allows only virtual articles (which redirect to another URL) to be retained.&lt;/p&gt;
&lt;p&gt;Conversely, with &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;{virtuel=''}&lt;/code&gt; or &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;{!virtuel}&lt;/code&gt;, the loop will only return items that have not been redirected.&lt;/p&gt;
&lt;p&gt;See: &lt;a href='https://www.spip.net/en_article7333.html' class=&#034;spip_in&#034; hreflang=&#034;en&#034;&gt;#VIRTUEL&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="en">
		<title>|wrap</title>
		<link>https://www.spip.net/en_article7331.html</link>
		<guid isPermaLink="true">https://www.spip.net/en_article7331.html</guid>
		<dc:date>2026-02-23T13:41:06Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>en</dc:language>
		<dc:creator>jack</dc:creator>


		<dc:subject>wrap</dc:subject>

		<description>
&lt;p&gt;The |wrap&lt;tag&gt; filter wraps the tag to which it is applied with the HTML tag specified as a parameter. &lt;br class='autobr' /&gt;
Simple examples [(#BALISE|wrap&lt;b&gt;)] &lt;br class='autobr' /&gt;
will display as HTML source:
&lt;br class='autobr' /&gt;
&lt;b&gt;blah blah&lt;/b&gt; [(#TITRE|wrap#TOTAL_BOUCLE|==1|?&lt;h1&gt;, &lt;h2&gt;)] &lt;br class='autobr' /&gt;
will display as HTML source if the loop returns only one result:
&lt;br class='autobr' /&gt;
&lt;h1&gt;The Title&lt;/h1&gt; &lt;br class='autobr' /&gt;
but will display:
&lt;br class='autobr' /&gt;
&lt;h2&gt;The Title&lt;/h2&gt;&lt;h2&gt;Another Title&lt;/h2&gt;
&lt;br class='autobr' /&gt;
if the loop returns several results. (&#8230;)&lt;/p&gt;


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

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

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;The &lt;strong&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;|wrap{&lt;tag&gt;}&lt;/code&gt;&lt;/strong&gt; filter wraps the tag to which it is applied with the HTML tag specified as a parameter.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Simple examples&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;spip&#034; class='spip_code spip_code_block language-spip' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;[(#BALISE|wrap{&lt;b&gt;})]&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt; &lt;p&gt;will display as HTML source:&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;b&gt;blah blah&lt;/b&gt;&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;spip&#034; class='spip_code spip_code_block language-spip' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;[(#TITRE|wrap{#TOTAL_BOUCLE|=={1}|?{&lt;h1&gt;, &lt;h2&gt;}})]&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;will display as HTML source if the loop returns only one result:&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;h1&gt;The Title&lt;/h1&gt;&lt;/code&gt; &lt;br class='autobr' /&gt;
but will display:&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;h2&gt;The Title&lt;/h2&gt;&lt;h2&gt;Another Title&lt;/h2&gt;&lt;/code&gt;&lt;br class='autobr' /&gt;
if the loop returns several results.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;HTML tag sequences&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;It is also possible to pass a series of tags as arguments. The final tags will be calculated to produce a correct nesting. The tags specified as filter arguments may include attributes.&lt;/p&gt;
&lt;p&gt;Example :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;spip&#034; class='spip_code spip_code_block language-spip' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;[(#BALISE|wrap{&lt;div&gt;&lt;span class=&#034;thing&#034;&gt;&lt;b&gt;})]&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;will display as HTML source:&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;div&gt;&lt;span class=&#034;thing&#034;&gt;&lt;b&gt;blah blah&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;/code&gt;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="en">
		<title>#PRODUIRE</title>
		<link>https://www.spip.net/en_article7245.html</link>
		<guid isPermaLink="true">https://www.spip.net/en_article7245.html</guid>
		<dc:date>2025-09-09T16:37:12Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>en</dc:language>
		<dc:creator>Ricardo Porto</dc:creator>


		<dc:subject>SPIP 3.0</dc:subject>
		<dc:subject>#PRODUIRE</dc:subject>

		<description>&lt;p&gt;Produzir o ficheiro est&#225;tico resultante da avalia&#231;&#227;o de um template de ficheiro CSS ou Javascript.&lt;/p&gt;

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

/ 
&lt;a href="https://www.spip.net/@spip30" rel="tag"&gt;SPIP 3.0&lt;/a&gt;, 
&lt;a href="https://www.spip.net/@produire" rel="tag"&gt;#PRODUIRE&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;A tag &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#PRODUIRE&lt;/code&gt; (produzir) gera um ficheiro est&#225;tico a partir de um template din&#226;mico de CSS (.css.html) ou de Javascript (.js.html). A partir do SPIP 4, os ficheiros que geram SVG (.svg.html), XML (.xml.html) e JSON (.json.html) tamb&#233;m s&#227;o levados em conta.&lt;/p&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#PRODUIRE&lt;/code&gt; retorna o nome desse ficheiro est&#225;tico, o que permite ao Apache servi-lo diretamente, sem passar por spip.php a cada hit.&lt;/p&gt;
&lt;p&gt;A sintaxe dos argumentos da tag &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#PRODUIRE&lt;/code&gt; &#233; a mesma de &lt;a href='https://www.spip.net/pt_article6922.html' class=&#034;spip_in&#034; hreflang=&#034;pt&#034;&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#INCLURE&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre data-language=&#034;spip&#034; class='spip_code spip_code_block language-spip' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;&lt;link rel=&#034;stylesheet&#034; type=&#034;text/css&#034; href=&#034;#PRODUIRE{fond=css/meucss.css,couleur=ffffff}&#034;&gt; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;O formato do ficheiro &#233; indicado pela pr&#233;-extens&#227;o do ficheiro: .css.html, .js.html, .xml.html, .json.html, .svg.html. Sen&#227;o, &#233; HTML.&lt;/p&gt;
&lt;p&gt;Pode-se for&#231;ar o formato do ficheiro passando como argumento adicional &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;format=css&lt;/code&gt; (ou &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;format=js&lt;/code&gt;...)..&lt;/p&gt;
&lt;p&gt;Nota: o resultado de #PRODUIRE inclui o timestamp do ficheiro template recebido como argumento.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>



</channel>

</rss>
