<?xml
version="1.0" encoding="utf-8"?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:atom="http://www.w3.org/2005/Atom"
>

<channel xml:lang="fr">
	<title>Vader[FR] : ce n'est pas un blog, c'est un Sith</title>
	<link>https://vader-fr.fr/</link>
	
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>
	<atom:link href="https://vader-fr.fr/spip.php?id_rubrique=27&amp;page=backend" rel="self" type="application/rss+xml" />

	<image>
		<title>Vader[FR] : ce n'est pas un blog, c'est un Sith</title>
		<url>https://vader-fr.fr/local/cache-vignettes/L144xH144/siteon0-c1872.jpg?1771612673</url>
		<link>https://vader-fr.fr/</link>
		<height>144</height>
		<width>144</width>
	</image>



<item xml:lang="fr">
		<title>JavaScript</title>
		<link>https://vader-fr.fr/spip.php?article199</link>
		<guid isPermaLink="true">https://vader-fr.fr/spip.php?article199</guid>
		<dc:date>2023-10-11T17:07:25Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Vader[FR]</dc:creator>



		<description>
&lt;p&gt;JavaScript &lt;br class='autobr' /&gt;
JavaScript &lt;br class='autobr' /&gt;
JavaScript est un langage interpr&#233;t&#233;, ex&#233;cut&#233; c&#244;t&#233; client par le navigateur. Il n'y a aucun lien avec le langage compil&#233; Java. &lt;br class='autobr' /&gt;
S'ex&#233;cutant dans le navigateur, les droits du javaScript sont limit&#233;s. Il ne peut par exemple pas lire ou &#233;crire sur le disque dur. &lt;br class='autobr' /&gt;
Les scripts et fonctions en JavaScript permettent de modifier la page en temps r&#233;el, sans avoir &#224; recharger toutes les informations depuis le serveur. &lt;br class='autobr' /&gt;
Contrairement &#224; de nombreux sites, le site &#034;Vader-fr&#034; (&#8230;)&lt;/p&gt;


-
&lt;a href="https://vader-fr.fr/spip.php?rubrique30" rel="directory"&gt;Vader-fr.fr&lt;/a&gt;


		</description>


 <content:encoded>&lt;img src='https://vader-fr.fr/local/cache-vignettes/L150xH123/logo-javascript-6f5ee.png?1771613035' class='spip_logo spip_logo_right' width='150' height='123' alt=&#034;&#034; /&gt;
		&lt;div class='rss_texte'&gt;&lt;div class=&#034;onglets_bloc_initial&#034;&gt;&lt;div class=&#034;onglets_contenu&#034;&gt;&lt;h2 class=&#034;cs_onglet&#034;&gt;&lt;a href=&#034;#&#034;&gt;JavaScript&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;h3 class=&#034;spip&#034;&gt;JavaScript&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#034;https://fr.wikipedia.org/wiki/JavaScript&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;JavaScript&lt;/a&gt; est un langage interpr&#233;t&#233;, ex&#233;cut&#233; c&#244;t&#233; client par le navigateur. Il n'y a aucun lien avec le langage compil&#233; Java.&lt;/p&gt;
&lt;p&gt;S'ex&#233;cutant dans le navigateur, les droits du javaScript sont limit&#233;s. Il ne peut par exemple pas lire ou &#233;crire sur le disque dur.&lt;/p&gt;
&lt;p&gt;Les scripts et fonctions en JavaScript permettent de modifier la page en temps r&#233;el, sans avoir &#224; recharger toutes les informations depuis le serveur.&lt;/p&gt;
&lt;p&gt;Contrairement &#224; de nombreux sites, le site &#034;Vader-fr&#034; ne fait appel &#224; aucun domaine tiers (voir onglet suivant).&lt;/p&gt;
&lt;p&gt;Mais le site utilise n&#233;anmoins du JavaScript afin de fournir quelques fonctionnalit&#233;s tr&#232;s pratiques :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Syst&#232;me d'onglets et de pages sur les articles, permettant de s&#233;parer les &#034;chapitres&#034; en onglets diff&#233;rents, d'avoir un article moins long et plus lisible.&lt;/li&gt;&lt;li&gt; Blocs d&#233;pliants&lt;/li&gt;&lt;li&gt; Protection des adresses courriel dans les articles et descriptif des rubriques.&lt;/li&gt;&lt;li&gt; Tri des tableaux&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#034;onglets_contenu&#034;&gt;&lt;h2 class=&#034;cs_onglet&#034;&gt;&lt;a href=&#034;#&#034;&gt;Serveur tiers&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;h3 class=&#034;spip&#034;&gt;Serveur tiers&lt;/h3&gt;
&lt;p&gt;Serveur tiers ou Domaine tiers ou Site tiers : Serveur n'&#233;tant pas l'h&#233;bergeur de la page Web visit&#233;e mais un autre serveur, d'un autre domaine, auquel la page visit&#233;e fait un appel pour une raison quelconque (publicit&#233;, script, image, PDF, composants de la page visit&#233;e, calculs, etc.)&lt;/p&gt;
&lt;p&gt;Sous Firefox, le plugin &lt;a href=&#034;https://addons.mozilla.org/fr/firefox/addon/lightbeam-chikl/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;LightBeam&lt;/a&gt; permet de visualiser les relations entre les diff&#233;rents sites.&lt;/p&gt;
&lt;p&gt;Toujours sur Firefox, des plugins permettent de g&#233;rer l'ex&#233;cution des scripts de domaines tiers, par exemple :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a href=&#034;https://addons.mozilla.org/fr/firefox/addon/noscript/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;NoScript&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://addons.mozilla.org/fr/firefox/addon/ghostery/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Ghostery&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://addons.mozilla.org/fr/firefox/addon/ublock-origin/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;uBlock Origin&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Voici par exemple les serveurs tiers signal&#233;s sur le site &lt;a href=&#034;https://www.ouest-france.fr/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Ouest-France&lt;/a&gt; :&lt;/p&gt;
&lt;dl class='spip_document_642 spip_documents spip_documents_left' style='float:left;'&gt;
&lt;dt&gt;&lt;img src='https://vader-fr.fr/local/cache-vignettes/L500xH166/ouestfrance-noscript-db5ad.png?1771613035' width='500' height='166' alt='' /&gt;&lt;/dt&gt;
&lt;dt class='spip_doc_titre' style='width:350px;'&gt;&lt;strong&gt;Domaines Tiers site Ouest-France - NoScript&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;&lt;dl class='spip_document_643 spip_documents spip_documents_left' style='float:left;'&gt;
&lt;dt&gt;&lt;img src='https://vader-fr.fr/local/cache-vignettes/L500xH475/ouestfrance-ghostery-400fb.png?1771613035' width='500' height='475' alt='' /&gt;&lt;/dt&gt;
&lt;dt class='spip_doc_titre' style='width:350px;'&gt;&lt;strong&gt;Domaines Tiers site Ouest-France - Ghostery&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;&lt;dl class='spip_document_644 spip_documents spip_documents_left' style='float:left;'&gt;
&lt;dt&gt;&lt;img src='https://vader-fr.fr/local/cache-vignettes/L500xH465/ouestfrance-ublock-22ec8.png?1771613035' width='500' height='465' alt='' /&gt;&lt;/dt&gt;
&lt;dt class='spip_doc_titre' style='width:350px;'&gt;&lt;strong&gt;Domaines Tiers site Ouest-France - uBlock Origin&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Pr&#233;sentation g&#233;n&#233;rale du site</title>
		<link>https://vader-fr.fr/spip.php?article190</link>
		<guid isPermaLink="true">https://vader-fr.fr/spip.php?article190</guid>
		<dc:date>2022-06-20T08:31:34Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Vader[FR]</dc:creator>



		<description>
&lt;p&gt;Site de l'association &#034;Histoire et Patrimoine&#034; de la commune de Les Touches en Loire Atlantique 1914-1918 - premi&#232;re guerre mondiale 1939-1945 - deuxi&#232;me guerre mondiale, r&#233;sistance en Loire Inf&#233;rieure (Loire Atlantique) actualit&#233;s sur la commune de Les Touches actualit&#233;s et informations sur l'association &lt;br class='autobr' /&gt;
Reprend &#233;galement des articles des sites d'Henri Lepage. &lt;br class='autobr' /&gt;
&#201;tant un site d'information et non artistique, ce site a besoin d'afficher beaucoup d'informations, son design est donc assez (&#8230;)&lt;/p&gt;


-
&lt;a href="https://vader-fr.fr/spip.php?rubrique44" rel="directory"&gt;Les Touches (44) - Histoire et patrimoine&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Site de l'association &#034;Histoire et Patrimoine&#034; de la commune de &lt;a href=&#034;https://fr.wikipedia.org/wiki/Les_Touches&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Les Touches&lt;/a&gt; en Loire Atlantique&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; 1914-1918 - premi&#232;re guerre mondiale&lt;/li&gt;&lt;li&gt; 1939-1945 - deuxi&#232;me guerre mondiale, r&#233;sistance en Loire Inf&#233;rieure (Loire Atlantique)&lt;/li&gt;&lt;li&gt; actualit&#233;s sur la commune de Les Touches&lt;/li&gt;&lt;li&gt; actualit&#233;s et informations sur l'association&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Reprend &#233;galement des articles des sites d'&lt;a href=&#034;https://www.ouest-france.fr/pays-de-la-loire/les-touches-44390/henri-lepage-lhomme-qui-fait-vivre-les-touches-sur-internet-4442810&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Henri Lepage&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&#201;tant un site d'information et non artistique, ce site a besoin d'afficher beaucoup d'informations, son design est donc assez &#034;charg&#233;&#034; contrairement &#224; un site d'artiste ou de design qui, simple vitrine, serait plus &#233;pur&#233;.&lt;br class='autobr' /&gt;
Le design reste donc tr&#232;s classique, un ent&#234;te qui fait aussi menu de navigation (avec champ de recherche), pied de page et cadre contenu sur toute la largeur au centre pour plus de lisibilit&#233;, lequel reste fixe dans la page et a son propre scrolling.&lt;br class='autobr' /&gt;
Petite &#034;innovation&#034; personnelle&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;Je n'ai pas vu de tel design sur un autre site, mais il est possible que (&#8230;)&#034; id=&#034;nh1&#034;&gt;1&lt;/a&gt;]&lt;/span&gt; que l'on retrouve &#233;galement sur mon site, un cadre d&#233;pliant sur la droite liste les articles de la m&#234;me rubrique.&lt;/p&gt;
&lt;p&gt;Ce site sous SPIP a &#233;t&#233; cr&#233;&#233; &#224; partir du squelette zpip, &#034;customis&#233;&#034; pour le site Vader-fr.fr, avec quelques modifications &#224; la marge.&lt;/p&gt;
&lt;p&gt;Son fonctionnement technique sera d&#233;taill&#233; dans cette rubrique :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; squelette&lt;/li&gt;&lt;li&gt; style CSS dont multi-rubrique&lt;/li&gt;&lt;li&gt; scripts JavaScript&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#034;nb1&#034;&gt;
&lt;p&gt;&lt;span class=&#034;csfoo htmla&#034;&gt;&lt;/span&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;span class=&#034;csfoo htmlb&#034;&gt;&lt;/span&gt;Je n'ai pas vu de tel design sur un autre site, mais il est possible que cela existe.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Squelette Zpip, th&#232;me ZenGarden, scripts JavaScript et PHP</title>
		<link>https://vader-fr.fr/spip.php?article145</link>
		<guid isPermaLink="true">https://vader-fr.fr/spip.php?article145</guid>
		<dc:date>2014-12-25T16:01:29Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Vader[FR]</dc:creator>



		<description>
&lt;p&gt;validation W3C des balises et du CSS : &lt;br class='autobr' /&gt;
http://validator.w3.org/check?uri=h... &lt;br class='autobr' /&gt;
http://jigsaw.w3.org/css-validator/...&lt;/p&gt;


-
&lt;a href="https://vader-fr.fr/spip.php?rubrique31" rel="directory"&gt;Isabelle Palenc : artiste peintre sculpteur&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;dl class='spip_document_282 spip_documents spip_documents_left' style='float:left;'&gt;
&lt;dt&gt;&lt;a href='https://vader-fr.fr/IMG/7z/zpip_isa.7z' title='7 Zip - 39.2 kio' type=&#034;application/x-7z-compressed&#034;&gt;&lt;img src='https://vader-fr.fr/local/cache-vignettes/L64xH64/7z-91dc2.svg?1772810739' width='64' height='64' alt='' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class='spip_doc_titre' style='width:120px;'&gt;&lt;strong&gt;Squelette Zpip Isabelle palenc&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;&lt;dl class='spip_document_283 spip_documents spip_documents_left' style='float:left;'&gt;
&lt;dt&gt;&lt;a href='https://vader-fr.fr/IMG/7z/theme_isav5.7z' title='7 Zip - 711.6 kio' type=&#034;application/x-7z-compressed&#034;&gt;&lt;img src='https://vader-fr.fr/local/cache-vignettes/L64xH64/7z-91dc2.svg?1772810739' width='64' height='64' alt='' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class='spip_doc_titre' style='width:120px;'&gt;&lt;strong&gt;Th&#232;me ZenGarden isabelle Palenc&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;&lt;dl class='spip_document_287 spip_documents spip_documents_left' style='float:left;'&gt;
&lt;dt&gt;&lt;a href='https://vader-fr.fr/IMG/zip/isa.js.zip' title='Zip - 5.1 kio' type=&#034;application/zip&#034;&gt;&lt;img src='https://vader-fr.fr/local/cache-vignettes/L64xH64/zip-f045b.svg?1772810739' width='64' height='64' alt='' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class='spip_doc_titre' style='width:120px;'&gt;&lt;strong&gt;Scripts JavaScript Isabelle Palenc&lt;/strong&gt;&lt;/dt&gt;
&lt;dd class='spip_doc_descriptif' style='width:120px;'&gt;diaporama AJAX, redimensionnement proportionnel, avertissement pour Internet Explorer...
&lt;/dd&gt;
&lt;/dl&gt;&lt;dl class='spip_document_285 spip_documents spip_documents_left' style='float:left;'&gt;
&lt;dt&gt;&lt;a href='https://vader-fr.fr/IMG/zip/charger_diapo.php.zip' title='Zip - 2.5 kio' type=&#034;application/zip&#034;&gt;&lt;img src='https://vader-fr.fr/local/cache-vignettes/L64xH64/zip-f045b.svg?1772810739' width='64' height='64' alt='' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class='spip_doc_titre' style='width:120px;'&gt;&lt;strong&gt;Script PHP pour le diaporama AJAX&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;&lt;dl class='spip_document_286 spip_documents spip_documents_left' style='float:left;'&gt;
&lt;dt&gt;&lt;a href='https://vader-fr.fr/IMG/zip/accents.php.zip' title='Zip - 2.2 kio' type=&#034;application/zip&#034;&gt;&lt;img src='https://vader-fr.fr/local/cache-vignettes/L64xH64/zip-f045b.svg?1772810739' width='64' height='64' alt='' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class='spip_doc_titre' style='width:120px;'&gt;&lt;strong&gt;Scripts PHP de gestion des chaines, accents et caract&#232;res sp&#233;ciaux.&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;&lt;dl class='spip_document_284 spip_documents spip_documents_left' style='float:left;'&gt;
&lt;dt&gt;&lt;a href='https://vader-fr.fr/IMG/zip/fonc.php.zip' title='Zip - 1.8 kio' type=&#034;application/zip&#034;&gt;&lt;img src='https://vader-fr.fr/local/cache-vignettes/L64xH64/zip-f045b.svg?1772810739' width='64' height='64' alt='' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class='spip_doc_titre' style='width:120px;'&gt;&lt;strong&gt;Diverses fonctions utilitaires en PHP&lt;/strong&gt;&lt;/dt&gt;
&lt;dd class='spip_doc_descriptif' style='width:120px;'&gt;Pas n&#233;cessairement utilis&#233;es par le site.
&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;validation W3C des balises et du CSS :&lt;/p&gt;
&lt;dl class='spip_document_280 spip_documents spip_documents_left' style='float:left;'&gt;
&lt;dt&gt;&lt;a href=&#034;http://validator.w3.org/check?uri=http%3A%2F%2Fisabellepalenc.com%2Fspip.php&amp;charset=%28detect+automatically%29&amp;doctype=Inline&amp;group=0&amp;user-agent=W3C_Validator%2F1.3+http%3A%2F%2Fvalidator.w3.org%2Fservices&#034; class=&#034;spip_out&#034; title='Validation W3C du code des balises'&gt;&lt;img src='https://vader-fr.fr/local/cache-vignettes/L88xH31/valid-xhtml10-7d568.png?1771688508' width='88' height='31' alt='' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class='spip_doc_titre' style='width:120px;'&gt;&lt;strong&gt;Validation W3C du code des balises&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;&lt;dl class='spip_document_281 spip_documents spip_documents_left' style='float:left;'&gt;
&lt;dt&gt;&lt;a href=&#034;http://jigsaw.w3.org/css-validator/validator?uri=http%3A%2F%2Fisabellepalenc.com%2Fthemes%2Ftheme_isav5%2Fhabillage.css&amp;profile=css3&amp;usermedium=all&amp;warning=1&amp;vextwarning=&amp;lang=fr&#034; class=&#034;spip_out&#034; title='Validation W3C du code CSS du style'&gt;&lt;img src='https://vader-fr.fr/local/cache-vignettes/L88xH31/vcss-c26ba.gif?1771688508' width='88' height='31' alt='' /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class='spip_doc_titre' style='width:120px;'&gt;&lt;strong&gt;Validation W3C du code CSS du style&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Rubrique actualit&#233;s</title>
		<link>https://vader-fr.fr/spip.php?article148</link>
		<guid isPermaLink="true">https://vader-fr.fr/spip.php?article148</guid>
		<dc:date>2014-12-25T14:48:02Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Vader[FR]</dc:creator>



		<description>
