<?xml 
version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="https://blog.roxing.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>blog.roxing.net</title>
	<link>http://blog.roxing.net/</link>
	<description>weblog roxing.net - astuces spip, php, bash, linux &amp; more</description>
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>
	<atom:link href="https://blog.roxing.net/spip.php?id_mot=41&amp;page=backend" rel="self" type="application/rss+xml" />

	<image>
		<title>blog.roxing.net</title>
		<url>https://blog.roxing.net/local/cache-vignettes/L144xH37/siteon0-6ddb5.png?1727125340</url>
		<link>http://blog.roxing.net/</link>
		<height>37</height>
		<width>144</width>
	</image>



<item xml:lang="fr">
		<title>Astuce boucle spip, chargement s&#233;lectif des fichiers js</title>
		<link>https://blog.roxing.net/astuce-boucle-spip-chargement-selectifs-de-js</link>
		<guid isPermaLink="true">https://blog.roxing.net/astuce-boucle-spip-chargement-selectifs-de-js</guid>
		<dc:date>2014-03-24T23:15:30Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Pierrox, placido</dc:creator>


		<dc:subject>php</dc:subject>
		<dc:subject>boucle data</dc:subject>
		<dc:subject>plugin spip</dc:subject>
		<dc:subject>#ARRAY spip</dc:subject>
		<dc:subject>spip3</dc:subject>
		<dc:subject>spip</dc:subject>

		<description>&lt;p&gt;Dans le cadre d'un design utilisant bootstrap, on souhaite pourvoir activer facilement une ou plusieurs biblioth&#232;ques javascript.&lt;/p&gt;

-
&lt;a href="https://blog.roxing.net/billets" rel="directory"&gt;billets&lt;/a&gt;

/ 
&lt;a href="https://blog.roxing.net/php" rel="tag"&gt;php&lt;/a&gt;, 
&lt;a href="https://blog.roxing.net/boucle-data" rel="tag"&gt;boucle data&lt;/a&gt;, 
&lt;a href="https://blog.roxing.net/plugin-spip" rel="tag"&gt;plugin spip&lt;/a&gt;, 
&lt;a href="https://blog.roxing.net/array-spip" rel="tag"&gt;#ARRAY spip&lt;/a&gt;, 
&lt;a href="https://blog.roxing.net/spip3" rel="tag"&gt;spip3&lt;/a&gt;, 
&lt;a href="https://blog.roxing.net/spip-49" rel="tag"&gt;spip&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Le but est de faire une boucle sur un #ARRAY ayant comme cl&#233; le nom d'un script js, et un bool&#233;en en tant que valeur.&lt;/p&gt;
&lt;p&gt;On active ou d&#233;sactive le script simplement en rempla&#231;ant la valeur par 1.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;textarea readonly='readonly' cols='40' rows='19' class='spip_cadre spip_cadre_block' dir='ltr'&gt;&lt;BOUCLE_for(DATA){source table,#ARRAY{ affix.js,0, alert.js,0, button.js,0, carousel.js,0, collapse.js,1, dropdown.js,0, modal.js,0, popover.js,0, scrollspy.js,0, tab.js,0, tooltip.js,0, transition.js,0, }}&gt; [(#VALEUR|=={1}|oui) &lt;script src=&#034;#CHEMIN{javascript/bootstrap/#CLE}&#034;&gt;&lt;/script&gt; ] &lt;/BOUCLE_for&gt;&lt;/textarea&gt;
&lt;p&gt;La m&#234;me chose, mais en mieux, dans le cadre de la cr&#233;ation d'un plugin est d'utiliser le pipeline &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;insert_head($flux)&lt;/code&gt;.&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='29' class='spip_cadre spip_cadre_block' dir='ltr'&gt;function monPlugin_insert_head($flux){ # D&#233;clarer le array listant les scripts js $bstrpJs = array( 'affix.js' =&gt; 0, 'alert.js' =&gt; 0, 'button.js' =&gt; 0, 'carousel.js' =&gt; 0, 'collapse.js' =&gt; 1, 'dropdown.js' =&gt; 1, 'modal.js,0' =&gt; 0, 'popover.js' =&gt; 0, 'scrollspy.js' =&gt; 0, 'tab.js' =&gt; 0, 'tooltip.js' =&gt; 0, 'transition.js' =&gt; 0, ); # Boucler sur le tableau listant les scripts foreach($bstrpJs as $script =&gt; $active){ if($path = find_in_path(&#034;javascript/bootstrap/$script&#034;) AND $active &gt; 0){ $flux .= '&lt;script type=&#034;text/javascript&#034; src=&#034;'. $path .'&#034;&gt;&lt;/script&gt;'; } } return $flux; }&lt;/textarea&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Parcourir un tableau multidimensionnel &#224; l'aide de boucles</title>
		<link>https://blog.roxing.net/parcourir-un-tableau-multidimensionnel-a-l-aide</link>
		<guid isPermaLink="true">https://blog.roxing.net/parcourir-un-tableau-multidimensionnel-a-l-aide</guid>
		<dc:date>2012-10-02T01:24:29Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Pierrox</dc:creator>


		<dc:subject>boucle data</dc:subject>
		<dc:subject>spip3</dc:subject>
		<dc:subject>spip</dc:subject>

		<description>
&lt;p&gt;Avec la nouvelle version de spip3 il est possible de boucler sur des tableaux. &lt;br class='autobr' /&gt;
Un bon exemple pour r&#233;cuperer des tableaux multidimensionnels est la table spip_meta. Les plugins ins&#232;rent souvent des donn&#233;es sous forme de tableaux multidimensionnels s&#233;rialis&#233;s pour sauvegarder leur configuration. &lt;br class='autobr' /&gt;
La boucle ci-dessous va r&#233;cup&#233;rer le tableau php stock&#233; en bdd. Ce tableau va &#234;tre affect&#233; &#224; la variable tabMetaAuteur, puis pass&#233; en &#034;crit&#232;re&#034; de boucle. On effectue une boucle sur les (&#8230;)&lt;/p&gt;