&lt;p&gt;Squelette de la rubrique &lt;br class='autobr' /&gt;
La rubrique actualit&#233; s'affiche sous la forme d'une liste d'articles (titre + d&#233;but du texte) &#224; gauche, d'une image &#224; droite et d'un &#233;ventuel bloc de liens de pagination en dessous de la liste des articles, si besoin est. &lt;br class='autobr' /&gt;
Dans la mesure o&#249; la rubrique ne comporte pas de sous-rubrique, le squelette est rubrique=13.html dans le dossier contenu du plugin Zpip. &lt;br class='autobr' /&gt; [(#REM) Actualites ] &lt;br class='autobr' /&gt;
On reprend la structure habituelle avec le cadre gris. &lt;br class='autobr' /&gt;
Pour simplifier, on (&#8230;)&lt;/p&gt;


-
&lt;a href="https://vader-fr.fr/spip.php?rubrique31" rel="directory"&gt;Isabelle Palenc : artiste peintre sculpteur&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;div class=&#034;onglets_bloc_initial&#034;&gt;&lt;div class=&#034;onglets_contenu&#034;&gt;&lt;h2 class=&#034;cs_onglet&#034;&gt;&lt;a href=&#034;#&#034;&gt;Squelette de la rubrique&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;
&lt;p&gt;La rubrique actualit&#233; s'affiche sous la forme d'une liste d'articles (titre + d&#233;but du texte) &#224; gauche, d'une image &#224; droite et d'un &#233;ventuel bloc de liens de pagination en dessous de la liste des articles, si besoin est.&lt;/p&gt;
&lt;p&gt;Dans la mesure o&#249; la rubrique ne comporte pas de sous-rubrique, le squelette est &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;rubrique=13.html&lt;/code&gt; dans le dossier contenu du plugin Zpip.&lt;/p&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;[(#REM) Actualites ] &lt;BOUCLE_contenu_rubrique(RUBRIQUES){id_rubrique}&gt; &lt;div class=&#034;contenu-principal galeries&#034;&gt;
&lt;div class=&#034;surlignable&#034;&gt;
&lt;div id=&#034;bio&#034;&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On reprend la structure habituelle avec le cadre gris.&lt;/p&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;&lt;B_article_detail&gt;
&lt;div id=&#034;expos_detail&#034; class=&#034;menu articles&#034;&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Pour simplifier, on r&#233;utilise des &#233;l&#233;ments d&#233;j&#224; d&#233;clar&#233;s.&lt;/p&gt;
&lt;p&gt;Le cadre principal contient 3 blocs :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; actus_liste, la liste des actualit&#233;s (titre + r&#233;sum&#233; du texte)&lt;/li&gt;&lt;li&gt; expos_pagination, les liens de pagination si besoin est&lt;/li&gt;&lt;li&gt; actus_photo : la photo&lt;/li&gt;&lt;/ul&gt;&lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='#_foo'&gt;actus_liste&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&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;	&lt;div id=&#034;actus_liste&#034;&gt; #ANCRE_PAGINATION &lt;ul&gt; &lt;BOUCLE_article_detail(ARTICLES){id_rubrique=13} {par date}{inverse}{lang} {pagination 10}&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On travaille sur les articles de la rubrique 13, en les triant pas ordre chronologique inverse (du plus r&#233;cent au plus ancien), le tout filtr&#233; par la langue choisie sur le site, et en s&#233;lectionnant 10 articles par page.&lt;br class='autobr' /&gt;
Cette boucle SPIP est dans une lite &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;ul&gt;&lt;/code&gt; et les &#233;l&#233;ments de liste &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;li&gt;&lt;/code&gt; seront donc r&#233;p&#233;t&#233;s pour chaque article.&lt;/p&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; &lt;li class=&#034;hentry&#034;&gt; &lt;h3 class=&#034;entry-title&#034;&gt;&lt;a href=&#034;#URL_ARTICLE&#034; rel=&#034;bookmark&#034;&gt;#TITRE&lt;/a&gt; &lt;/h3&gt; [(#TEXTE|couper{80})]&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On affiche le titre dans un lien, puis les 80 premiers caract&#232;res du texte, obtenus par le filtre &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;|couper{80}&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Il ne reste ensuite plus qu'&#224; fermer l'&#233;l&#233;ment de liste, la liste de la boucle d'affichage, la boucle g&#233;n&#233;rale (de d&#233;tail des articles) &#233;tant ferm&#233;es plus loin de mani&#232;re &#224; englober le bloc pagination et y g&#233;n&#233;rer les liens de pagination.&lt;/p&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; &lt;/li&gt; &lt;/BOUCLE_article_detail&gt; &lt;/ul&gt; &lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;style CSS du bloc :&lt;/p&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;#actus_liste { position:absolute; top:0; left:0; width:60%; bottom:50px; overflow-y:auto; padding-left:50px;
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Le bloc est fix&#233; dans la page, aux bords gauche et haut, &#224; 50 px du bas pour laisser la place au bloc pagination, et ne prend que 60% de la largeur de son conteneur, pour laisser de la place au bloc photo.&lt;br class='autobr' /&gt;
Un espace de 50px entre son bord gauche et le contenu permet de l'a&#233;rer visuellement, et gr&#226;ce &#224; la propri&#233;t&#233; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;overflow-y:auto&lt;/code&gt;, un ascenseur vertical appara&#238;tra dans ce cadre si besoin est.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='#_foo'&gt;expos_pagination&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&gt;
&lt;p&gt;On y affiche simplement la pagination correspondant &#224; la boucle de s&#233;lection des articles.&lt;br class='autobr' /&gt;
Le mot cl&#233; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#PAGINATION&lt;/code&gt; n'&#233;tant pas valable en dehors d'une boucle, c'est pourquoi la boucle g&#233;n&#233;rale de s&#233;lection des articles (&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;B_article_detail&gt;&lt;/code&gt;, &#224; ne pas confondre avec la boucle d'affichage, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;BOUCLE_article_detail(ARTICLES){id_rubrique=13}....&lt;/code&gt;) se referme plus loin.&lt;/p&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;	&lt;div id=&#034;expos_pagination&#034;&gt;[&lt;p class=&#034;pagination&#034;&gt;(#PAGINATION)&lt;/p&gt;]&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;style CSS du bloc :&lt;/p&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;#expos_pagination { position:absolute; height:50px; left:0; right:10px; bottom:0; text-align:center;
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Le bloc est fix&#233; dans la page, aux bords gauche et bas, hauteur limit&#233;e &#224; 50px pour ne pas d&#233;border sur le cadre pr&#233;c&#233;dent, &#224; 10 px du bord droite pour laisser une marge entre le contenu et le bloc g&#233;n&#233;ral, son contenu (les liens de paginations) &#233;tant justement centr&#233;.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='#_foo'&gt;actus_photo&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&gt;
&lt;p&gt;ici, une autre boucle SPIP va chercher au hasard une photo (et une seule) dans une rubrique d&#233;di&#233;e, laquelle est cach&#233;e dans la rubrique 1 (&#034;Accueil&#034;), et non visible directement sur le site.&lt;/p&gt;
&lt;p&gt;On travaille sur les articles, de la rubrique 38, en triant par hasard, et en se limitant &#224; un seul &#233;l&#233;ment.&lt;br class='autobr' /&gt;
Puis le logo de l'article est ensuite affich&#233;.&lt;/p&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;	&lt;div id=&#034;actus_photo&#034;&gt; &lt;B_actus_photo&gt; &lt;BOUCLE_actus_photo(ARTICLES){id_rubrique=38}{par hasard}{pagination 1}&gt; [(#LOGO_ARTICLE)] &lt;/BOUCLE_actus_photo&gt; &lt;/B_actus_photo&gt; &lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Style CSS du bloc :&lt;/p&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;#actus_photo { bottom:50px; position:absolute; top:0; right:0; width:30%;
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Le bloc est fix&#233; dans la page, aux bords droit et haut, &#224; 50 px du bas pour laisser la place au bloc pagination, et sa largeur est limit&#233;e &#224; 30% de son conteneur, ce qui, avec une largeur de 60% pour son voisin (liste des actualit&#233;s), laisse 10% de la largeur du bloc g&#233;n&#233;ral comme marge entre les deux.&lt;br class='autobr' /&gt;
L'image du bloc sera trait&#233;e par un script JavaScript pour la redimensionner de mani&#232;re proportionnelle.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Puis on ferme le div principal, la boucle du d&#233;tail sur les articles, ainsi que les blocs g&#233;n&#233;raux et la boucle de la rubrique.&lt;/p&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; &lt;/div&gt;
&lt;/B_article_detail&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/BOUCLE_contenu_rubrique&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#034;onglets_contenu&#034;&gt;&lt;h2 class=&#034;cs_onglet&#034;&gt;&lt;a href=&#034;#&#034;&gt;Squelette des articles&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;
&lt;p&gt;Les articles de la rubrique actualit&#233; s'affichent sous la forme d'une photo (le logo) &#224; gauche, et du titre + texte &#224; droite.&lt;/p&gt;
&lt;p&gt;Dans la mesure o&#249; la rubrique ne comporte pas de sous-rubrique, le squelette devrait &#234;tre &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;article=13.html&lt;/code&gt; dans le dossier contenu du plugin Zpip.&lt;br class='autobr' /&gt;
Toutefois, le fichier squelette est &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;article-13.html&lt;/code&gt;, car plusieurs sous-rubriques &#233;taient pr&#233;vues avant.&lt;/p&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;[(#REM) Actualites ] &lt;BOUCLE_contenu_article(ARTICLES){id_article}&gt; &lt;div id=&#034;expos&#034;&gt; &lt;div id=&#034;expos_image&#034;&gt; #LOGO_ARTICLE &lt;/div&gt; &lt;div id=&#034;expos_texte&#034;&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Le cadre g&#233;n&#233;ral est divis&#233; en 2 blocs :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; expos_image, contenant le logo de l'article.
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; fix&#233; dans la page &#224; 80px du haut, 25px du bas, au bord gauche &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#expos_image { position:absolute; top:80px; left:0; bottom:25px;&lt;/code&gt;&lt;/li&gt;&lt;li&gt; de largeur limit&#233;e &#224; 49% de son conteneur. &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;width:49%; }&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Son image sera trait&#233;e par un script JavaScript.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; expos_texte ; contenant le cartouche (titres), le contenu &#034;surlignable&#034; (chapeau et texte, y compris documents et images incorpor&#233;es au texte), le lien vers un article ou site, et les notes de bas de page.
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; fix&#233; lui aussi dans la page &#224; 80px du haut, mais &#224; 0px du bas, et au bord droit &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#expos_texte { position:absolute; top:80px; right:0; bottom:0;&lt;/code&gt;&lt;/li&gt;&lt;li&gt; sa largeur est &#233;galement limit&#233;e &#224; 49% de son conteneur, afin que les deux blocs ne se chevauchent pas. &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;width:49%;&lt;/code&gt;&lt;/li&gt;&lt;li&gt; sa largeur maximale est de 500px afin de limiter la longueur des lignes de texte &#224; lire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;max-width:500px;&lt;/code&gt;&lt;/li&gt;&lt;li&gt; un espacement interne de 10px entre son bord droit et le contenu permet de l'a&#233;rer visuellement. &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;padding-right:10px;&lt;/code&gt;&lt;/li&gt;&lt;li&gt; le contenu (texte et images ou documents) pouvant &#234;tre trop grand pour le cadre, un ascenseur vertical viendra automatiquement en cas de besoin. &lt;code class='spip_code spip_code_inline' dir='ltr'&gt; overflow-y:auto; }&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Du reste, les boucles sont quand &#224; elles classiques des articles : logo, titre, texte, lien...&lt;/p&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; &lt;div class=&#034;cartouche&#034;&gt; [&lt;p class=&#034;#EDIT{surtitre} surtitre&#034;&gt;(#SURTITRE)&lt;/p&gt;] &lt;h1 class=&#034;h1 #EDIT{titre}&#034;&gt;#TITRE&lt;/h1&gt; [&lt;p class=&#034;#EDIT{soustitre} soustitre&#034;&gt;(#SOUSTITRE)&lt;/p&gt;] [(#REM) Inclure le modele des liens de traductions ] #MODELE{article_traductions} &lt;/div&gt; &lt;div class=&#034;surlignable&#034;&gt; [&lt;div class=&#034;#EDIT{chapo} chapo&#034;&gt;(#CHAPO|image_reduire{500,0})&lt;/div&gt;] [&lt;div class=&#034;#EDIT{texte} texte&#034;&gt;(#TEXTE)&lt;/div&gt;] &lt;/div&gt; [&lt;p class=&#034;#EDIT{hyperlien} hyperlien&#034;&gt;&lt;:voir_en_ligne:&gt; : &lt;a href=&#034;(#URL_SITE)&#034; target=&#034;_blank&#034; class=&#034;spip_out&#034;&gt;[(#NOM_SITE|sinon{[(#URL_SITE|couper{80})]})]&lt;/a&gt;&lt;/p&gt;] [&lt;div class=&#034;ps&#034;&gt; &lt;h2 class=&#034;h2&#034;&gt;&lt;:info_ps:&gt;&lt;/h2&gt; &lt;div class=&#034;#EDIT{ps} surlignable&#034;&gt;(#PS|image_reduire{500,0})&lt;/div&gt; &lt;/div&gt;] &lt;/div&gt;
&lt;/div&gt; &lt;/BOUCLE_contenu_article&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Rubriques revue de presse et liens</title>
		<link>https://vader-fr.fr/spip.php?article149</link>
		<guid isPermaLink="true">https://vader-fr.fr/spip.php?article149</guid>
		<dc:date>2014-12-13T13:31:36Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Vader[FR]</dc:creator>



		<description>
&lt;p&gt;Ces deux rubriques fonctionnent exactement sur le m&#234;me principe et ont donc le m&#234;me squelette &lt;br class='autobr' /&gt;
En haut &#224; gauche, un menu des sous-rubriques liste les sous-rubriques qui contiennent des articles, une barre verticale s&#233;parant ce menu du contenu : liste des articles sous forme de vignettes (page rubrique) ou contenu de l'article (page article). &lt;br class='autobr' /&gt;
Le squelette &#233;tant le m&#234;me pour les rubriques que les sous rubriques, les fichiers correspondants dans le r&#233;pertoire contenu du plugin Zpip sont : (&#8230;)&lt;/p&gt;


-
&lt;a href="https://vader-fr.fr/spip.php?rubrique31" rel="directory"&gt;Isabelle Palenc : artiste peintre sculpteur&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Ces deux rubriques fonctionnent exactement sur le m&#234;me principe et ont donc le m&#234;me squelette&lt;/p&gt;
&lt;p&gt;En haut &#224; gauche, un menu des sous-rubriques liste les sous-rubriques qui contiennent des articles, une barre verticale s&#233;parant ce menu du contenu : liste des articles sous forme de vignettes (page rubrique) ou contenu de l'article (page article).&lt;/p&gt;
&lt;p&gt;Le squelette &#233;tant le m&#234;me pour les rubriques que les sous rubriques, les fichiers correspondants dans le r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;contenu&lt;/code&gt; du plugin Zpip sont :&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;rubrique-33.html&lt;/code&gt; pour la rubrique &#034;Revue de presse&#034; et ses sous rubriques (articles de presse et m&#233;dias t&#233;l&#233;vision/radio)&lt;/li&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;rubrique-37.html&lt;/code&gt; pour la rubrique &#034;Liens&#034; et ses sous rubriques (artistes, r&#233;seaux, galeries et salon)&lt;/li&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;article-33.html&lt;/code&gt; pour les articles de la rubrique &#034;Revue de presse&#034; et ses sous rubriques&lt;/li&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;article-37.html&lt;/code&gt; pour les articles de la rubrique &#034;Liens&#034; et ses sous rubriques&lt;/li&gt;&lt;/ul&gt;&lt;div class=&#034;onglets_bloc_initial&#034;&gt;&lt;div class=&#034;onglets_contenu&#034;&gt;&lt;h2 class=&#034;cs_onglet&#034;&gt;&lt;a href=&#034;#&#034;&gt;Squelette des rubriques&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;
&lt;p&gt;Fichier de squelette &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;rubrique-33.html&lt;/code&gt; dans le r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;contenu&lt;/code&gt; du plugin Zpip, strictement identique &#224; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;rubrique-37.html&lt;/code&gt; &#224; l'exception d'un filtre de boucle SPIP&lt;/p&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;[(#REM) LIENS ]
&lt;BOUCLE_contenu_rubrique(RUBRIQUES){id_rubrique}&gt;
&lt;div class=&#034;contenu-principal galeries&#034;&gt;
&lt;div class=&#034;surlignable&#034;&gt;
&lt;div id=&#034;bio&#034;&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On d&#233;clare d'abord les conteneurs g&#233;n&#233;raux de la page, qui formeront le grand cadre gris, avant de cr&#233;er les deux cadres liste des rubriques sous forme de menu &#224; gauche, et liste des articles sous forme de vignettes &#224; droite.&lt;/p&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;&lt;div id=&#034;liens_rubrik&#034; class=&#034;menu&#034;&gt; &lt;B_sous_rubriques&gt; &lt;BOUCLE_sous_rubriques(RUBRIQUES) {id_parent=33 }{par num titre, titre}&gt; &lt;a href=&#034;#URL_RUBRIQUE&#034;&gt;[(#TITRE)]&lt;/a&gt;&lt;br&gt; &lt;/BOUCLE_sous_rubriques&gt; &lt;/B_sous_rubriques&gt;
&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;La boucle de s&#233;lection des rubriques est extr&#234;mement simple, on s&#233;lectionne les sous rubriques de &#034;Revue de presse&#034;, &#224; savoir donc les rubriques dont la rubrique parent est de num&#233;ro 33.&lt;br class='autobr' /&gt;
Puis on affiche simplement les liens ligne par ligne dans un cadre &#034;liens_rubrik&#034;.&lt;/p&gt;
&lt;p&gt;le style CSS correspondant est ;&lt;/p&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;#liens_rubrik { position:absolute; top:0; left:0; width:130px; border-right:1px solid black; font-size:15px; padding-left: 5px; padding-top: 5px;
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Le cadre est fix&#233; dans le bord haut gauche, sa largeur est fixe, de 130 pixels.&lt;br class='autobr' /&gt;
Sa hauteur est variable selon le nombre de lignes de liens qui s'afficheront dedans, ce qui permet &#224; la bordure droite de ne pas d&#233;passer les lignes.&lt;/p&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;&lt;div id=&#034;liens_artikles&#034;&gt; [(#REM) puis les articles - m&#234;me taille ] &lt;B_articles&gt; &lt;BOUCLE_articles(ARTICLES){id_rubrique}{lang} {par date}{inverse}&gt; &lt;div class=&#034;vignettes_article&#034;&gt; &lt;div class=&#034;vignette_img&#034;&gt; &lt;a href=&#034;#URL_ARTICLE&#034;&gt;[(#LOGO_ARTICLE|image_reduire{100,100})]&lt;/a&gt; &lt;/div&gt; &lt;a href=&#034;#URL_ARTICLE&#034;&gt;&lt;p class=&#034;texte&#034;&gt;#TITRE&lt;/p&gt;&lt;/a&gt; &lt;/div&gt; &lt;/BOUCLE_articles&gt; &lt;/B_articles&gt;
&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;La boucle de s&#233;lection des articles n'est pas tr&#232;s compliqu&#233;e, et l'affichage par vignettes se fait comme pour la rubrique &lt;a href='https://vader-fr.fr/spip.php?article147' class=&#034;spip_in&#034;&gt;Galerie&lt;/a&gt; (Sculpture et Peinture).&lt;br class='autobr' /&gt;
On prend les articles &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;(ARTICLES)&lt;/code&gt; de la rubrique et de ses sous-rubriques en les filtrant par langue &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;{lang}&lt;/code&gt; et en les triant par date du plus r&#233;cent au plus ancien &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;{par date}{inverse}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Style CSS du cadre des articles :&lt;/p&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;#liens_artikles { position:absolute; top:0; left:140px; right:5px; bottom:0; overflow-y:auto; padding-left: 5px; padding-top: 5px;
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;le cadre des articles est fix&#233;s &#224; 140 pixels du bord gauche (puisque le cadre des rubriques fait 130 pixels de largeur), aux bords bas et haut, et &#224; 5 pixels du bord droite, afin de prendre le reste de la page.&lt;br class='autobr' /&gt;
Un ascenseur vertical appara&#238;tra si besoin est &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;overflow-y:auto;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Puis on ferme le cadre g&#233;n&#233;ral&lt;/p&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;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/BOUCLE_contenu_rubrique&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#034;onglets_contenu&#034;&gt;&lt;h2 class=&#034;cs_onglet&#034;&gt;&lt;a href=&#034;#&#034;&gt;Squelette des articles&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;
&lt;p&gt;Fichier de squelette &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;article-33.html&lt;/code&gt; dans le r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;contenu&lt;/code&gt; du plugin Zpip, strictement identique &#224; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;article-37.html&lt;/code&gt; &#224; l'exception d'un filtre de boucle SPIP&lt;/p&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;&lt;BOUCLE_contenu_article(ARTICLES){id_article}&gt; &lt;div class=&#034;contenu-principal galeries&#034;&gt;
&lt;div class=&#034;surlignable&#034;&gt;
&lt;div id=&#034;bio&#034;&gt;
&lt;div id=&#034;liens_rubrik&#034; class=&#034;menu&#034;&gt; &lt;B_sous_rubriques&gt; &lt;BOUCLE_sous_rubriques(RUBRIQUES) {id_parent=33 }{par num titre, titre}&gt; &lt;a href=&#034;#URL_RUBRIQUE&#034;&gt;[(#TITRE)]&lt;/a&gt;&lt;br&gt; &lt;/BOUCLE_sous_rubriques&gt; &lt;/B_sous_rubriques&gt;
&lt;/div&gt; &lt;div id=&#034;liens_artikles&#034;&gt; &lt;B_articles&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Comme pour le squelette pr&#233;c&#233;dent, on retrouve les diff&#233;rents cadres : le cadre g&#233;n&#233;ral (bio), le cadre de la liste des rubriques &#224; gauche, et le grand cadre contenu &#224; droite, qui cette fois ne contiendra pas les vignettes des articles mais le contenu de l'article s&#233;lectionn&#233;.&lt;/p&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;	&lt;div class=&#034;cartouche&#034;&gt; [(#LOGO_ARTICLE||image_reduire{200,200})] [&lt;p class=&#034;#EDIT{surtitre} surtitre&#034;&gt;(#SURTITRE)&lt;/p&gt;] &lt;h1 class=&#034;h1 #EDIT{titre}&#034;&gt;#TITRE&lt;/h1&gt; [&lt;p class=&#034;#EDIT{soustitre} soustitre&#034;&gt;(#SOUSTITRE)&lt;/p&gt;] [(#REM) Inclure le modele des liens de traductions ] #MODELE{article_traductions} &lt;/div&gt; &lt;div class=&#034;surlignable&#034;&gt; [&lt;div class=&#034;#EDIT{chapo} chapo&#034;&gt;(#CHAPO|image_reduire{500,0})&lt;/div&gt;] [&lt;div class=&#034;#EDIT{texte} texte&#034;&gt;(#TEXTE|image_reduire{500,0})&lt;/div&gt;] &lt;/div&gt; [&lt;p class=&#034;#EDIT{hyperlien} hyperlien&#034;&gt;&lt;:voir_en_ligne:&gt; : &lt;a href=&#034;(#URL_SITE)&#034; target=&#034;_blank&#034; class=&#034;spip_out&#034;&gt;[(#NOM_SITE|sinon{[(#URL_SITE|couper{80})]})]&lt;/a&gt;&lt;/p&gt;] [&lt;div class=&#034;ps&#034;&gt; &lt;h2 class=&#034;h2&#034;&gt;&lt;:info_ps:&gt;&lt;/h2&gt; &lt;div class=&#034;#EDIT{ps} surlignable&#034;&gt;(#PS|image_reduire{500,0})&lt;/div&gt; &lt;/div&gt;] &lt;/B_articles&gt;
&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;La boucle d'affichage du contenu de l'article s&#233;lectionn&#233; est la m&#234;me que pour les autres articles, on affiche le logo dans le cartouche avec le titre, et le texte avec ses documents en dessous.&lt;/p&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;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/BOUCLE_contenu_article&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#034;onglets_contenu&#034;&gt;&lt;h2 class=&#034;cs_onglet&#034;&gt;&lt;a href=&#034;#&#034;&gt;Inclusion de vid&#233;o&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;
&lt;p&gt;Dans un des articles de revue de presse, une courte vid&#233;o est incluse au texte de l'article.&lt;br class='autobr' /&gt;
Cela est possible gr&#226;ce au plugin SPIP &#034;Lecteur de m&#233;dias de MediaSPIP&#034; (mediaspip_player).&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Lien de t&#233;l&#233;chargement dans le catalogue des plugins de SPIP : &lt;a href=&#034;http://plugins.spip.net/mediaspip_player.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;mediaspip_player&lt;/a&gt;.&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;http://player.mediaspip.net/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Documentation&lt;/a&gt; du plugin&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Une fois le document (fichier vid&#233;o) t&#233;l&#233;vers&#233; sur le site SPIP, on peut inclure le lecteur par le lien &#034;emb&#034; (embedded).&lt;/p&gt;
&lt;p&gt;Afin d'&#234;tre s&#251;r que la taille du lecteur correspond &#224; celle de la vid&#233;o, j'ai mis le lien &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;emb&lt;/code&gt; dans un cadre.&lt;/p&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;&lt;div style=&#034;max-width:720px;max-height:576px;&#034;&gt; &lt;emb19|center|largeur=720|hauteur=576|autobuffer=auto&gt;
&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Rubriques galeries</title>
		<link>https://vader-fr.fr/spip.php?article147</link>
		<guid isPermaLink="true">https://vader-fr.fr/spip.php?article147</guid>
		<dc:date>2014-11-02T19:33:30Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Vader[FR]</dc:creator>



		<description>
&lt;p&gt;Galerie &lt;br class='autobr' /&gt;
Tout comme la page de garde, la rubrique galerie contient un diaporama des articles des sous-rubriques. Par d&#233;faut, le logo de la rubrique galerie est affich&#233;, avant le lancement du diaporama ou au cas o&#249; JavaScript serait d&#233;sactiv&#233;. &lt;br class='autobr' /&gt;
Fichier de squelette rubrique=3.html dans le r&#233;pertoire contenu du plugin Zpip. &lt;br class='autobr' /&gt; [(#REM) RUBRIQUE 3 = galeries ] &lt;br class='autobr' /&gt;
[(#REM) barre de navigation : sous-rubriques de rubrique 3 ] [(#REM)	MAIN NAVIGATION / NAVIGATION PRINCIPALE ] &lt;br class='autobr' /&gt;
Tout comme pour les (&#8230;)&lt;/p&gt;


-
&lt;a href="https://vader-fr.fr/spip.php?rubrique31" rel="directory"&gt;Isabelle Palenc : artiste peintre sculpteur&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;div class=&#034;onglets_bloc_initial&#034;&gt;&lt;div class=&#034;onglets_contenu&#034;&gt;&lt;h2 class=&#034;cs_onglet&#034;&gt;&lt;a href=&#034;#&#034;&gt;Galerie&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;
&lt;p&gt;Tout comme la page de garde, la rubrique galerie contient un diaporama des articles des sous-rubriques.&lt;br class='autobr' /&gt;
Par d&#233;faut, le logo de la rubrique galerie est affich&#233;, avant le lancement du diaporama ou au cas o&#249; JavaScript serait d&#233;sactiv&#233;.&lt;/p&gt;
&lt;p&gt;Fichier de squelette &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;rubrique=3.html&lt;/code&gt; dans le r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;contenu&lt;/code&gt; du plugin Zpip.&lt;/p&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;[(#REM) RUBRIQUE 3 = galeries ] [(#REM) barre de navigation : sous-rubriques de rubrique 3 ]
[(#REM)	MAIN NAVIGATION / NAVIGATION PRINCIPALE ]
&lt;INCLURE{fond=inclure/barre-nav-gal,env}&gt; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Tout comme pour les rubriques biographie et expositions, on inclut un squelette commun de barre de navigation.&lt;br class='autobr' /&gt;
Les squelettes de la rubrique galerie (&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;rubrique=3.html&lt;/code&gt;), ses sous rubriques (&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;rubrique-3.html&lt;/code&gt;) et les articles de la rubrique galerie ou de ses sous rubriques (&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;article-3.html&lt;/code&gt;) partageant la m&#234;me barre de navigation, pour des squelettes qui peuvent ensuite diff&#233;rer, l'inclusion prend ici tout son sens.&lt;br class='autobr' /&gt;
En effet, affiche/bitume et peinture/sculpture ont des aspects compl&#232;tement diff&#233;rents dans l'espace public, les premiers &#233;tant affich&#233;s en grand avec une liste de vignettes en dessous, les autres avec des vignettes par sous rubriques (s&#233;ries ou formats) et articles.&lt;/p&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;&lt;BOUCLE_contenu_rubrique(RUBRIQUES){id_rubrique}&gt; &lt;div class=&#034;contenu-principal galeries&#034;&gt; &lt;div id=&#034;diapo&#034;&gt; &lt;input type=&#034;hidden&#034; name=&#034;nrubrique&#034; id=&#034;nrubrique&#034; value=&#034;#ID_RUBRIQUE&#034;/&gt; &lt;input type=&#034;hidden&#034; name=&#034;mindepth&#034; id=&#034;mindepth&#034; value=&#034;0&#034;/&gt; &lt;input type=&#034;hidden&#034; name=&#034;maxdepth&#034; id=&#034;maxdepth&#034; value=&#034;3&#034;/&gt; &lt;input type=&#034;hidden&#034; name=&#034;lang&#034; id=&#034;lang&#034; value=&#034;#LANG&#034;/&gt; &lt;div id=&#034;diapo_image&#034;&gt; [(#LOGO_RUBRIQUE)] &lt;/div&gt; &lt;div id=&#034;diapo_texte&#034;&gt; &lt;h1 class=&#034;h1 #EDIT{titre}&#034;&gt;#TITRE&lt;/h1&gt; &lt;font color=&#034;red&#034;&gt;&lt;b&gt;JavaScript doit &#234;tre activ&#233; pour que le diaporama puisse d&#233;marrer&lt;/b&gt;&lt;/font&gt; &lt;/div&gt; &lt;/div&gt; &lt;/BOUCLE_contenu_rubrique&gt; &lt;/div&gt; &lt;!-- contenu principal--&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Pour le reste, le principe est le m&#234;me que pour la &lt;a href='https://vader-fr.fr/spip.php?article143' class=&#034;spip_in&#034;&gt;page de garde&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&#034;onglets_contenu&#034;&gt;&lt;h2 class=&#034;cs_onglet&#034;&gt;&lt;a href=&#034;#&#034;&gt;Barre de navigation&lt;/a&gt;&lt;/h2&gt;&lt;div&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;&lt;div id=&#034;nav&#034;&gt; &lt;B_sous_rubriques&gt; &lt;div class=&#034;menu-liste&#034;&gt; &lt;BOUCLE_sous_rubriques(RUBRIQUES) {id_parent=3} {par id_rubrique}&gt; &lt;div class=&#034;menu-entree&#034;&gt; &lt;a href=&#034;#URL_RUBRIQUE&#034; [ class=&#034;(#EXPOSE)&#034;]&gt;[(#TITRE)]&lt;/a&gt; &lt;/div&gt; &lt;/BOUCLE_sous_rubriques&gt; &lt;/div&gt; &lt;/B_sous_rubriques&gt;
&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Comme pour les autres, on liste les sous-rubriques de la rubrique galerie, &#224; savoir donc les rubriques dont la rubrique parente est la num&#233;ro 3.&lt;br class='autobr' /&gt;
Les sous-rubriques sont class&#233;es non pas par ordre alphab&#233;tique, mais par num&#233;ro de rubrique, et donc l'ordre dans lesquelles elles ont &#233;t&#233; cr&#233;&#233;es.&lt;br class='autobr' /&gt;
la balise &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#EXPOSE&lt;/code&gt; de SPIP, comme classe CSS &#233;ventuelle&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;car entre , ce qui permet &#224; SPIP de ne rien g&#233;n&#233;rer en cas d'absence de (&#8230;)&#034; id=&#034;nh1&#034;&gt;1&lt;/a&gt;]&lt;/span&gt; du lien permet de d&#233;finir une classe CSS particuli&#232;re (&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;class=&#034;on&#034;&lt;/code&gt;) sur le lien d'une sous-rubrique si le contenu de celle-ci est affich&#233; dans la page.&lt;br class='autobr' /&gt;
Une r&#232;gle CSS commune aux liens des trois barres de navigation &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#nav a.on, #nav_bio a.on, #nav_expo a.on&lt;/code&gt; permet de d&#233;finir une propri&#233;t&#233; de couleur d'arri&#232;re plan du lien &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;background-color:white;&lt;/code&gt; afin de le mettre en valeur.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&#034;onglets_contenu&#034;&gt;&lt;h2 class=&#034;cs_onglet&#034;&gt;&lt;a href=&#034;#&#034;&gt;Affiche et Bitume&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;
&lt;p&gt;Ces deux sous-rubriques de galerie ne contenant que des articles, car il y a moins d'&#339;uvres de ce type que de peintures et sculptures, les &#339;uvres (articles) sont affich&#233;es en grand, logo &#224; gauche, texte &#224; droite, avec une liste de vignette en dessous, laquelle est pagin&#233;e.&lt;/p&gt;
&lt;p&gt;Les squelettes &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;rubrique-5.html&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;rubrique-18.html&lt;/code&gt; dans le r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;contenu&lt;/code&gt; de Zpip sont donc strictement identiques.&lt;/p&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;[(#REM) barre de navigation : sous-rubriques de rubrique 3 ]
[(#REM)	MAIN NAVIGATION / NAVIGATION PRINCIPALE ]
&lt;INCLURE{fond=inclure/barre-nav-gal,env}&gt; &lt;BOUCLE_contenu_rubrique(RUBRIQUES){id_rubrique}&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On travaille sur le contenu d'une rubrique, la boucle principale est bien s&#251;r invoqu&#233;e.&lt;/p&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;&lt;div class=&#034;contenu-principal galeries&#034;&gt; &lt;div id=&#034;peintures&#034;&#034;&gt; [(#REM) articles au dessus, logo &#224; gauche, texte &#224; droite ] &lt;B_contenu_edition&gt; &lt;BOUCLE_contenu_edition(ARTICLES){id_rubrique}{par date}{inverse}{lang}{pagination 1}{debut_pagination_articles, 1}&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&#201;tant donn&#233; que l'on va afficher le contenu d'un article, il faut cr&#233;er une boucle :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; travaillant sur les articles, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;(ARTICLES)&lt;/code&gt;&lt;/li&gt;&lt;li&gt; de la rubrique pr&#233;c&#233;demment s&#233;lectionn&#233;e par la boucle principale &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;{id_rubrique}&lt;/code&gt;&lt;/li&gt;&lt;li&gt; on trie par date, depuis le plus r&#233;cent &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;{par date}{inverse}&lt;/code&gt;&lt;/li&gt;&lt;li&gt; en n'affichant qu'un seul article, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;{pagination 1}{debut_pagination_articles, 1}&lt;/code&gt;&lt;/li&gt;&lt;/ul&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; &lt;div id=&#034;peintures_image&#034;&gt; [(#LOGO_ARTICLE_RUBRIQUE)] &lt;/div&gt; &lt;div id=&#034;peintures_contenu&#034;&gt; [&lt;h1 class=&#034;h1 #EDIT{titre} titre_article&#034;&gt;#TITRE&lt;/h1&gt;(#TEXTE)] &lt;/div&gt; &lt;/BOUCLE_contenu_edition&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On affiche ensuite logo, titre et texte de l'article.&lt;/p&gt;
&lt;p&gt;Puis la pagination par vignettes, via une boucle SPIP.&lt;/p&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; &lt;/B_contenu_edition&gt; &lt;div id=&#034;peintures_pagination&#034;&gt; &lt;hr&gt; [(#REM) pagination par date + pr&#233;c&#233;dent/suivant ] &lt;B_pagination_articles&gt; #PAGINATION{precedent_peintures} &lt;BOUCLE_pagination_articles(ARTICLES){id_rubrique}{par date}{inverse}{lang}{pagination 10}&gt; &lt;a href=&#034;#URL_ARTICLE&#034; title=&#034;#TITRE&#034;&gt;[(#LOGO_ARTICLE|image_reduire{150,63})]&lt;/a&gt; &lt;/BOUCLE_pagination_articles&gt; #PAGINATION{suivant_peintures} &lt;/B_pagination_articles&gt; &lt;/div&gt;
&lt;/div&gt;
&lt;/BOUCLE_contenu_rubrique&gt; &lt;/div&gt; &lt;!-- contenu principal--&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;La pagination &#233;tant particuli&#232;re (boucle sur les articles pour vignettes + liens &#034;pr&#233;c&#233;dent&#034; et &#034;suivant&#034;), voici le d&#233;tail&lt;/p&gt;
&lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='#_foo'&gt;Pagination&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&gt;
&lt;p&gt;Les deux fichiers de mod&#232;le &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;pagination_precedent_peinture.html&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;pagination_suivant_peinture.html&lt;/code&gt; sont situ&#233;s dans le dossier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;prive/modeles&lt;/code&gt; de SPIP.&lt;br class='autobr' /&gt;
par ailleurs, pagination...peinture (articles) a le m&#234;me squelette que pagination...peinture&lt;strong&gt;s&lt;/strong&gt; (rubriques)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pr&#233;c&#233;dent&lt;/strong&gt;&lt;/p&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;#ENV*{bloc_ancre}
#SET{bornes,#ENV{page_courante}|bornes_pagination{#ENV{nombre_pages},10}}
#SET{premiere, #GET{bornes}|reset}
#SET{derniere, #GET{bornes}|end}
#SET{separateur,#ENV{separateur,'|'}}
#SET{i,#ENV{page_courante}|moins{1}}
#SET{imjpre,'&lt;img src=&#034;bckward2.gif&#034; height=&#034;21px&#034; align=&#034;middle&#034; alt=&#034;pr&#233;c&#233;dent&#034; title=&#034;page pr&#233;c&#233;dente&#034;&gt;'}
#SET{imjsui,'&lt;img src=&#034;forward2.gif&#034; height=&#034;21px&#034; align=&#034;middle&#034; alt=&#034;suivant&#034; title=&#034;page suivante&#034;&gt;'}
[(#GET{i}|&gt;{0}|?{' '})[ (#SET{item, #GET{i}|moins{1}|mult{#ENV{pas}} }) ][(#INCLURE{fond=modeles/paginationitem}{num=#GET{i}}{texte=#GET{imjpre}}{separateur=''}{url=#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|ancre_url{#ENV{ancre}}}{page_courante=#ENV{page_courante}}{derniere=#ENV{derniere}})] #SET{i,#GET{i}|plus{2}}
]&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Suivant&lt;/strong&gt;&lt;/p&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;#ENV*{bloc_ancre}
#SET{bornes,#ENV{page_courante}|bornes_pagination{#ENV{nombre_pages},10}}
#SET{premiere, #GET{bornes}|reset}
#SET{derniere, #GET{bornes}|end}
#SET{separateur,#ENV{separateur,'|'}}
#SET{i,#ENV{page_courante}|moins{1}}
#SET{imjpre,'&lt;img src=&#034;bckward2.gif&#034; height=&#034;21px&#034; align=&#034;middle&#034; alt=&#034;pr&#233;c&#233;dent&#034; title=&#034;page pr&#233;c&#233;dente&#034;&gt;'}
#SET{imjsui,'&lt;img src=&#034;forward2.gif&#034; height=&#034;21px&#034; align=&#034;middle&#034; alt=&#034;suivant&#034; title=&#034;page suivante&#034;&gt;'}
#SET{i,#ENV{page_courante}|plus{1}}
[(#GET{i}|&lt;={#ENV{nombre_pages}}|?{' '})[ (#SET{item, #GET{i}|moins{1}|mult{#ENV{pas}} }) ][(#INCLURE{fond=modeles/paginationitem}{num=#GET{i}}{texte=#GET{imjsui}}{separateur=''}{url=#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|ancre_url{#ENV{ancre}}}{page_courante=#ENV{page_courante}}{derniere=#ENV{derniere}})]
]&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#034;onglets_contenu&#034;&gt;&lt;h2 class=&#034;cs_onglet&#034;&gt;&lt;a href=&#034;#&#034;&gt;Peinture et Sculpture&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;
&lt;p&gt;Ces deux sous-rubriques de galerie contenant aussi bien des sous-rubriques que des articles, les s&#233;ries/formats (rubriques) et &#339;uvres (articles) sont affich&#233;es en vignettes.&lt;/p&gt;
&lt;p&gt;Les squelettes &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;rubrique=9.html&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;rubrique=6.html&lt;/code&gt; dans le r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;contenu&lt;/code&gt; de Zpip sont donc strictement identiques.&lt;/p&gt;
&lt;p&gt;Les sous-rubriques (s&#233;ries d'&#339;uvres) de ces sous-rubriques (peinture/sculpture) utilisent un squelette identique au deux rubriques pr&#233;c&#233;dentes (affiche/bitume).&lt;/p&gt;
&lt;p&gt;Le syst&#232;me est tr&#232;s simple, deux boucles SPIP vont chercher logo, titre et lien des sous-rubriques, puis des articles de la rubrique, chacun &#233;tant affich&#233; dans un bloc contenant le lien via le logo et le titre. Le style CSS se charge du reste en faisant &#034;flotter&#034; ces blocs pour les aligner sur une grille.&lt;/p&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;[(#REM) RUBRIQUE 9 = peintures ] [(#REM) barre de navigation : sous-rubriques de rubrique 3 ]
[(#REM)	MAIN NAVIGATION / NAVIGATION PRINCIPALE ]
&lt;INCLURE{fond=inclure/barre-nav-gal,env}&gt; &lt;BOUCLE_contenu_rubrique(RUBRIQUES){id_rubrique}&gt; &lt;div class=&#034;contenu-principal galeries&#034;&gt; &lt;div id=&#034;diapo&#034; style=&#034;overflow-y:auto;padding:20px;&#034;&gt;
[(#REM) D'abord les sous-rubriques avec une ic&#244;ne sp&#233;ciale style &#034;dossier&#034; en bas &#224; droite ] &lt;B_sous_rubriques&gt; &lt;BOUCLE_sous_rubriques(RUBRIQUES) {id_parent} {par date}{inverse}&gt; &lt;div class=&#034;vignettes_rubrique&#034;&gt; &lt;div class=&#034;vignette_img&#034;&gt; &lt;a href=&#034;#URL_RUBRIQUE&#034;&gt;[(#LOGO_RUBRIQUE|image_reduire{100,100})]&lt;/a&gt; &lt;/div&gt; &lt;a href=&#034;#URL_RUBRIQUE&#034;&gt;&lt;p class=&#034;texte&#034;&gt;[(#TITRE)]&lt;/p&gt;&lt;/a&gt; &lt;/div&gt; &lt;/BOUCLE_sous_rubriques&gt; &lt;/B_sous_rubriques&gt; [(#REM) puis les articles - m&#234;me taille ] &lt;B_articles&gt; &lt;BOUCLE_articles(ARTICLES){id_rubrique} {par date}{inverse}{lang}&gt; &lt;div class=&#034;vignettes_article&#034;&gt; &lt;div class=&#034;vignette_img&#034;&gt; &lt;a href=&#034;#URL_ARTICLE&#034;&gt;[(#LOGO_ARTICLE|image_reduire{100,100})]&lt;/a&gt; &lt;/div&gt; &lt;a href=&#034;#URL_ARTICLE&#034;&gt;&lt;p class=&#034;texte&#034;&gt;#TITRE&lt;/p&gt;&lt;/a&gt; &lt;/div&gt; &lt;/BOUCLE_articles&gt; &lt;/B_articles&gt;
&lt;/div&gt;
&lt;/BOUCLE_contenu_rubrique&gt; &lt;/div&gt; &lt;!-- contenu principal--&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Style CSS des vignettes :&lt;/p&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;.vignettes_rubrique, .vignettes_article { float:left; width:130px; height:130px; margin: 20px; padding:20px; text-align: center; background-color:#DEDEDE;
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Les blocs de classe vignette_rubrique et articles sont donc positionn&#233;s de mani&#232;re &#034;flottante&#034;, en les alignant les uns apr&#232;s les autres en commen&#231;ant &#224; gauche. D'o&#249; la propri&#233;t&#233; de style &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;float:left&lt;/code&gt;&lt;br class='autobr' /&gt;
Afin de permettre un bon alignement, les blocs ont une taille fixe. Le contenu (le texte du lien ainsi que l'image) est centr&#233;, et le fond est gris&#233;. Un espace int&#233;rieur (padding) de 20 px s'ajoute &#224; un autre, ext&#233;rieur (margin), pour s&#233;parerle bord du cadre de son contenu, et les vignettes entre elles.&lt;/p&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;.vignettes_rubrique img, .vignettes_article img{ max-width:100px;
}
.vignette_img { height:100px;
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bien que la boucle SPIP g&#233;n&#232;re une image de bonne taille gr&#226;ce au filtre &#034;image r&#233;duire&#034; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;[(#LOGO_ARTICLE|image_reduire{100,100})]&lt;/code&gt;, dans le doute, on limite la taille des images &#224; celle de leur bloc, 100 pixels.&lt;/p&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;.vignettes_rubrique .texte, .vignettes_article .texte { margin:0; padding-bottom: 5px; padding-top: 5px;
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#034;onglets_contenu&#034;&gt;&lt;h2 class=&#034;cs_onglet&#034;&gt;&lt;a href=&#034;#&#034;&gt;Articles&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;
&lt;p&gt;Par la suite, les articles ont la m&#234;me structure que pour les affiches ou les bitumes, avec l'&#339;uvre en grand et la liste pagin&#233;e des autres articles sous forme de vignettes en dessous.&lt;/p&gt;
&lt;p&gt;De la m&#234;me mani&#232;re que pour les rubriques, les squelettes des articles &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;article-5.html&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;article-6.html&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;article-9.html&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;article-18.html&lt;/code&gt; sont strictement identiques.&lt;/p&gt;
&lt;p&gt;La boucle est la m&#234;me que celle dans le squelette rubrique (affiche/bitume), on y adjoint simplement les liens vers les autres langues de l'article.&lt;/p&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;[(#REM) barre de navigation : sous-rubriques de rubrique 3 ]
&lt;INCLURE{fond=inclure/barre-nav-gal,env}&gt; &lt;BOUCLE_contenu_article(ARTICLES){id_article}&gt; &lt;div class=&#034;contenu-principal galeries&#034;&gt; [(#REM) Inclure le modele des liens de traductions ] #MODELE{article_traductions} &lt;div id=&#034;peintures&#034;&#034;&gt; [(#REM) articles au dessus, logo &#224; gauche, texte &#224; droite ] &lt;B_contenu_edition&gt; &lt;BOUCLE_contenu_edition(ARTICLES){id_article}&gt; &lt;div id=&#034;peintures_image&#034;&gt; [(#LOGO_ARTICLE_RUBRIQUE)] &lt;/div&gt; &lt;div id=&#034;peintures_contenu&#034;&gt; [&lt;h1 class=&#034;h1 #EDIT{titre} titre_article&#034;&gt;#TITRE&lt;/h1&gt;(#TEXTE)] &lt;/div&gt; &lt;/BOUCLE_contenu_edition&gt; &lt;/B_contenu_edition&gt; &lt;div id=&#034;peintures_pagination&#034;&gt; &lt;hr&gt; [(#REM) pagination par date + pr&#233;c&#233;dent/suivant ] &lt;B_pagination_articles&gt; #PAGINATION{precedent_peinture} &lt;BOUCLE_pagination_articles(ARTICLES){id_rubrique}{par date}{inverse}{lang}{pagination 10}&gt; &lt;a href=&#034;#URL_ARTICLE&#034; title=&#034;#TITRE&#034;&gt;[(#LOGO_ARTICLE|image_reduire{150,63})]&lt;/a&gt; &lt;/BOUCLE_pagination_articles&gt; #PAGINATION{suivant_peinture} &lt;/B_pagination_articles&gt; &lt;/div&gt;
&lt;/div&gt; [(#REM) Gestion du portfolio et des documents ]
[(#INCLURE{fond=inclure/documents}{id_article})] &lt;/div&gt; [&lt;div class=&#034;notes surlignable&#034;&gt;&lt;h2 class=&#034;h2 pas_surlignable&#034;&gt;&lt;:info_notes:&gt;&lt;/h2&gt;(#NOTES)&lt;/div&gt;] &lt;/BOUCLE_contenu_article&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#034;nb1&#034;&gt;
&lt;p&gt;&lt;span class=&#034;csfoo htmla&#034;&gt;&lt;/span&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;span class=&#034;csfoo htmlb&#034;&gt;&lt;/span&gt;car entre &lt;span class=&#034;csfoo htmla&#034;&gt;&lt;/span&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;[ ]&lt;/code&gt;&lt;span class=&#034;csfoo htmlb&#034;&gt;&lt;/span&gt;, ce qui permet &#224; SPIP de ne rien g&#233;n&#233;rer en cas d'absence de contenu, dans le cas pr&#233;sent donc si la cible du lien n'est pas expos&#233;e&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Rubriques biographie et expositions</title>
		<link>https://vader-fr.fr/spip.php?article146</link>
		<guid isPermaLink="true">https://vader-fr.fr/spip.php?article146</guid>
		<dc:date>2014-10-22T08:52:55Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Vader[FR]</dc:creator>



		<description>
&lt;p&gt;Ces deux rubriques fonctionnent exactement sur le m&#234;me principe et ont donc le m&#234;me squelette, &#224; l'exception d'un appel &#224; un sous-squelette qui contient un param&#232;tre de boucle SPIP diff&#233;rent. &lt;br class='autobr' /&gt;
Une &#034;barre de navigation&#034; liste les 3 articles de la rubrique, celui dont les donn&#233;es sont affich&#233;es &#233;tant sur fond blanc. &lt;br class='autobr' /&gt;
En dessous, un cadre gris affiche les donn&#233;es du premier article r&#233;dig&#233;, texte et logo. Le squelette de la rubrique appelle en fait le squelette article, lequel inclut celui de (&#8230;)&lt;/p&gt;


-
&lt;a href="https://vader-fr.fr/spip.php?rubrique31" rel="directory"&gt;Isabelle Palenc : artiste peintre sculpteur&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Ces deux rubriques fonctionnent exactement sur le m&#234;me principe et ont donc le m&#234;me squelette, &#224; l'exception d'un appel &#224; un sous-squelette qui contient un param&#232;tre de boucle SPIP diff&#233;rent.&lt;/p&gt;
&lt;p&gt;Une &#034;barre de navigation&#034; liste les 3 articles de la rubrique, celui dont les donn&#233;es sont affich&#233;es &#233;tant sur fond blanc.&lt;/p&gt;
&lt;p&gt;En dessous, un cadre gris affiche les donn&#233;es du premier article r&#233;dig&#233;, texte et logo.&lt;br class='autobr' /&gt;
Le squelette de la rubrique appelle en fait le squelette article, lequel inclut celui de la barre de navigation.&lt;/p&gt;
&lt;p&gt;Exemple pour la rubrique 2 (biographie) :&lt;/p&gt;
&lt;div class=&#034;onglets_bloc_initial&#034;&gt;&lt;div class=&#034;onglets_contenu&#034;&gt;&lt;h2 class=&#034;cs_onglet&#034;&gt;&lt;a href=&#034;#&#034;&gt;Squelette de la rubrique&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;
&lt;p&gt;Fichier de squelette &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;rubrique=2.html&lt;/code&gt; dans le r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;contenu&lt;/code&gt; du plugin Zpip.&lt;/p&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;[(#REM) RUBRIQUE 2 = biographie ] [(#REM)	MAIN NAVIGATION / NAVIGATION PRINCIPALE ] &lt;BOUCLE_contenu_rubrique(RUBRIQUES){id_rubrique}&gt; &lt;B_articles&gt; &lt;BOUCLE_articles(ARTICLES){id_rubrique} {par id_article}{lang} {pagination 1}&gt; #INCLURE{fond=contenu/article,id_article,env} &lt;/BOUCLE_articles&gt; &lt;/B_articles&gt;
&lt;/BOUCLE_contenu_rubrique&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ce squelette est extr&#234;mement simple puisqu'il s&#233;lectionne un et un seul (&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;{pagination 1}&lt;/code&gt;) article de la rubrique correspondant &#224; la langue choisie (filtre &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;{lang}&lt;/code&gt;), le tout tri&#233; par num&#233;ro d'article (&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;{par id_article}&lt;/code&gt;).&lt;br class='autobr' /&gt;
Cela aurait pu &#234;tre un tri sur le titre des articles, ou bien un article au hasard.&lt;/p&gt;
&lt;p&gt;Une fois l'article s&#233;lectionn&#233;, on appelle le squelette article avec le num&#233;ro l'article &#224; afficher.&lt;br class='autobr' /&gt;
SPIP s&#233;lectionnera automatiquement le squelette le plus appropri&#233; pour cet article.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&#034;onglets_contenu&#034;&gt;&lt;h2 class=&#034;cs_onglet&#034;&gt;&lt;a href=&#034;#&#034;&gt;Squelette article&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;
&lt;p&gt;Fichier de squelette &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;article=2.html&lt;/code&gt; dans le r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;contenu&lt;/code&gt; du plugin Zpip.&lt;/p&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;[(#REM) RUBRIQUE 2 = biographie ] [(#REM)	MAIN NAVIGATION / NAVIGATION PRINCIPALE ]
&lt;INCLURE{fond=inclure/barre-nav-bio,env}&gt;	&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Le squelette de l'article inclut celui de la barre de navigation. &lt;br class='autobr' /&gt;
De fait, la boucle contenue dans ce sous-squelette aurait pu &#234;tre incluse directement dans le squelette article, mais la conception d'origine de cette rubrique impliquait deux squelettes rubrique/article bien distincts, qui partageaient la m&#234;me boucle de barre de navigation, laquelle a donc &#233;t&#233; externalis&#233;e.&lt;/p&gt;
&lt;p&gt;Voir onglet suivant pour la barre de navigation.&lt;/p&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;&lt;BOUCLE_contenu_article(ARTICLES){id_article}&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Que ce soit dans la page d'affichage de l'article ou via l'appel depuis la page d'affichage de la rubrique, un num&#233;ro d'article est fourni, il n'y a donc pas besoin de filtre particulier.&lt;/p&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;&lt;div class=&#034;contenu-principal galeries&#034;&gt; &lt;div class=&#034;surlignable&#034;&gt; [&lt;div class=&#034;#EDIT{chapo} chapo&#034;&gt;(#CHAPO|image_reduire{500,0})&lt;/div&gt;] &lt;div id=&#034;bio&#034;&gt; [&lt;div id=&#034;bio_texte&#034; style=&#034;overflow-y:auto;&#034;&gt;(#TEXTE|image_reduire{500,0})&lt;/div&gt;] &lt;div id=&#034;bio_image&#034;&gt;[(#LOGO_ARTICLE_RUBRIQUE|image_reduire{275,0})]&lt;/div&gt; &lt;/div&gt; &lt;/div&gt; [&lt;p class=&#034;#EDIT{hyperlien} hyperlien&#034;&gt;&lt;:voir_en_ligne:&gt; : &lt;a href=&#034;(#URL_SITE)&#034; target=&#034;_blank&#034; class=&#034;spip_out&#034;&gt;[(#NOM_SITE|sinon{[(#URL_SITE|couper{80})]})]&lt;/a&gt;&lt;/p&gt;] [(#REM) Gestion du portfolio et des documents ]
[(#INCLURE{fond=inclure/documents}{id_article})] &lt;/div&gt; &lt;/BOUCLE_contenu_article&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;L'indentation permet de suivre la hi&#233;rarchie des blocs.&lt;br class='autobr' /&gt;
Le reste du squelette est assez classique.&lt;/p&gt;
&lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='#_foo'&gt;Style CSS associ&#233;&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&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;#bio, #peintures { position:absolute; left:0; top:55px; bottom:55px; right:55px; background-color:#999999;
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Pour le bloc principal, fond gris et positionnement de mani&#232;re &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;absolute&lt;/code&gt; = fix&#233; aux bords de son cadre conteneur (div de classe surlignable dans le div de classe galeries).&lt;br class='autobr' /&gt;
l'espace au dessus (55px) est d&#233;di&#233; &#224; l'affichage de la barre de navigation.&lt;/p&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;div.galeries { position:absolute; top:50px; bottom:0; left:0; right:5px; overflow-y:auto;
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;l'espace au dessus (50px) correspond &#224; l'ent&#234;te de la page.&lt;br class='autobr' /&gt;
le bloc de classe surlignable n'a pas de style CSS.&lt;/p&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;#diapo_image, #bio_texte, #peintures_image { position:absolute; left:25px; top:25px; bottom:25px;
}
#bio_texte { right:300px; }
#diapo_texte, #bio_texte, #peintures_contenu { overflow-y:auto;
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Le texte des articles de la rubrique biographie partage les m&#234;mes propri&#233;t&#233;s de positionnement et de taille que les images des blocs peintures et diapo, utilis&#233;s dans d'autres pages.&lt;br class='autobr' /&gt;
Ici, le bloc image &#233;tant de taille fixe (275px de large), c'est le cadre texte qui s'adaptera en &#233;tant fix&#233; &#224; 300 pixels du bord droite, laissant toujours la m&#234;me place libre pour le cadre image.&lt;br class='autobr' /&gt;
Les images &#233;tant redimensionn&#233;es automatiquement par un script JavaScript, seuls les blocs de texte disposeront d'un ascenseur vertical si besoin est (&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;overflow-y:auto;&lt;/code&gt;).&lt;/p&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;#bio_image{ width:275px;
} #diapo_image img, #bio_image img, #peintures_image img { max-height:100%; max-width:100%;
} #diapo_texte, #bio_image, #peintures_contenu { position:absolute; bottom:0; top:25px; right:5px; padding-right:5px;
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;L'image (logo) des articles de la rubrique biographie partage les m&#234;mes propri&#233;t&#233;s de positionnement et de taille que les textes des blocs peintures et diapo, utilis&#233;s dans d'autres pages.&lt;br class='autobr' /&gt;
Seule la taille fixe est particuli&#232;re au bloc image de la rubrique biographie.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#034;onglets_contenu&#034;&gt;&lt;h2 class=&#034;cs_onglet&#034;&gt;&lt;a href=&#034;#&#034;&gt;Squelette barre de navigation&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;
&lt;p&gt;Fichier de squelette &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;barre-nav-bio.html&lt;/code&gt; dans le r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;inclure&lt;/code&gt; du plugin Zpip.&lt;/p&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;&lt;div id=&#034;nav_bio&#034;&gt; &lt;B_sous_bio&gt; &lt;div class=&#034;menu-liste&#034;&gt; &lt;BOUCLE_sous_bio(ARTICLES) {id_rubrique=2} {par id_article}{lang}&gt; &lt;div class=&#034;menu-entree&#034;&gt; &lt;a href=&#034;#URL_ARTICLE&#034; [ class=&#034;(#EXPOSE)&#034;]&gt;[(#TITRE)]&lt;/a&gt; &lt;/div&gt; &lt;/BOUCLE_sous_bio&gt; &lt;/div&gt; &lt;/B_sous_bio&gt;
&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Cette boucle va simplement chercher les articles de la rubrique n&#176;2 (biographie) afin de lister leurs titres.&lt;br class='autobr' /&gt;
Le mot cl&#233; SPIP &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;[ class=&#034;(#EXPOSE)&#034;]&lt;/code&gt; permet de d&#233;finir la classe CSS &#034;on&#034; sur le lien, si le contenu de l'article ou de la rubrique est &#034;expos&#233;&#034;, et donc affich&#233; dans la page.&lt;br class='autobr' /&gt;
Cela permettra d'appliquer le style CSS suivant :&lt;/p&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;#nav a.on, #nav_bio a.on, #nav_expo a.on { background-color:white;
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ce qui mettra une couleur de fond blanche sur le lien de l'article dans la barre de navigation si celui-ci est affich&#233;.&lt;/p&gt;
&lt;p&gt;Style CSS associ&#233; aux barres de navigation (biographie, expositions..)&lt;/p&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;#nav, #nav_bio, #nav_expo { margin: 0; overflow: hidden; border: 0px solid #000000; position:absolute; top:30px; height:50px; left:0px; right:0;
} #nav ul, #nav_bio ul, #nav_expo ul { margin: 0; padding: 0 0 0 0; list-style: none; line-height: normal;
} #nav li, #nav_bio li, #nav_expo li { display: inline; text-align: center;
} #nav a, #nav_bio a, #nav_expo a { display: block; height: 20px; text-decoration: none; text-align: center; font-size: 1em; font-weight: bold; color: black; font-family: EurocentricRegular,Arial,Helvetica,sans-serif;
} #nav .menu-liste, #nav_bio .menu-liste, #nav_expo .menu-liste { padding-left: 2%; padding-right: 2%;
} #nav .menu-entree, #nav_bio .menu-entree, #nav_expo .menu-entree { border: 1px solid black; float: left; padding: 5px; text-align: center; width: 22%; background-color:#999999;
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;En ce qui concerne la taille du bloc du lien d'un article dans la barre de navigation, la propri&#233;t&#233; partag&#233;e d&#233;finie ci-dessus est surcharg&#233;e et donc remplac&#233;e par celle d&#233;finie ci-dessous, car d&#233;finie apr&#232;s la pr&#233;c&#233;dente.&lt;/p&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;#nav_bio .menu-entree, #nav_expo .menu-entree { width:30%;
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Il y a &#233;galement des propri&#233;t&#233;s de couleur et de taille de police pour l'&#233;v&#232;nement &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;hover&lt;/code&gt;, correspondant au survol de la souris, et ce aussi bien pour les liens que pour les blocs.&lt;/p&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;#nav a:hover, #nav .active a, #nav .menu-entree.on a, #nav_bio a:hover, #nav_bio .active a, #nav_bio .menu-entree.on a, #nav_expo a:hover, #nav_expo .active a, #nav_expo .menu-entree.on a { color: #110404;
} #nav .menu-entree:hover, #nav_bio .menu-entree:hover, #nav_expo .menu-entree:hover { background-color:#DEDEDE; font-size:1em;
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;De m&#234;me pour les items de menu de la barre de navigation.&lt;/p&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;#nav .menu-entree .menu-liste, #nav .menu-entree .menu-liste a, #nav_bio .menu-entree .menu-liste, #nav_bio .menu-entree .menu-liste a, #nav_expo .menu-entree .menu-liste, #nav_expo .menu-entree .menu-liste a { display:inline; line-height:0; font-size:0px; height:0; padding-left:2px; padding-right:2px;
}
#nav .menu-entree:hover .menu-liste, #nav .menu-entree:hover .menu-liste a, #nav_bio .menu-entree:hover .menu-liste, #nav_bio .menu-entree:hover .menu-liste a, #nav_expo .menu-entree:hover .menu-liste, #nav_expo .menu-entree:hover .menu-liste a { font-size:0.825em; line-height:20px; height:20px;
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Script g&#233;n&#233;rique des diaporamas AJAX</title>
		<link>https://vader-fr.fr/spip.php?article144</link>
		<guid isPermaLink="true">https://vader-fr.fr/spip.php?article144</guid>
		<dc:date>2014-10-18T19:53:27Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Vader[FR]</dc:creator>


		<dc:subject>JavaScript</dc:subject>
		<dc:subject>PHP</dc:subject>
		<dc:subject>D&#233;veloppement web</dc:subject>
		<dc:subject>SPIP</dc:subject>

		<description>
&lt;p&gt;Ce script est le m&#234;me pour le diaporama de la page de garde et pour le diaporama de la galerie. &lt;br class='autobr' /&gt;
Il lit des param&#232;tres dans la page (num&#233;ro de rubrique &#224; parcourir, nombre de niveaux de sous-rubriques &#224; chercher, langue) et envoie la requ&#234;te au serveur, puis ins&#232;re dans la page l'image, le titre et le texte de chaque &#233;l&#233;ment du diaporama en l'adaptant &#224; la taille de la fen&#234;tre, avant de demander l'&#233;l&#233;ment suivant. &lt;br class='autobr' /&gt;
En effet, les &#233;l&#233;ments de ce diaporama sont des articles : le logo de (&#8230;)&lt;/p&gt;


-
&lt;a href="https://vader-fr.fr/spip.php?rubrique31" rel="directory"&gt;Isabelle Palenc : artiste peintre sculpteur&lt;/a&gt;

/ 
&lt;a href="https://vader-fr.fr/spip.php?mot1" rel="tag"&gt;JavaScript&lt;/a&gt;, 
&lt;a href="https://vader-fr.fr/spip.php?mot2" rel="tag"&gt;PHP&lt;/a&gt;, 
&lt;a href="https://vader-fr.fr/spip.php?mot9" rel="tag"&gt;D&#233;veloppement web&lt;/a&gt;, 
&lt;a href="https://vader-fr.fr/spip.php?mot10" rel="tag"&gt;SPIP&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Ce script est le m&#234;me pour le diaporama de la page de garde et pour le diaporama de la galerie.&lt;/p&gt;
&lt;p&gt;Il lit des param&#232;tres dans la page (num&#233;ro de &lt;strong&gt;rubrique&lt;/strong&gt; &#224; parcourir, nombre de niveaux de &lt;strong&gt;sous-rubriques&lt;/strong&gt; &#224; chercher, langue) et envoie la requ&#234;te au serveur, puis ins&#232;re dans la page l'image, le titre et le texte de chaque &#233;l&#233;ment du diaporama en l'adaptant &#224; la taille de la fen&#234;tre, avant de demander l'&#233;l&#233;ment suivant.&lt;/p&gt;
&lt;p&gt;En effet, les &#233;l&#233;ments de ce diaporama sont des articles :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; le logo de l'article est une image particuli&#232;re, que l'on peut ais&#233;ment diff&#233;rencier du texte, afin de lui accorder un traitement diff&#233;rent.&lt;/li&gt;&lt;li&gt; un article existe dans une certaine langue, ce qui permet d'afficher un diaporama diff&#233;rent selon la langue souhait&#233;e&lt;/li&gt;&lt;li&gt; un article avec texte, titre et logo est facile &#224; ajouter, modifier ou enlever dans l'espace priv&#233; de SPIP.&lt;/li&gt;&lt;/ul&gt;&lt;div class=&#034;onglets_bloc_initial&#034;&gt;&lt;div class=&#034;onglets_contenu&#034;&gt;&lt;h2 class=&#034;cs_onglet&#034;&gt;&lt;a href=&#034;#&#034;&gt;Lancement des fonctions JavaScript&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;
&lt;p&gt;Comme on peut le voir dans l'aper&#231;u Firebug de la &lt;a href='https://vader-fr.fr/spip.php?article143' class=&#034;spip_in&#034;&gt;structure de la page de garde&lt;/a&gt;, il y a dans chaque page, pour l'&#233;v&#232;nement &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;onLoad&lt;/code&gt; (= &#034;au chargement&#034;) de l'&#233;l&#233;ment HTML &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;body&lt;/code&gt;, appel &#224; une fonction unique et g&#233;n&#233;rique &#034;AuChargement&#034;.&lt;/p&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;function AuChargement(){ pisteIE(); cachejs(); setTimeout(&#034;charger_diapo()&#034;,1000); // 1 seconde traitercadres(); traiterimages();
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Cette fonction unique en invoque d'autres, qui, selon les &#233;l&#233;ments pr&#233;sents ou non dans la page, feront quelque chose :&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;pisteIE&lt;/code&gt; va, comme son nom l'indique, rediriger les utilisateurs du navigateur Internet Explorer vers une page d'avertissement, indiquant les d&#233;ficiences de Microsoft Internet Explorer quand aux &#233;l&#233;ments pourtant normalis&#233;s W3C de la page.
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Un lien &#034;continuer quand m&#234;me&#034; permet aux utilisateurs d'Internet Explorer de poursuivre la navigation, ils ont &#233;t&#233; pr&#233;venus.&lt;/li&gt;&lt;li&gt; Un syst&#232;me de cookie enregistre le fait que l'utilisateur est pr&#233;venu, cela &#233;vite de faire la redirection &#224; chaque ouverture de page.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;cachejs&lt;/code&gt; sert, comme son nom l'indique, &#224; cacher le message selon lequel JavaScript est d&#233;sactiv&#233; sur le navigateur.&lt;/li&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;setTimeout(&#034;charger_diapo()&#034;,1000);&lt;/code&gt; lance la fonction &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;charger_diapo()&lt;/code&gt; au bout d'une seconde.
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; C'est cette fonction qui ira chercher les param&#232;tres du diaporama dans la page et enverra la requ&#234;te au serveur pour le premier &#233;l&#233;ment.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;traitercadres&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;traiterimages&lt;/code&gt; vont redimensionner les cadres et images qui en ont besoin.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#034;onglets_contenu&#034;&gt;&lt;h2 class=&#034;cs_onglet&#034;&gt;&lt;a href=&#034;#&#034;&gt;Lancement du diaporama&lt;/a&gt;&lt;/h2&gt;&lt;div&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;function charger_diapo(){ if (this.document.getElementById('diapo')!=null){&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Cette fonction ne s'ex&#233;cutera que si un &#233;l&#233;ment &#034;diapo&#034; est pr&#233;sent dans la page&lt;/p&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; if (this.document.getElementById('nrubrique')!=null){ nrubrique=this.document.getElementById('nrubrique').value; }else{ nrubrique=0; }&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Pour chaque param&#232;tre du diaporama, on v&#233;rifie sa pr&#233;sence, et en cas d'absence on utilise une valeur par d&#233;faut&lt;/p&gt;
&lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='#_foo'&gt;Autres param&#232;tres&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&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; if (this.document.getElementById('mindepth')!=null){ mindepth=this.document.getElementById('mindepth').value; }else{ mindepth=0; } if (this.document.getElementById('maxdepth')!=null){ maxdepth=this.document.getElementById('maxdepth').value; }else{ maxdepth=1; } if (this.document.getElementById('lang')!=null){ lang=this.document.getElementById('lang').value; }else{ lang=&#034;fr&#034;; }&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Puis on initialise quelques valeurs avant d'appeler la fonction qui cr&#233;era et enverra la requ&#234;te.&lt;/p&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; var url_image=null; var texte_diapo=null; var titre_diapo=null; requete_requete_image_diapo('charger_diapo.php?id=0&amp;rub='+nrubrique+'&amp;min='+mindepth+'&amp;max='+maxdepth+'&amp;lang='+lang); }
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#034;onglets_contenu&#034;&gt;&lt;h2 class=&#034;cs_onglet&#034;&gt;&lt;a href=&#034;#&#034;&gt;Cr&#233;ation de la requ&#234;te XMLHTTP&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;
&lt;p&gt;Le script javaScript d&#233;fini quelque variables globales, que plusieurs fonctions utiliseront.&lt;/p&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;var diapo = 0;
var prochain=0;
var nrubrique=0;
var mindepth=0;
var maxdepth=1;
var delai=5000;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Avant de pouvoir cr&#233;er la requ&#234;te XMLHTTP, il faut un objet de type xmlhttprequest pour y mettre les param&#232;tres, l'envoyer au serveur et recevoir sa r&#233;ponse.&lt;br class='autobr' /&gt;
En fonction du navigateur, on utilisera plusieurs m&#233;thodes.&lt;/p&gt;
&lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='#_foo'&gt;Cr&#233;ation de l'objet xmlhttprequest&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&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;function get_requete_image_diapo(){ var requete_image_diapo = null; if (window.XMLHttpRequest){ // Firefox requete_image_diapo=new XMLHttpRequest(); }else if (window.ActiveXObject){ // IE try{ requete_image_diapo=new ActiveXObject(&#034;Msxml12.XMLHTTP&#034;); }catch(e){ try{ requete_image_diapo=new ActiveXObject(&#034;Microsoft.XMLHTTP&#034;); }catch(e1){ requete_image_diapo=null; } } }else{ // non support&#233; alert(&#034;Votre navigateur ne supporte pas les XMLHTTPRequest.&#034;); /* + redirection vers page navigs.html */ } return requete_image_diapo;
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;La fonction pr&#233;c&#233;dente, qui cr&#233;&#233; l'objet xmlhttprequest, est appel&#233;e par la fonction de cr&#233;ation et d'envoi de la requ&#234;te que voici :&lt;/p&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;function requete_requete_image_diapo(url){&lt;/code&gt;&lt;/pre&gt;&lt;/div&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;	requete_image_diapo=get_requete_image_diapo(); if (!requete_image_diapo){ alert(&#034;Votre navigateur ne peut cr&#233;er de requ&#234;te AJAX.&#034;); /* + redirectiuon vers page navigs.html */ return; }&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On r&#233;cup&#232;re l'objet xmlhttprequest, puis, si celui-ci n'a pu &#234;tre cr&#233;&#233; et que par cons&#233;quent la variable &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;requete_image_diapo&lt;/code&gt; n'existe pas - le &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;!&lt;/code&gt; signifiant la n&#233;gation - on affiche un message et l'on quitte la fonction.&lt;br class='autobr' /&gt;
Sinon, on poursuit&lt;/p&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;	//alert(&#034;envoi de la requete&#034;); requete_image_diapo.onreadystatechange=function(){traitementReponse_requete_image_diapo(requete_image_diapo)} requete_image_diapo.open(&#034;GET&#034;,url,true); requete_image_diapo.send(null);
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;requete_image_diapo.onreadystatechange=&lt;code&gt; d&#233;finit la fonction &lt;code&gt;function(){ ... }&lt;/code&gt; de traitement de la r&#233;ponse, quand la requ&#234;te aura &#034;chang&#233; d'&#233;tat&#034;.&lt;br class='autobr' /&gt;
Puis on ouvre l'url du script du serveur auquel il faut envoyer la requ&#234;te, et qui la traitera pour envoyer la r&#233;ponse selon les param&#232;tres indiqu&#233;s, et on y envoie la requ&#234;te.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&#034;onglets_contenu&#034;&gt;&lt;h2 class=&#034;cs_onglet&#034;&gt;&lt;a href=&#034;#&#034;&gt;Modification de la page affich&#233;e&lt;/a&gt;&lt;/h2&gt;&lt;div&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;function traitementReponse_requete_image_diapo(requete_image_diapo){ var contenu; var erreur=0; if (requete_image_diapo.readyState==4){&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Si la requ&#234;te est dans l'&#233;tat &#034;4&#034;, c'est &#224; dire que l'on a re&#231;u la r&#233;ponse du serveur,&lt;/p&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; //alert(&#034;reception de la reponse : traitement&#034;); contenu=requete_image_diapo.responseXML;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On r&#233;cup&#232;re le document XML constituant la r&#233;ponse du serveur.&lt;/p&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; if (contenu.getElementsByTagName(&#034;image&#034;)[0].firstChild.nodeValue!=null){ url_image=contenu.getElementsByTagName(&#034;image&#034;)[0].firstChild.nodeValue; }else{ erreur=1; }&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On v&#233;rifie la pr&#233;sence de diff&#233;rents &#233;l&#233;ments de r&#233;ponse, en pr&#233;parant des valeurs par d&#233;faut si besoin.&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;contenu&lt;/code&gt; est le document XML de r&#233;ponse. Celui-ci est organis&#233; selon une arborescence de balises pour les divers &#233;l&#233;ments et leurs valeurs.&lt;/li&gt;&lt;li&gt; on utilise la fonction &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;getElementsByTagName&lt;/code&gt; pour adresser ces balises par leur nom
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; cette fonction renvoie un tableau de balises correspondantes, dont on s'int&#233;resse au premier &#233;l&#233;ment, &#224; la case 0, qui est la premi&#232;re case d'un tableau javaScript.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; Une fois r&#233;cup&#233;r&#233; la balise souhait&#233;e, on r&#233;cup&#232;re la valeur du n&#339;ud (&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;nodeValue&lt;/code&gt;).&lt;/li&gt;&lt;/ul&gt;&lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='#_foo'&gt;Autres &#233;l&#233;ments&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&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; if (contenu.getElementsByTagName(&#034;url_article&#034;)[0].firstChild.nodeValue!=null){ url_article=contenu.getElementsByTagName(&#034;url_article&#034;)[0].firstChild.nodeValue; }else{ erreur=1; } if (contenu.getElementsByTagName(&#034;titre&#034;)[0].firstChild!=null){ if (contenu.getElementsByTagName(&#034;titre&#034;)[0].firstChild.nodeValue!=null){ titre_diapo=contenu.getElementsByTagName(&#034;titre&#034;)[0].firstChild.nodeValue; }else{ erreur=1; } }else{ titre_diapo=&#034;&#034;; } //alert(&#034;titre=&#034;+contenu.getElementsByTagName(&#034;titre&#034;)[0].textContent); // y'a aussi data, wholeText...nodeValue... if (contenu.getElementsByTagName(&#034;texte&#034;)[0].firstChild!=null){ if (contenu.getElementsByTagName(&#034;texte&#034;)[0].firstChild.nodeValue!=null){ texte_diapo=contenu.getElementsByTagName(&#034;texte&#034;)[0].firstChild.nodeValue; if ((texte_diapo==null)||(texte_diapo==&#034;&#034;)){ texte_diapo=&#034;Sans titre&#034;; } }else{ texte_diapo=&#034;&#034;; } }else{ texte_diapo=&#034;&#034;; }&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;De m&#234;me, on r&#233;cup&#232;re plusieurs param&#232;tres toujours pr&#233;sents, dont la prochaine image &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;preload&lt;/code&gt; que l'on va commencer &#224; charger comme arri&#232;re plan &#224; taille nulle pour acc&#233;l&#233;rer son chargement lorsque ce sera son tour.&lt;/p&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; prochain=contenu.getElementsByTagName(&#034;prochain&#034;)[0].firstChild.nodeValue; // delai=contenu.getElementsByTagName(&#034;delai&#034;)[0].firstChild.nodeValue; preload=contenu.getElementsByTagName(&#034;preload&#034;)[0].firstChild.nodeValue; //alert(&#034;texte=&#034;+contenu.getElementsByTagName(&#034;texte_diapo&#034;)[0].firstChild.nodeValue);&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Pour comprendre &#224; quoi correspondent ces &#233;l&#233;ments, voir l'onglet d&#233;taillant le script PHP.&lt;/p&gt;
&lt;p&gt;Et si tout va bien (variable &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;erreur&lt;/code&gt; toujours &#224; z&#233;ro)&lt;/p&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;	if (erreur==0){	&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On essaie de r&#233;cup&#233;rer le bloc &#034;image&#034; du diaporama afin de pouvoir y int&#233;grer l'image indiqu&#233;e dans le document XML.&lt;br class='autobr' /&gt;
Dans la m&#234;me structure conditionnelle, l'on s'assure qu'il y a bien une image &#224; y int&#233;grer (l'url de l'image fournie dans la r&#233;ponse XML est non nulle).&lt;/p&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; if ((this.document.getElementById('diapo_image')!=null)&amp;&amp;(url_image!=&#034;&#034;)){ //alert (&#034;on a le div image&#034;);&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Si le bloc image existe, on le r&#233;f&#233;rence afin de pouvoir le modifier, en utilisant la fonction &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;getElementById&lt;/code&gt; qui renvoie un &#233;l&#233;ment unique, puis on y int&#232;gre un lien vers l'article sous la forme d'une image qui est son logo avec la valeur &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;innerHTML&lt;/code&gt; de l'&#233;l&#233;ment, qui correspond au code HTML que l'&#233;l&#233;ment contient.&lt;/p&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; var div_image=this.document.getElementById('diapo_image'); // le div div_image.innerHTML=&#034;&lt;a href=\&#034;&#034;+url_article+&#034;\&#034;&gt;&lt;img src=\&#034;&#034;+url_image+&#034;\&#034; style=\&#034;margin-left:0px;margin-top:0px;\&#034;&gt;&lt;/a&gt;&#034;;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;L'image du diaporama &#233;tant dans son bloc, il est peut &#234;tre utile &#224; pr&#233;sent de la redimensionner afin de l'adapter aux dimensions dudit bloc.&lt;/p&gt;
&lt;p&gt;On r&#233;cup&#232;re donc les dimensions du bloc, par &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;offsetHeight&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;offsetWidth&lt;/code&gt;, puis les dimensions r&#233;elles de l'image, par les valeurs &#034;hauteur&#034; et &#034;largeur&#034; fournies dans la r&#233;ponse (voir script PHP).&lt;/p&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; var h_div=this.document.getElementById('diapo_image').offsetHeight; var l_div=this.document.getElementById('diapo_image').offsetWidth; var h_img=parseFloat(contenu.getElementsByTagName(&#034;hauteur&#034;)[0].firstChild.nodeValue); var l_img=parseFloat(contenu.getElementsByTagName(&#034;largeur&#034;)[0].firstChild.nodeValue); //alert(&#034;traitement d'une image de &#034;+h_img+&#034; par &#034;+l_img);&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Selon la diff&#233;rence de dimension entre le bloc et l'image, il faudra la r&#233;duire prioritairement en largeur, en hauteur, ou les deux, et si l'image n'est pas trop grande, on cherchera &#224; la centrer.&lt;/p&gt;
&lt;p&gt;Le reste du script de traitement devrait &#234;tre ais&#233;ment compr&#233;hensible, d'autant que les commentaires permettent de suivre les conditions v&#233;rifi&#233;es et le traitement effectu&#233;.&lt;br class='autobr' /&gt;
Le principe reste toujours le m&#234;me :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; si une dimension de l'image est plus grande que celle du bloc, alors
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; calculer la proportion entre les deux afin de pouvoir r&#233;duire l'image&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; une fois la bonne proportion de r&#233;duction trouv&#233;e, calculer les marges entre les dimensions du bloc et celles de l'image r&#233;duite, pour centrer l'image.&lt;/li&gt;&lt;/ul&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; if (l_img&gt;l_div){ var reduction=l_img/l_div; // la proportion de r&#233;duction, qui sera la meme en hauteur et largeur // si h_img/reduction&gt;h_div alors if ((h_img/reduction)&gt;h_div){ // image plus large et en r&#233;duite, plus haute que le div // image plus HAUTE que large // r&#233;duction_h = h_img/h_div var reduction_h=h_img/h_div; // appliquer reduction_h en hauteur et largeur var nh=h_img/reduction_h; var nl=l_img/reduction_h; // pour &#234;tre au milieu&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Une fois l'image r&#233;duite, on calcule la marge, puis on applique r&#233;duction et marge de centrage.&lt;br class='autobr' /&gt;
De m&#234;me que pour le bloc diapo, on utilise la fonction &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;getElementById&lt;/code&gt; pour r&#233;f&#233;rencer le bloc, puis, comme pour la r&#233;ponse XML, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;getElementsByTagName&lt;/code&gt; pour r&#233;cup&#233;rer le tableau des images (balise &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;img ...&gt;&lt;/code&gt; contenues, la premi&#232;re (et seule) &#233;tant &#224; la case 0.&lt;br class='autobr' /&gt;
Puis l'on d&#233;finit les attributs HTML de cette balise &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;img ...&gt;&lt;/code&gt; pour retailler l'image, et lui ajouter un style personnalis&#233; contenant la marge de centrage, ainsi que la prochaine image &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;preload&lt;/code&gt; comme arri&#232;re-plan de taille nulle pour acc&#233;l&#233;rer son chargement lorsque ce sera son tour.&lt;/p&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; var margel=(l_div-nl)/2; // si la marge est &gt; &#224; x px, calculer la diff&#233;rence et r&#233;duire div image pour agrandir div texte image=this.document.getElementById('diapo_image').getElementsByTagName('img')[0]; image.setAttribute(&#034;height&#034;,nh); image.setAttribute(&#034;width&#034;,nl); image.setAttribute(&#034;style&#034;,&#034;margin-left:&#034;+margel+&#034;px; background-image:url(\&#034;&#034;+preload+&#034;\&#034;); background-size: 0px 0px;&#034;);&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='#_foo'&gt;Autres cas&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&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; // sinon }else{ // image plus large mais pas plus haute que le div // image plus LARGE que haute // appliquer r&#233;duction en largeur et hauteur var nh=h_img/reduction; var nl=l_img/reduction; // pour &#234;tre au milieu, il faut que margeh=()h_div-nh/2 var margeh=(h_div-nh)/2; image=this.document.getElementById('diapo_image').getElementsByTagName('img')[0]; image.setAttribute(&#034;height&#034;,nh); image.setAttribute(&#034;width&#034;,nl); image.setAttribute(&#034;style&#034;,&#034;margin-top:&#034;+margeh+&#034;px; background-image:url(\&#034;&#034;+preload+&#034;\&#034;); background-size: 0px 0px;&#034;); //finsi } // fins }else{ // image pas plus large que le div if (h_img&gt;h_div){ // div assez large mais pas assez haut // r&#233;duction_h = h_img/h_div var reduction_h=h_img/h_div; // appliquer reduction_h en hauteur et largeur var nh=h_img/reduction_h; var nl=l_img/reduction_h; // pour &#234;tre au milieu, il faut que margel=()545-nl/2 var margel=(l_div-nl)/2; image=this.document.getElementById('diapo_image').getElementsByTagName('img')[0]; image.setAttribute(&#034;style&#034;,&#034;margin-left:&#034;+margel+&#034;px; background-image:url(\&#034;&#034;+preload+&#034;\&#034;); background-size: 0px 0px;&#034;); image.setAttribute(&#034;height&#034;,nh); image.setAttribute(&#034;width&#034;,nl); }else{ // image pas trop grande // mais cadre peut-&#234;tre trop grand var margeh=(h_div-h_img)/2; var margel=(l_div-l_img)/2; image=this.document.getElementById('diapo_image').getElementsByTagName('img')[0]; image.setAttribute(&#034;style&#034;,&#034;margin-left:&#034;+margel+&#034;px;margin-top:&#034;+margeh+&#034;px; background-image:url(\&#034;&#034;+preload+&#034;\&#034;); background-size: 0px 0px;&#034;); } } }else{ //alert(&#034;div image non trouv&#233;&#034;); }&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Puis on fait la m&#234;me chose pour le texte et le titre&lt;/p&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; if (this.document.getElementById('diapo_texte')!=null){ var div_texte=this.document.getElementById('diapo_texte'); // le div //alert (&#034;on a le div texte&#034;); div_texte.innerHTML=&#034;&lt;span class=\&#034;titre_diapo\&#034;&gt;&lt;a href=\&#034;&#034;+url_article+&#034;\&#034;&gt;&#034;+titre_diapo+&#034;&lt;/a&gt;&lt;/span&gt;&lt;p&gt;&lt;span class=\&#034;texte_diapo\&#034;&gt;&#034;+texte_diapo+&#034;&lt;/span&gt;&lt;/p&gt;&#034;; }else{ //alert(&#034;div texte non trouv&#233;&#034;); } }&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;...et on demande le prochain &#233;l&#233;ment, si bien s&#251;r cela a du sens.&lt;br class='autobr' /&gt;
Si le diaporama n'a aucun ou qu'un seul &#233;l&#233;ment, il n'est pas utile d'envoyer d'autre requ&#234;te, et le script du serveur indiquera que prochain vaut &#034;-1&#034;, soit une valeur non valide.&lt;/p&gt;
&lt;p&gt;la commande &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;setTimeout(&lt;/code&gt; permet de d&#233;finir un d&#233;lai avant de demander le prochain &#233;l&#233;ment.&lt;/p&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; diapo=prochain; if (prochain!=-1){ //	requete_requete_image_diapo(&#034;charger_diapo.php?id=&#034;+diapo+&#034;&amp;delai=&#034;+delai); setTimeout(&#034;requete_requete_image_diapo('charger_diapo.php?id='+diapo+'&amp;rub='+nrubrique+'&amp;min='+mindepth+'&amp;max='+maxdepth+'&amp;lang='+lang)&#034;,delai); } }
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#034;onglets_contenu&#034;&gt;&lt;h2 class=&#034;cs_onglet&#034;&gt;&lt;a href=&#034;#&#034;&gt;script PHP&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;
&lt;p&gt;Le script PHP &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;charger_diapo.php&lt;/code&gt;, situ&#233; &#224; la racine du serveur web, et appel&#233; comme URL par la fonction &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;charger_diapo&lt;/code&gt; et apr&#232;s chaque traitement de r&#233;ponse, va traiter la requ&#234;te xmlhttp et envoyer une r&#233;ponse au format XML.&lt;/p&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;&lt;?php
session_start();&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Dans la mesure o&#249; les scripts PHP de SPIP peuvent utiliser des variables de session pour stocker des param&#232;tres, on se connecte &#224; cette session afin de pouvoir r&#233;cup&#233;rer la langue choisie.&lt;/p&gt;
&lt;p&gt;On cr&#233;&#233; l'ent&#234;te de la r&#233;ponse avant qu'un autre script, de traitement des accents, ne s'en charge.&lt;br class='autobr' /&gt;
le script &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;accents.php&lt;/code&gt; contient plusieurs fonctions, dont une utilis&#233;e pour transformer les caract&#232;res accentu&#233;s contenus dans la base en leur &#233;quivalent en code HTML, permettant un affichage normal quel que soient les encodages de caract&#232;re du serveur et du navigateur.&lt;/p&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;header('content-Type:text/xml,charset=UTF-8');
require &#034;accents.php&#034;;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On se connecte &#224; la base de donn&#233;es.&lt;/p&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;mysql_connect('serveur','utilisateur','mot de passe','MYSQL'); mysql_select_db(&#034;nom de la base&#034;);&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On travaillera sur les tables des rubriques et des articles de SPIP, qui ont g&#233;n&#233;ralement un nom commen&#231;ant par &#034;spip_&#034;.&lt;/p&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;$tablerubriques=&#034;spip_rubriques&#034;;
$tablearticles=&#034;spip_articles&#034;;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;La requ&#234;te xmlhttp envoyant ses param&#232;tres dans l'url, par la m&#233;thode GET (voir &lt;a href='https://vader-fr.fr/spip.php?article63' class=&#034;spip_in&#034;&gt;article&lt;/a&gt; sur PHP), on r&#233;cup&#232;re les param&#232;tres par la variable globale &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;$_GET&lt;/code&gt;, qui est un tableau associatif (les colonnes sont identifi&#233;es par nom et non par num&#233;ro).&lt;/p&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;if (isset($_GET[&#034;id&#034;])){ $idd=$_GET[&#034;id&#034;];
}else{ $idd=0; /* id du diapo en cours, &#224; diviser par total de diapo et prendre le reste , ex si idd = 5 pour 3 photos existantes, alors charger photo 2 */
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='#_foo'&gt;Autres param&#232;tres&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&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;if (isset($_GET[&#034;delai&#034;])){ $delai=$_GET[&#034;delai&#034;]; //echo &#034;delai de $delai secondes&lt;br&gt;&#034;;
}else{ $delai=0;
} if (isset($_GET[&#034;rub&#034;])){ $id_rubrique_diapo=$_GET[&#034;rub&#034;];
}else{ $id_rubrique_diapo=0; } if (isset($_GET[&#034;min&#034;])){ $min_depth=$_GET[&#034;min&#034;];
}else{ $min_depth=0; } if (isset($_GET[&#034;max&#034;])){ $max_depth=$_GET[&#034;max&#034;];
}else{ $max_depth=1; } if (isset($_GET[&#034;lang&#034;])){ $_SESSION[&#034;lang&#034;]=$_GET[&#034;lang&#034;];
}else{ if (isset($_SESSION[&#034;languser&#034;])){ $_SESSION[&#034;lang&#034;]=$_SESSION[&#034;languser&#034;]; } if (!isset($_SESSION[&#034;lang&#034;])){ $_SESSION[&#034;lang&#034;]=&#034;fr&#034;; }
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Pour la langue, on essaie d'abord de la r&#233;cup&#233;rer par le param&#232;tre fourni lors de la requ&#234;te et le stocker dans la variable de session &#034;lang&#034;, avant de pendre la variable de session &#034;languser&#034; si elle est d&#233;finie, et enfin, si la variable de session &#034;lang&#034; n'est toujours pas d&#233;finie, on prend par d&#233;faut langue fran&#231;aise.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Une fonction de parcourt de rubrique et sous-rubrique est d&#233;finie, ce qui permet de faire du parcours r&#233;cursif, lorsque la fonction s'appelle elle-m&#234;me.&lt;br class='autobr' /&gt;
La fonction renverra tous les identifiants de sous-rubriques dans lesquelles on est susceptible de trouver des &#233;l&#233;ments de diaporama.&lt;/p&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;function parcourt_rubrik($cur_rubrik,$curdepth,$maxdepth,$mindepth) {&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ces deux param&#232;tres ne pouvant &#234;tre pass&#233;s d'un niveau &#224; l'autre de la boucle r&#233;cursive sans rendre la fonction complexe, on les red&#233;finit localement &#224; chaque niveau.&lt;/p&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;	$tablerubriques=&#034;spip_rubriques&#034;; $tablearticles=&#034;spip_articles&#034;;&lt;/code&gt;&lt;/pre&gt;&lt;/div&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;	$curdepth.=$curdepth+1; $rubs=array(); // le tableau qu'on renverra, contenant dans la case 0 sa taille $reksrub=&#034;select id_rubrique from &#034;.$tablerubriques.&#034; where id_parent=$cur_rubrik&#034;; $resrub=mysql_query($reksrub); while ($rowrub=mysql_fetch_array($resrub,MYSQL_ASSOC)){ $ssrub=$rowrub[&#034;id_rubrique&#034;]; if ($curdepth&gt;=$mindepth){ $rubs[]=$ssrub; } if ($curdepth&lt;$maxdepth){ $rubs=array_merge($rubs,parcourt_rubrik($ssrub,$curdepth,$maxdepth,$mindepth)); } } return $rubs;
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On cr&#233;&#233; donc la liste des rubriques en appelant la fonction r&#233;cursive, en partant de la rubrique fournie en param&#232;tre par la requ&#234;te xmlhttp.&lt;/p&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;$liste_rubriques=parcourt_rubrik($id_rubrique_diapo,$min_depth,$max_depth,$min_depth);&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ici, on construit un morceau de la requ&#234;te SQL, &#224; savoir une partie de la clause conditionnelle WHERE, en ajoutant &#224; un code de base des morceaux de code SQL&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;&#231;a tombe bien, j'avais justement besoin d'exemple de ce genre de m&#233;thode (&#8230;)&#034; id=&#034;nh1&#034;&gt;1&lt;/a&gt;]&lt;/span&gt;&lt;br class='autobr' /&gt;
On utilise une boucle while (tant que) pour parcourir un tableau dont la taille est variable, en s'arr&#234;tant lorsque l'index atteint le nombre de case contenues dans le tableau, et en incr&#233;mentant l'index au fur et &#224; mesure.&lt;/p&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;$liste_rubrik=&#034;(id_rubrique=$id_rubrique_diapo&#034;;
$irub=0; while ($irub&lt;count($liste_rubriques)){ $liste_rubrik.=&#034; or id_rubrique=$liste_rubriques[$irub]&#034;; $irub++;
} $liste_rubrik.=&#034;)&#034;;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Une fois que la partie &#034;liste des rubriques parentes&#034; de la requ&#234;te des articles que l'on va s&#233;lectionner est cr&#233;&#233;e, on l'utilise d'abord dans une requ&#234;te pour compter les &#233;l&#233;ments, puis ensuite dans la requ&#234;te de r&#233;cup&#233;ration.&lt;/p&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;/* requete pour conna&#238;tre le nombre total de photos pouvant &#234;tre affich&#233;es */ $rek_compt=&#034;select count(*) as total from &#034;.$tablearticles.&#034; where $liste_rubrik and statut='publie' and lang='&#034;.$_SESSION[&#034;lang&#034;].&#034;'&#034;; // pas de order by pour compter
$res_compt=mysql_query($rek_compt);
$row_total=mysql_fetch_array($res_compt,MYSQL_ASSOC);
$total=$row_total[&#034;total&#034;];&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; clause SELECT :
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; On compte &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;count&lt;/code&gt;&lt;/li&gt;&lt;li&gt; les lignes dans leur globalit&#233; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;count(*)&lt;/code&gt;&lt;/li&gt;&lt;li&gt; dont on stockera le compte dans une colonne nomm&#233;e &#034;total&#034; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;as total&lt;/code&gt;, plus simple pour la r&#233;f&#233;rencer,&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; clause FROM
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; depuis la table des articles, dont le nom, susceptible de varier, a &#233;t&#233; mis dans la variable &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;tablearticles&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; clause WHERE
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; pour les articles faisant partie de la liste des rubriques&lt;/li&gt;&lt;li&gt; et &#233;tant publi&#233;s&lt;/li&gt;&lt;li&gt; et dont la langue est celle d&#233;termin&#233;e plus t&#244;t et stock&#233;e dans la variable de session.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&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;if ($total&gt;0){&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Si il y a effectivement plusieurs articles publi&#233;s dans les rubriques cibl&#233;es et ce dans la langue choisie, alors on va r&#233;cup&#233;rer les deux premiers articles selon un tri d&#233;finit plus bas.&lt;br class='autobr' /&gt;
Le script JavaScript, fournissant toujours un param&#232;tre de num&#233;ro de diapo &#224; charger dans la requ&#234;te xmlhttp, on se base sur ce param&#232;tre pour d&#233;marrer la s&#233;lection dans la liste des articles disponibles.&lt;/p&gt;
&lt;p&gt;Quand au prochain &#233;l&#233;ment de diaporama &#224; charger, c'est soit l'article suivant dans la liste - si l'article en cours n'est pas le dernier de la liste - soit le premier, &#224; savoir le num&#233;ro 0 de la liste (tableau des r&#233;ponses).&lt;/p&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;	$debut=$idd; // 0 par defaut $par_page=1; if (($idd+1)&lt;$total){ $prochain=$idd+1; }else{ $prochain=0; }&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;La requ&#234;te de s&#233;lection est la m&#234;me que celle de comptage, logique puisque l'on travaille sur les m&#234;mes &#233;l&#233;ments.&lt;br class='autobr' /&gt;
Seules les clauses SELECT - car on ne compte pas cette fois - et la clause de tri ORDER - qui &#233;tait inutile dans une requ&#234;te de comptage - vont changer&lt;br class='autobr' /&gt;
On ajoute aussi une clause LIMIT qui restreint le nombre de lignes de r&#233;sultat que l'on va finalement traiter.&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; clause SELECT : on s&#233;lectionne tous les champs &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;*&lt;/code&gt;&lt;/li&gt;&lt;li&gt; clause ORDER BY par date d&#233;croissante &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;DESC&lt;/code&gt;, et donc par article le plus r&#233;cent.&lt;/li&gt;&lt;li&gt; on limite les lignes de r&#233;sultat &#224; 1, comme vu plus haut &lt;code class='spip_code spip_code_inline' dir='ltr'&gt; $par_page=1;&lt;/code&gt;, et on d&#233;marre &#224; la ligne num&#233;ro &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;$debut&lt;/code&gt;, &#224; savoir &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;$idd&lt;/code&gt;, le param&#232;tre de num&#233;ro de diapo fourni &#224; l'appel du script par la requ&#234;te xmlhttp.&lt;/li&gt;&lt;/ul&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;	$rek_sel=&#034;select * from &#034;.$tablearticles.&#034; where $liste_rubrik and statut='publie' and lang='&#034;.$_SESSION[&#034;lang&#034;].&#034;' order by 'date' DESC limit $debut,$par_page &#034;; // order by date DESC $res_sel=mysql_query($rek_sel);&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&#201;tant donn&#233; que l'on traite des articles, et que l'image cherch&#233;e est un logo, il est bon de savoir que sous SPIP, les logos ont un nom particulier :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; type de l'&#233;l&#233;ment SPIP &lt;strong&gt;art&lt;/strong&gt;icles, &lt;strong&gt;rub&lt;/strong&gt;riques, &lt;strong&gt;site&lt;/strong&gt;s&lt;/li&gt;&lt;li&gt; &lt;strong&gt;on&lt;/strong&gt;&lt;/li&gt;&lt;li&gt; num&#233;ro dudit &#233;l&#233;ment&lt;/li&gt;&lt;li&gt; les logos &#233;tant stock&#233;s &#224; la racine du dossier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;IMG&lt;/code&gt;, peu importe leur extension (jpg, png, gif...)&lt;/li&gt;&lt;/ul&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;	$imagebase=&#034;IMG/arton&#034;;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Pour chaque ligne de r&#233;sultat renvoy&#233;e (en fait il n'y en a qu'une)&lt;/p&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;	while ($row_sel=mysql_fetch_array($res_sel,MYSQL_ASSOC)){&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On r&#233;cup&#232;re la valeur de chaque champ dont on a besoin.&lt;br class='autobr' /&gt;
Les champs de type texte (titre et texte) passent par plusieurs filtres pour traiter des caract&#232;res sp&#233;ciaux qui risqueraient de faire planter le document XML r&#233;ponse.&lt;/p&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; $id=$row_sel[&#034;id_article&#034;]; $titre=htmlentities($row_sel[&#034;titre&#034;]); $titre=remet_accents($titre); $titre=str_replace(&#034;'&#034;,&#034;'&#034;,$titre); $titre=str_replace('&#034;','&#034;',$titre); $titre=str_replace(&#034;&#176;&#034;,&#034;&amp;deg;&#034;,$titre); $texte=htmlentities($row_sel[&#034;texte&#034;]); $texte=remet_accents($texte); $texte=str_replace(&#034;'&#034;,&#034;'&#034;,$texte); $texte=str_replace('&#034;','&#034;',$texte); $texte=str_replace(&#034;&#176;&#034;,&#034;&amp;deg;&#034;,$texte); $texte=nl2br($texte); $urlarticle=&#034;spip.php?article$id&#034;;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Pour l'image, on recherche si le fichier &lt;i&gt;artonXX&lt;/i&gt; existe pour plusieurs extensions possibles.&lt;br class='autobr' /&gt;
Si un fichier portant ce nom existe, alors on a trouv&#233;.&lt;/p&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; // image = IMG/arton[+id article].jpg ou autre // =========== existence du fichier jpg, png ou gif ============== $extensions=array(&#034;jpg&#034;,&#034;jpeg&#034;,&#034;JPG&#034;,&#034;png&#034;,&#034;PNG&#034;,&#034;gif&#034;,&#034;GIF&#034;); $i=0; $trouve=false; $image=&#034;&#034;; while (($i&lt;sizeof($extensions))&amp;&amp;($trouve==false)){ $image_test=$imagebase.$id.&#034;.&#034;.$extensions[$i]; //echo &#034;on teste $image_test&lt;br&gt;&#034;; if (file_exists($image_test)){ //echo &#034;$image_test existe&lt;br&gt;&#034;; $image=$image_test; $trouve=true; }else{ //echo &#034;$image_test n'existe pas&lt;br&gt;&#034;; } $i++; } // image par d&#233;faut if (!$trouve){ $image=&#034;interrogation.png&#034;; }&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Si aucun fichier image de logo correspondant &#224; l'article n'est trouv&#233;, on prend une image par d&#233;faut.&lt;br class='autobr' /&gt;
Puis on r&#233;cup&#232;re les dimensions de l'image contenue dans le fichier avec une fonction PHP.&lt;/p&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; $infos_image = @getImageSize($image); // info sur la dimension de l'image // '@' est plac&#233; devant la fonction getImageSize() pour empecher l'affichage des erreurs si l'image est absente. //dimension $largeur = $infos_image[0]; // largeur de l'image $hauteur = $infos_image[1]; // hauteur de l'image&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ces informations de taille seront envoy&#233;es dans la r&#233;ponse et utilis&#233;es par le script pour redimensionner l'image si besoin est.&lt;/p&gt;
&lt;p&gt;Et on oublie pas de fermer la boucle de traitement de la ligne de r&#233;sultat des articles correspondants &#224; ce que l'on cherche.&lt;/p&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; }&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Puis on s&#233;lectionne l'image suivante afin de pouvoir commencer &#224; la charger plus t&#244;t, de sorte qu'au tour d'apr&#232;s, l'image de la diaporama suivante se chargera plus vite.&lt;br class='autobr' /&gt;
La requ&#234;te est la m&#234;me que la pr&#233;c&#233;dente, mais on ne prendra pas la m&#234;me ligne de r&#233;sultat.&lt;br class='autobr' /&gt;
Le traitement pour trouver le fichier image sera le m&#234;me.&lt;/p&gt;
&lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='#_foo'&gt;Image suivante&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&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;	$rek_presel=&#034;select * from &#034;.$tablearticles.&#034; where $liste_rubrik and statut='publie' and lang='&#034;.$_SESSION[&#034;lang&#034;].&#034;' order by 'date' DESC limit $prochain,$par_page &#034;; // order by date DESC $res_presel=mysql_query($rek_presel); while ($row_presel=mysql_fetch_array($res_presel,MYSQL_ASSOC)){ $extensions=array(&#034;jpg&#034;,&#034;jpeg&#034;,&#034;JPG&#034;,&#034;png&#034;,&#034;PNG&#034;,&#034;gif&#034;,&#034;GIF&#034;); $i=0; $trouve=false; $pre_image=&#034;&#034;; while (($i&lt;sizeof($extensions))&amp;&amp;($trouve==false)){ $image_test=$imagebase.$id.&#034;.&#034;.$extensions[$i]; //echo &#034;on teste $image_test&lt;br&gt;&#034;; if (file_exists($image_test)){ //echo &#034;$image_test existe&lt;br&gt;&#034;; $pre_image=$image_test; $trouve=true; }else{ //echo &#034;$image_test n'existe pas&lt;br&gt;&#034;; } $i++; } // image par d&#233;faut if (!$trouve){ $pre_image=&#034;interrogation.png&#034;; } } //echo &#034;image trouvee : $image&lt;br&gt;&#034;;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Si en revanche il n'y a aucun article correspondant &#224; ce que l'on cherche&lt;/p&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;}else{ $image=&#034;interrogation.png&#034;; $texte=&#034;\&#034;\&#034;&#034;; $largeur=0; $hauteur=0; $delai=0; $pre_image=&#034;\&#034;\&#034;&#034;; $urlarticle=&#034;#&#034;; // page actuelle $prochain=-1; $titre=&#034;Aucune image disponible.&#034;; // changer le texte selon la langue if ($_SESSION[&#034;lang&#034;]==&#034;fr&#034;){ $titre=&#034;Aucune image disponible.&#034;; // changer le texte selon la langue } if ($_SESSION[&#034;lang&#034;]==&#034;en&#034;){ $titre=&#034;No article available for this language : english.&#034;; // changer le texte selon la langue } if ($_SESSION[&#034;lang&#034;]==&#034;de&#034;){ } $texte=$titre; // $texte=htmlentities($texte); // $texte=remet_accents($texte);
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Puis il est temps de cr&#233;er le document XML qui servira de r&#233;ponse.&lt;br class='autobr' /&gt;
Dans Firebug, il est possible de voir, dans l'onglet r&#233;seau, les requ&#234;tes avec leurs param&#232;tres, et les r&#233;ponses associ&#233;es en XML.&lt;/p&gt;
&lt;p&gt;On cr&#233;e un objet de type DOMDocument, puis on y ajoute les &#233;l&#233;ments et sous-&#233;l&#233;ments, en commen&#231;ant par la racine du document.&lt;/p&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;// r&#233;ponse du serveur = contenu de l'XmlHttpResponse
$doc=new DOMDocument(&#034;1.0&#034;,&#034;utf-8&#034;);
$racine=$doc-&gt;createElement('root');
$doc-&gt;appendChild($racine);
$url_image=$doc-&gt;createElement('image',$image);
$racine-&gt;appendChild($url_image);
$lien=$doc-&gt;createElement('url_article',$urlarticle);
$racine-&gt;appendChild($lien);
$titre_diapo=$doc-&gt;createElement('titre',$titre);
$racine-&gt;appendChild($titre_diapo);
$texte_diapo=$doc-&gt;createElement('texte',$texte);
$racine-&gt;appendChild($texte_diapo);
$info=$doc-&gt;createElement('largeur',$largeur);
$racine-&gt;appendChild($info);
$info2=$doc-&gt;createElement('hauteur',$hauteur);
$racine-&gt;appendChild($info2);
$tempo=$doc-&gt;createElement('delai',$delai);
$racine-&gt;appendChild($tempo);
$next=$doc-&gt;createElement('prochain',$prochain);
$racine-&gt;appendChild($next);
$pre=$doc-&gt;createElement('preload',$pre_image);
$racine-&gt;appendChild($pre);
$debug=$doc-&gt;createElement('debug',&#034;$debugmsg&#034;);
$racine-&gt;appendChild($debug);&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Et pour finir, on envoie le document par un simple &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;echo&lt;/code&gt; du texte XML renvoy&#233; par la fonction &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;saveXML&lt;/code&gt; sur l'objet.&lt;/p&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;echo $doc-&gt;saveXML();
?&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#034;nb1&#034;&gt;
&lt;p&gt;&lt;span class=&#034;csfoo htmla&#034;&gt;&lt;/span&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;span class=&#034;csfoo htmlb&#034;&gt;&lt;/span&gt;&#231;a tombe bien, j'avais justement besoin d'exemple de ce genre de m&#233;thode pour un autre article&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Page de garde et structure g&#233;n&#233;rale</title>
		<link>https://vader-fr.fr/spip.php?article143</link>
		<guid isPermaLink="true">https://vader-fr.fr/spip.php?article143</guid>
		<dc:date>2014-10-18T14:40:37Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Vader[FR]</dc:creator>


		<dc:subject>HTML</dc:subject>
		<dc:subject>D&#233;veloppement web</dc:subject>
		<dc:subject>SPIP</dc:subject>
		<dc:subject>CSS</dc:subject>

		<description>
&lt;p&gt;Page de garde &lt;br class='autobr' /&gt;
La toute premi&#232;re page (http://isabellepalenc.com/) est une simple page avec fond gris&#233; et 3 liens de langue. Pour l'instant, seul la langue fran&#231;aise est disponible car les articles n'ont pas encore &#233;t&#233; traduits. &lt;br class='autobr' /&gt;
Le lien de langue m&#232;ne ensuite &#224; la rubrique biographie (http://isabellepalenc.com/spip.php?rubrique2). &lt;br class='autobr' /&gt;
Sur la page de garde furent affich&#233;s la liste des articles les plus r&#233;cents, puis un diaporama automatique des &#339;uvres situ&#233;es dans la rubrique galerie, puis (&#8230;)&lt;/p&gt;


-
&lt;a href="https://vader-fr.fr/spip.php?rubrique31" rel="directory"&gt;Isabelle Palenc : artiste peintre sculpteur&lt;/a&gt;

/ 
&lt;a href="https://vader-fr.fr/spip.php?mot3" rel="tag"&gt;HTML&lt;/a&gt;, 
&lt;a href="https://vader-fr.fr/spip.php?mot9" rel="tag"&gt;D&#233;veloppement web&lt;/a&gt;, 
&lt;a href="https://vader-fr.fr/spip.php?mot10" rel="tag"&gt;SPIP&lt;/a&gt;, 
&lt;a href="https://vader-fr.fr/spip.php?mot12" rel="tag"&gt;CSS&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;div class=&#034;onglets_bloc_initial&#034;&gt;&lt;div class=&#034;onglets_contenu&#034;&gt;&lt;h2 class=&#034;cs_onglet&#034;&gt;&lt;a href=&#034;#&#034;&gt;Page de garde&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;
&lt;p&gt;La toute premi&#232;re page (&lt;a href=&#034;http://isabellepalenc.com/&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;http://isabellepalenc.com/&lt;/a&gt;) est une simple page avec fond gris&#233; et 3 liens de langue. Pour l'instant, seul la langue fran&#231;aise est disponible car les articles n'ont pas encore &#233;t&#233; traduits.&lt;/p&gt;
&lt;p&gt;Le lien de langue m&#232;ne ensuite &#224; la rubrique biographie (&lt;a href=&#034;http://isabellepalenc.com/spip.php?rubrique2&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;http://isabellepalenc.com/spip.php?rubrique2&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Sur la page de garde furent affich&#233;s la liste des articles les plus r&#233;cents, puis un diaporama automatique des &#339;uvres situ&#233;es dans la rubrique galerie, puis enfin un diaporama automatique sur l'artiste et son atelier, ainsi qu'une citation.&lt;/p&gt;
&lt;p&gt;D&#232;s le d&#233;part - et c'est un point commun &#224; tous mes squelettes SPIP/Zpip - fut con&#231;ue une fausse rubrique &#034;Accueil&#034; en tant que rubrique num&#233;ro 1, et ce pour plusieurs raisons :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; La rubrique est list&#233;e automatiquement dans le menu des rubriques principales du bloc navigation&lt;/li&gt;&lt;li&gt; Le nom de cette rubrique dans la liste peut facilement &#234;tre traduit gr&#226;ce &#224; un bloc multilingue dans SPIP, plus facile &#224; &#233;diter qu'un lien en dur dans le squelette.&lt;/li&gt;&lt;li&gt; Le site &#233;tant multilingue, le tri par titre dans la liste des rubriques aurait provoqu&#233; des incoh&#233;rences selon la langue, c'est pourquoi les rubriques sont list&#233;es par num&#233;ro.
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; La fausse rubrique &#233;tant la num&#233;ro 1, elle appara&#238;t toujours en premier, que son nom soit &#034;Accueil&#034; ou &#034;Home&#034;.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; Cette fausse rubrique peut en cacher d'autres, comme un diaporama d&#233;di&#233; ou une citation, qui ne seront visibles de nulle part ailleurs sur le site, y compris la page de plan ou la page recherche.
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Cette fonctionnalit&#233; n'&#233;tait pas pr&#233;vue au d&#233;part, mais &#233;tait toujours possible, et &#224; fini par servir.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Au sein d'un plugin Zpip, les fichiers de squelette correspondants &#224; la page de garde sont :&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;rubrique=1.html&lt;/code&gt; &#224; la racine du plugin, qui se contente de d&#233;crire pour cette rubrique la m&#234;me structure que la page sommaire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt; &lt;INCLURE{fond=structure}{env}{type=page}{composition=sommaire} /&gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;page-sommaire.html&lt;/code&gt; dans le r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;contenu&lt;/code&gt;, qui d&#233;crit donc le contenu commun des pages sommaire et &#034;Accueil&#034; (rubrique 1).&lt;/li&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;rubrique-1.html&lt;/code&gt; dans le r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;contenu&lt;/code&gt;, qui affichera pour les sous rubriques de la rubrique 1 le m&#234;me contenu (que la page sommaire).&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#034;onglets_contenu&#034;&gt;&lt;h2 class=&#034;cs_onglet&#034;&gt;&lt;a href=&#034;#&#034;&gt;Squelette de la page de garde&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;div class=&#034;contenu-principal galeries&#034;&gt;&lt;/code&gt; le bloc conteneur g&#233;n&#233;ral du contenu.&lt;/p&gt;
&lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='#_foo'&gt;Style CSS associ&#233;&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&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;.contenu-principal { padding:5px;
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Pour les &#233;l&#233;ments de classe &#034;contenu-principal&#034; : espace interne de 5 pixels &#224; gauche.&lt;/p&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;div.galeries { position:absolute; top:50px; bottom:0; left:0; right:5px; overflow-y:auto;
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Pour les blocs de classe &#034;galeries&#034; : fix&#233; &#224; 50 pixels du bord haut (du cadre conteneur ou de la fen&#234;tre), &#224; 0 pixels du bas et de la gauche, 5 pixels du bord droite, et ascenseur vertical (axe y) automatique.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; le bloc du diaporama&lt;/li&gt;&lt;/ul&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;&lt;div id=&#034;diapo&#034; class=&#034;diapo-sommaire&#034;&gt; &lt;input type=&#034;hidden&#034; name=&#034;nrubrique&#034; id=&#034;nrubrique&#034; value=&#034;35&#034;/&gt; &lt;input type=&#034;hidden&#034; name=&#034;mindepth&#034; id=&#034;mindepth&#034; value=&#034;0&#034;/&gt; &lt;input type=&#034;hidden&#034; name=&#034;maxdepth&#034; id=&#034;maxdepth&#034; value=&#034;3&#034;/&gt; &lt;input type=&#034;hidden&#034; name=&#034;lang&#034; id=&#034;lang&#034; value=&#034;#LANG&#034;/&gt; &lt;div id=&#034;diapo_image&#034;&gt; &lt;BOUCLE_contenu_rubrique(ARTICLES){id_rubrique=35} {par date}{inverse}{lang}{pagination 1}&gt; [(#LOGO_ARTICLE)] &lt;/BOUCLE_contenu_rubrique&gt; &lt;/div&gt; &lt;div id=&#034;diapo_texte&#034;&gt; &lt;font color=&#034;red&#034;&gt;&lt;b&gt;JavaScript doit &#234;tre activ&#233; pour que le diaporama puisse d&#233;marrer&lt;/b&gt;&lt;/font&gt; &lt;/div&gt; &lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ce bloc contient un formulaire, qui sera lu par le &lt;a href='https://vader-fr.fr/spip.php?article144' class=&#034;spip_in&#034;&gt;script JavaScript g&#233;n&#233;rique des diaporamas&lt;/a&gt;, afin de pr&#233;parer la requ&#234;te XMLHTTP pour le serveur et demander l'&#233;l&#233;ment de diaporama &#224; afficher.&lt;br class='autobr' /&gt;
Seuls les &#233;l&#233;ments (image, titre, texte descriptif) du diaporama seront demand&#233;s et t&#233;l&#233;charg&#233;s depuis le serveur, sans que la page ne soit recharg&#233;e, afin d'all&#233;ger la charge.&lt;/p&gt;
&lt;p&gt;Ce concept de programmation en web se nomme AJAX.&lt;/p&gt;
&lt;p&gt;Une boucle SPIP permet de charger la premi&#232;re image avant m&#234;me le lancement du diaporama.&lt;/p&gt;
&lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='#_foo'&gt;Style CSS diaporama&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&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;#diapo { position:absolute; left:0; top:55px; bottom:120px; right:55px; background-color:#999999;
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Pour le bloc &#034;diapo&#034; : fix&#233; &#224; gauche, en haut, en bas et &#224; droite. 120 pixels du bas afin de prendre en compte la hauteur - fixe - du bloc citation situ&#233; dessous.&lt;/p&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;#diapo_image, #bio_texte, #peintures_image { position:absolute; left:25px; top:25px; bottom:25px;
}
#diapo_image, #peintures_image { right:500px;
}
#diapo_texte, #peintures_contenu { width:475px;
}
#diapo_image img, #bio_image img, #peintures_image img { max-height:100%; max-width:100%;
} #diapo_texte, #bio_image, #peintures_contenu { position:absolute; bottom:0; top:25px; right:5px; padding-right:5px;
} #diapo_texte, #bio_texte, #peintures_contenu { overflow-y:auto;
} #diapo.diapo-sommaire #diapo_texte { visibility:hidden;
} #diapo.diapo-sommaire #diapo_image { right:5px;
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Afin de cacher le bloc de texte du diaporama de la page de garde, et seulement celle l&#224;, le bloc diapo dispose d'une classe, &#034;diapo-sommaire&#034;, qui fait que les blocs &#034;diapo_texte&#034; contenus dans un bloc disposant de la classe pr&#233;cit&#233;e seront cach&#233;s.&lt;/p&gt;
&lt;p&gt;De m&#234;me, les blocs &#034;diapo_image&#034; contenus dans un bloc disposant de la classe pr&#233;cit&#233;e seront &#034;fix&#233;s&#034; &#224; 5px du bord droite, au lieu de 500px.&lt;/p&gt;
&lt;p&gt;Cette classe n'est d&#233;finie que dans le squelette de la page sommaire.&lt;br class='autobr' /&gt;
Cela permet d'avoir un seul &#034;squelette&#034; de diaporama, et donc un seul script AJAX, g&#233;n&#233;rique.&lt;/p&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;.titre_diapo { font-size:1.2em; font-weight:bold;
} .titre_diapo, .titre_diapo a, .titre_article { color:#666666;
} .titre_diapo a { text-decoration: none;
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; le bloc citation&lt;/li&gt;&lt;/ul&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;	&lt;div id=&#034;citation&#034;&gt; &lt;B_citation&gt; &lt;BOUCLE_citation(ARTICLES){id_rubrique=36} {par hasard}{lang} {pagination 1}&gt; [(#TEXTE)] &lt;/BOUCLE_citation&gt; &lt;/B_citation&gt; &lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ici, c'est une simple boucle SPIP qui va chercher un et un seul (&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;{pagination 1}&lt;/code&gt;) article (on travaille sur la table des &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;(ARTICLES)&lt;/code&gt;) au hasard (&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;{par hasard}&lt;/code&gt;) dans la rubrique 36 (&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;{id_rubrique=36}&lt;/code&gt;), rubrique d&#233;di&#233;e qui contient les citations et est cach&#233;e dans la rubrique &#034;Accueil&#034;.&lt;br class='autobr' /&gt;
Le filtre de langue &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;{lang}&lt;/code&gt; permet de ne choisir que parmi les articles dans la langue souhait&#233;e, selon le param&#232;tre transmis &#224; SPIP (lien de langue).&lt;br class='autobr' /&gt;
On affiche ensuite le texte de la citation par la balise &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;[(#TEXTE)]&lt;/code&gt;.&lt;/p&gt;
&lt;div class='cs_blocs'&gt;&lt;h4 class='blocs_titre blocs_replie blocs_click'&gt;&lt;a href='#_foo'&gt;Style CSS citation&lt;/a&gt;&lt;/h4&gt;&lt;div class='blocs_destination blocs_invisible blocs_slide'&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;#citation { position:absolute; left:0; bottom:55px; right:55px; background-color:#999999; height:50px; text-align:center;
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Pour le bloc &#034;citation&#034; : fix&#233; &#224; gauche, en bas et &#224; droite, hauteur fixe de 50 pixels.&lt;/p&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;#citation p { font-size: 1.2em; margin: 0;
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;/div&gt;&lt;/code&gt; Puis la fin du bloc conteneur g&#233;n&#233;ral&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&#034;onglets_contenu&#034;&gt;&lt;h2 class=&#034;cs_onglet&#034;&gt;&lt;a href=&#034;#&#034;&gt;Structure g&#233;n&#233;rale du site&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;
&lt;p&gt;L'&#233;l&#233;ment body est surcharg&#233; par un bloc &#034;page&#034; positionn&#233; de mani&#232;re absolue et fix&#233; aux bords de la fen&#234;tre.&lt;br class='autobr' /&gt;
Les diff&#233;rents &#233;l&#233;ments du corps de page sont ensuite dispos&#233; dans des blocs d&#233;di&#233;s : ent&#234;te, pied de page, navigation et contenu.&lt;br class='autobr' /&gt;
Les 4 blocs sont positionn&#233;s de mani&#232;re absolue &#224; l'int&#233;rieur du bloc &#034;page&#034;, fix&#233;s aux bords dudit bloc, afin que le bloc &#034;contenu&#034; puisse s'&#233;tendre selon la taille de l'&#233;cran, sans que les autres blocs ne se d&#233;forment (voir &lt;a href='https://vader-fr.fr/spip.php?article30' class=&#034;spip_in&#034;&gt;ici&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Le bloc ent&#234;te contient lui-m&#234;me 2 sous-blocs :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; le bloc unique d'identifiant &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#drapos&lt;/code&gt;, contenant la liste des liens de langue selon les langues utilis&#233;es dans les articles publi&#233;s du site SPIP. Il est situ&#233; de mani&#232;re absolue dans son cadre (entete), fix&#233; &#224; 20% du bord gauche et 20 pixels du haut. Il peut ainsi s'&#233;tendre selon les besoins.&lt;/li&gt;&lt;li&gt; le bloc de classe &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;.accueil&lt;/code&gt;, qui est de fait &#233;galement unique. Il est lui aussi fix&#233; de mani&#232;re absolue dans son cadre (entete), &#224; 150 pixels du bord droite et 20 pixels du haut. Il contient le logo, qui est de largeur fixe.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Cela permet si besoin est de mettre un bloc d'arri&#232;re plan et un bloc filtre sans toucher au contenu, comme c'est le cas pour certains de mes th&#232;mes ZenGarden (&lt;a href='https://vader-fr.fr/spip.php?article132' class=&#034;spip_in&#034;&gt;exemple&lt;/a&gt;).&lt;br class='autobr' /&gt;
L'arri&#232;re plan &#233;tant monochrome, et le bloc contenu disposant g&#233;n&#233;ralement d'un arri&#232;re plan propre, il n'a pas &#233;t&#233; n&#233;cessaire d'utiliser un bloc d&#233;di&#233; &#224; l'arri&#232;re plan et un bloc filtre.&lt;/p&gt;
&lt;dl class='spip_document_279 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;img src='https://vader-fr.fr/local/cache-vignettes/L500xH274/isa_firebug01-d13c3.jpg?1771624584' width='500' height='274' alt='' /&gt;&lt;/dt&gt;
&lt;dt class='spip_doc_titre' style='width:350px;'&gt;&lt;strong&gt;Structure g&#233;n&#233;ral site Isabelle palenc&lt;/strong&gt;&lt;/dt&gt;
&lt;dd class='spip_doc_descriptif' style='width:350px;'&gt;Aper&#231;u par Firebug (module pour Mozilla Firefox)
&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Pr&#233;sentation g&#233;n&#233;rale du site</title>
		<link>https://vader-fr.fr/spip.php?article103</link>
		<guid isPermaLink="true">https://vader-fr.fr/spip.php?article103</guid>
		<dc:date>2014-10-18T14:40:33Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Vader[FR]</dc:creator>



		<description>
&lt;p&gt;Comme son nom l'indique, ce site est celui d'une artiste peintre sculpteur, par ailleurs membre des Ateliers du P&#232;re Lachaise Associ&#233;s. &lt;br class='autobr' /&gt;
Apr&#232;s non pas 7 [1] mais 2 ans de r&#233;flexion, ce site est finalement ouvert au public. &lt;br class='autobr' /&gt;
Ce site SPIP &#233;tant un site de type &#034;artistique&#034;, son squelette est &#233;pur&#233;, afin de mettre en avant les &#339;uvres, et a &#233;t&#233; fait enti&#232;rement selon les souhaits de l'artiste, suite &#224; une longue r&#233;flexion. Il utilise un squelette Zpip &#034;customis&#233;&#034;. &lt;br class='autobr' /&gt;
Ce site est par ailleurs (&#8230;)&lt;/p&gt;


-
&lt;a href="https://vader-fr.fr/spip.php?rubrique31" rel="directory"&gt;Isabelle Palenc : artiste peintre sculpteur&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Comme son nom l'indique, ce site est celui d'une artiste peintre sculpteur, par ailleurs membre des Ateliers du P&#232;re Lachaise Associ&#233;s.&lt;/p&gt;
&lt;p&gt;Apr&#232;s non pas 7&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb2-1&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;r&#233;f&#233;rence au film &#233;ponyme&#034; id=&#034;nh2-1&#034;&gt;1&lt;/a&gt;]&lt;/span&gt; mais 2 ans de r&#233;flexion, ce site est finalement ouvert au public.&lt;/p&gt;
&lt;p&gt;Ce site SPIP &#233;tant un site de type &#034;artistique&#034;, son squelette est &#233;pur&#233;, afin de mettre en avant les &#339;uvres, et a &#233;t&#233; fait enti&#232;rement selon les souhaits de l'artiste, suite &#224; une longue r&#233;flexion. Il utilise un squelette Zpip &#034;customis&#233;&#034;.&lt;/p&gt;
&lt;p&gt;Ce site est par ailleurs multilingue.&lt;/p&gt;
&lt;p&gt;Son fonctionnement technique sera d&#233;taill&#233; dans cette rubrique :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; squelette dont multilinguisme,&lt;/li&gt;&lt;li&gt; style CSS&lt;/li&gt;&lt;li&gt; scripts JavaScript donc les diaporamas AJAX&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#034;nb2-1&#034;&gt;
&lt;p&gt;&lt;span class=&#034;csfoo htmla&#034;&gt;&lt;/span&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh2-1&#034; class=&#034;spip_note&#034; title=&#034;Notes 2-1&#034; rev=&#034;appendix&#034;&gt;1&lt;/a&gt;] &lt;/span&gt;&lt;span class=&#034;csfoo htmlb&#034;&gt;&lt;/span&gt;r&#233;f&#233;rence au film &lt;a href=&#034;http://fr.wikipedia.org/wiki/Sept_ans_de_r%C3%A9flexion&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;&#233;ponyme&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>



</channel>

</rss>