-
&lt;a href="https://blog.roxing.net/billets" rel="directory"&gt;billets&lt;/a&gt;

/ 
&lt;a href="https://blog.roxing.net/boucle-data" rel="tag"&gt;boucle data&lt;/a&gt;, 
&lt;a href="https://blog.roxing.net/spip3" rel="tag"&gt;spip3&lt;/a&gt;, 
&lt;a href="https://blog.roxing.net/spip-49" rel="tag"&gt;spip&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Avec la nouvelle version de spip3 il est possible de boucler sur des tableaux&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;Voir doc spip : #ARRAY&#034; id=&#034;nh1&#034;&gt;1&lt;/a&gt;]&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Un bon exemple pour r&#233;cuperer des tableaux multidimensionnels est la table spip_meta. Les plugins ins&#232;rent souvent des donn&#233;es sous forme de tableaux multidimensionnels s&#233;rialis&#233;s&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb2&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;Serialize/Unserialize : compresser/d&#233;compresser un tableau&#034; id=&#034;nh2&#034;&gt;2&lt;/a&gt;]&lt;/span&gt; pour sauvegarder leur configuration.&lt;/p&gt;
&lt;p&gt;La boucle ci-dessous va r&#233;cup&#233;rer le tableau php stock&#233; en bdd. &lt;br class='autobr' /&gt;
Ce tableau va &#234;tre affect&#233; &#224; la variable tabMetaAuteur, puis pass&#233; en &#034;crit&#232;re&#034; de boucle. &lt;br class='autobr' /&gt;
On effectue une boucle sur les valeurs puis une boucle r&#233;cursive&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb3&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;Voir doc spip : les boucles recursives&#034; id=&#034;nh3&#034;&gt;3&lt;/a&gt;]&lt;/span&gt; a l'int&#233;rieur de celle-ci qui va descendre dans toute la profondeur du tableau.&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;[(#REM)&lt;!-- R&#233;cup&#233;ration d'un tableau en bdd--&gt;] &lt;BOUCLE_recup_tableau(spip_meta){nom = champs_extras_spip_auteurs}&gt; #SET{tabMetaAuteur,#VALEUR} &lt;/BOUCLE_recup_tableau&gt; [(#REM)&lt;!-- Boucle sur le tableau --&gt;] &lt;ul&gt; &lt;BOUCLE_data_tab(DATA){source table, #GET{tabMetaAuteur}}&gt; &lt;li&gt;#CLEF &lt;B_data&gt; &lt;ul&gt; [(#REM)&lt;!-- Boucle sur le tableau et toute sa profondeur --&gt;] &lt;BOUCLE_data(DATA){source table, #VALEUR}{' '}&gt; &lt;li&gt;\[#CLE\] =&gt; #VALEUR &lt;BOUCLE_recursive_data(BOUCLE_data)&gt; &lt;/BOUCLE_recursive_data&gt; &lt;/li&gt; &lt;/BOUCLE_data&gt; &lt;/ul&gt; &lt;/B_data&gt; &lt;/li&gt; &lt;/BOUCLE_data_tab&gt; &lt;/ul&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Noter l'&#233;criture raccourcie de la boucle de calcul&lt;/strong&gt; :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;&lt;BOUCLE_recursive_data(BOUCLE_data)/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Il est possible d'&#233;viter une boucle et d'arriver au m&#234;me r&#233;sultat avec le code ci-dessous.&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;&lt;BOUCLE_recup_tableau(spip_meta){nom = champs_extras_spip_auteurs}&gt; &lt;BOUCLE_data(DATA){source table, #VALEUR}{' '}&gt; \[#CLE\] =&gt; #VALEUR &lt;BOUCLE_recursive_data(BOUCLE_data)/&gt; &lt;/BOUCLE_data&gt; &lt;/BOUCLE_recup_tableau&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Une solution encore plus rapide et d'utiliser print_r($array) de php en guise de filtre :').&lt;/p&gt;
&lt;div class=&#034;astuce&#034;&gt;
&lt;code class='spip spip_code spip_code_inline' dir='ltr'&gt;[(#GET{tabMetaAuteur}|unserialize|print_r{1})]&lt;/code&gt;
&lt;/div&gt;
&lt;p&gt;&#192; noter que le tableau doit &#234;tre d&#233;s&#233;rialis&#233; contrairement au crit&#232;re de boucle DATA qui accepte les 2 formats.&lt;/p&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#034;nb1&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh1&#034; class=&#034;spip_note&#034; title=&#034;Notes 1&#034; rev=&#034;appendix&#034;&gt;1&lt;/a&gt;] &lt;/span&gt;Voir doc spip : &lt;a href=&#034;http://www.spip.net/fr_article4009.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;#ARRAY&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div id=&#034;nb2&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh2&#034; class=&#034;spip_note&#034; title=&#034;Notes 2&#034; rev=&#034;appendix&#034;&gt;2&lt;/a&gt;] &lt;/span&gt;Serialize/Unserialize : &lt;a href=&#034;http://fr.wikipedia.org/wiki/S%C3%A9rialisation&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;compresser/d&#233;compresser un tableau&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div id=&#034;nb3&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh3&#034; class=&#034;spip_note&#034; title=&#034;Notes 3&#034; rev=&#034;appendix&#034;&gt;3&lt;/a&gt;] &lt;/span&gt;Voir doc spip : &lt;a href=&#034;http://www.spip.net/fr_article914.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;les boucles recursives&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>



</channel>

</rss>
