<?xml 
version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://arts-numeriques.codedrops.net/spip.php?page=backend.xslt" ?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:atom="http://www.w3.org/2005/Atom"
>

<channel xml:lang="fr">
	<title>Arts num&#233;riques</title>
	<link>https://arts-numeriques.codedrops.net/</link>
	<description>artsnumeriques est le support des cours de St&#233;phane Noel, professeur &#224; l'&#233;cole de recherche graphique.</description>
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>
	<atom:link href="http://arts-numeriques.codedrops.net/spip.php?id_rubrique=37&amp;page=backend" rel="self" type="application/rss+xml" />




<item xml:lang="fr">
		<title>Afficher des posts verticalement avec un effet d'apparition</title>
		<link>http://arts-numeriques.codedrops.net/Afficher-des-posts-verticalement-avec-un-effet-d-apparition</link>
		<guid isPermaLink="true">http://arts-numeriques.codedrops.net/Afficher-des-posts-verticalement-avec-un-effet-d-apparition</guid>
		<dc:date>2021-05-01T15:54:21Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>St&#233;phane Noel</dc:creator>



		<description>
&lt;p&gt;Cette page permet de faire apparaitre des posts dans l'ordre (verticalement) mais al&#195;&#169;atoirement horizontalement, avec quelques tailles sp&#195;&#169;cifiques en largeur.
&lt;br class='autobr' /&gt;
Les images apparaissent en scroll avec un effet de mouvement et de fondu. &lt;br class='autobr' /&gt; Lazyload + d&#195;&#169;tection de pr&#195;&#169;sence dans le viewport
&lt;br class='autobr' /&gt;
Le chargement de ces images utilise lazyload, un type de script qui v&#195;&#169;rifie lors du scroll de la page si les images vont entrer dans le viewport (la partie visible de la page) et d&#195;&#169;clenche leur (&#8230;)&lt;/p&gt;


-
&lt;a href="http://arts-numeriques.codedrops.net/-Wordpress-par-l-exemple-le-theme-theme_base-" rel="directory"&gt;Wordpress par l'exemple : le th&#195;&#168;me theme_base&lt;/a&gt;


		</description>


 <content:encoded>&lt;img src='http://arts-numeriques.codedrops.net/local/cache-vignettes/L150xH118/arton656-b1d77.jpg?1726920048' class='spip_logo spip_logo_right' width='150' height='118' alt=&#034;&#034; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Cette page permet de faire apparaitre des posts dans l'ordre (verticalement) mais al&#195;&#169;atoirement horizontalement, avec quelques tailles sp&#195;&#169;cifiques en largeur.&lt;br class='autobr' /&gt;
Les images apparaissent en scroll avec un effet de mouvement et de fondu.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Lazyload + d&#195;&#169;tection de pr&#195;&#169;sence dans le viewport&lt;br class='autobr' /&gt;
Le chargement de ces images utilise lazyload, un type de script qui v&#195;&#169;rifie lors du scroll de la page si les images vont entrer dans le viewport (la partie visible de la page) et d&#195;&#169;clenche leur chargement si c'est le cas.&lt;/p&gt;
&lt;p&gt;Un deuxi&#195;&#168;me script v&#195;&#169;rifie si l'image est charg&#195;&#169;e et effectivement dans le viewport, et si c'est le cas la fait apparaitre.&lt;/p&gt;
&lt;p&gt;La librairie &#034;&lt;a href=&#034;https://github.com/verlok/vanilla-lazyload/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;vanilla lazyload&lt;/a&gt;&#034; est utilis&#195;&#169;e par le script qui ne s'appuie pas sur jQuery.&lt;/p&gt;
&lt;p&gt;Le document zipp&#195;&#169; ci-joint fournit le code complet sous la forme d'un template part pour wordpress, accompagn&#195;&#169; du fichier lazyload pr&#195;&#169;vu pour &#195;&#170;tre plac&#195;&#169; dans le dossier &#034;assets&#034; du th&#195;&#168;me theme_base.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		
		<enclosure url="http://arts-numeriques.codedrops.net/IMG/zip/lazyload_fichiers-2.zip" length="4641" type="application/zip" />
		

	</item>
<item xml:lang="fr">
		<title>Afficher les articles en &#034;accord&#195;&#169;on&#034;</title>
		<link>http://arts-numeriques.codedrops.net/Afficher-les-articles-en-accordeon</link>
		<guid isPermaLink="true">http://arts-numeriques.codedrops.net/Afficher-les-articles-en-accordeon</guid>
		<dc:date>2021-03-28T16:35:45Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>St&#233;phane Noel</dc:creator>



		<description>
&lt;p&gt;Cacher et d&#195;&#169;plier le contenu d'articles est facile avec bootstrap, car un module a &#195;&#169;t&#195;&#169; cod&#195;&#169; pour &#195;&#167;a. &lt;br class='autobr' /&gt; Qu'est ce qu'un accord&#195;&#169;on en d&#195;&#169;veloppement web Un accord&#195;&#169;on, sur le web, est un mode d'affichage dans lequel on affiche pour chaque &#195;&#169;l&#195;&#169;ment une barre horizontale, et en clic on d&#195;&#169;plie l'information compl&#195;&#168;te. &lt;br class='autobr' /&gt;
Un code d&#195;&#169;j&#195; pr&#195;&#170;t sur le site de Bootstrap En fait, les syst&#195;&#168;mes d'accord&#195;&#169;on sont couant sur le web, et Bootstrap dispose de codes html/css/javascript int&#195;&#169;gr&#195;&#169;s. Il (&#8230;)&lt;/p&gt;


-
&lt;a href="http://arts-numeriques.codedrops.net/-Wordpress-par-l-exemple-le-theme-theme_base-" rel="directory"&gt;Wordpress par l'exemple : le th&#195;&#168;me theme_base&lt;/a&gt;


		</description>


 <content:encoded>&lt;img src='http://arts-numeriques.codedrops.net/local/cache-vignettes/L150xH102/arton655-1a06a.png?1726920048' class='spip_logo spip_logo_right' width='150' height='102' alt=&#034;&#034; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Cacher et d&#195;&#169;plier le contenu d'articles est facile avec bootstrap, car un module a &#195;&#169;t&#195;&#169; cod&#195;&#169; pour &#195;&#167;a.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h2 class=&#034;spip&#034;&gt;Qu'est ce qu'un accord&#195;&#169;on en d&#195;&#169;veloppement web&lt;/h2&gt;
&lt;p&gt;Un accord&#195;&#169;on, sur le web, est un mode d'affichage dans lequel on affiche pour chaque &#195;&#169;l&#195;&#169;ment une barre horizontale, et en clic on d&#195;&#169;plie l'information compl&#195;&#168;te.&lt;/p&gt;
&lt;p&gt;&lt;span class='spip_document_1255 spip_documents spip_documents_center'&gt;&lt;img src='http://arts-numeriques.codedrops.net/local/cache-vignettes/L500xH304/accordeon-5de4d.jpg?1726920048' width='500' height='304' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Un code d&#195;&#169;j&#195; pr&#195;&#170;t sur le site de Bootstrap&lt;/h2&gt;
&lt;p&gt;En fait, les syst&#195;&#168;mes d'accord&#195;&#169;on sont couant sur le web, et Bootstrap dispose de codes html/css/javascript int&#195;&#169;gr&#195;&#169;s. Il nous suffit donc de copier &lt;a href=&#034;https://getbootstrap.com/docs/5.0/components/accordion/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;le code sur le site de documentation de Bootstrap&lt;/a&gt; et de le placer dans un template part pour que &#195;&#167;a marche.&lt;/p&gt;
&lt;p&gt;Il n'y a m&#195;&#170;me pas &#195; placer de code javascript, le tout fonctionne d'embl&#195;&#169;e.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Placer le code de la boucle Wordpress&lt;/h2&gt;
&lt;p&gt;Le seul travail &#195; faire sera donc d'int&#195;&#169;grer la boucle wordpress &#195; ce code, et choisir quelles informations afficher.&lt;/p&gt;
&lt;p&gt;Voici un premier exemple simple avec le titre dans la partie visible et le reste de l'article dans la partie cach&#195;&#169;e.&lt;/p&gt;
&lt;p&gt;&lt;span class='spip_document_1258 spip_documents spip_documents_center'&gt;&lt;img src='http://arts-numeriques.codedrops.net/local/cache-vignettes/L500xH290/accordeon-3-6bde5.png?1726920049' width='500' height='290' alt=&#034;&#034; /&gt;&lt;/span&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;&lt;?php // code &#195; placer dans un template_part // on garde la requete par defaut $temp_query = $wp_query; $args = array( 'post_type' =&gt; array( 'post' ), //'category_name' =&gt; 'identite-graphique,illustration', 'posts_per_page' =&gt; '10', 'order_by' =&gt; 'ASC', ); query_posts($args); $compteur=0; ?&gt; &lt;main class=&#034;container py-5&#034;&gt; &lt;?php if(have_posts()) : ?&gt; &lt;div class=&#034;accordion accordion-flush&#034; id=&#034;accordeon_theme_base&#034;&gt; &lt;?php while(have_posts()) : the_post(); ?&gt; &lt;div class=&#034;accordion-item&#034;&gt; &lt;h2 class=&#034;accordion-header&#034; id=&#034;flush-heading&lt;?php the_id(); ?&gt;&#034;&gt; &lt;button class=&#034;accordion-button collapsed&#034; type=&#034;button&#034; data-bs-toggle=&#034;collapse&#034; data-bs-target=&#034;#flush-collapse&lt;?php the_id(); ?&gt;&#034; aria-expanded=&#034;false&#034; aria-controls=&#034;flush-collapse&lt;?php the_id(); ?&gt;&#034;&gt; &lt;?php the_title(); ?&gt; &lt;/button&gt; &lt;/h2&gt; &lt;div id=&#034;flush-collapse&lt;?php the_id(); ?&gt;&#034; class=&#034;accordion-collapse collapse&#034; aria-labelledby=&#034;flush-heading&lt;?php the_id(); ?&gt;&#034; data-bs-parent=&#034;#accordeon_theme_base&#034;&gt; &lt;div class=&#034;accordion-body&#034;&gt; &lt;?php the_content(); ?&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;?php endwhile; ?&gt; &lt;/div&gt; &lt;?php endif; ?&gt; &lt;/main&gt; &lt;?php /* retrouver la query de base */ $wp_query = $temp_query; ?&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Il est &#195; noter qu'il n'est pas possible de placer des liens dans la partie &#034;titre&#034; de l'accord&#195;&#169;on : cliquer sur cette partie ouvre ou ferme le contenu, c'est tout.&lt;/p&gt;
&lt;p&gt;Voici une exemple plus pouss&#195;&#169;, avec un logo et les cat&#195;&#169;gories en plus.&lt;/p&gt;
&lt;p&gt;Son code :&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 // on garde la requete par defaut $temp_query = $wp_query; $args = array( 'post_type' =&gt; array( 'post' ), //'category_name' =&gt; 'identite-graphique,illustration', 'posts_per_page' =&gt; '10', 'order_by' =&gt; 'ASC', ); query_posts($args); $compteur=0; ?&gt; &lt;main class=&#034;container py-5&#034;&gt; &lt;?php if(have_posts()) : ?&gt; &lt;div class=&#034;accordion accordion-flush&#034; id=&#034;accordeon_theme_base&#034;&gt; &lt;?php while(have_posts()) : the_post(); ?&gt; &lt;div class=&#034;accordion-item&#034;&gt; &lt;h2 class=&#034;accordion-header&#034; id=&#034;flush-heading&lt;?php the_id(); ?&gt;&#034;&gt; &lt;button class=&#034;accordion-button collapsed&#034; type=&#034;button&#034; data-bs-toggle=&#034;collapse&#034; data-bs-target=&#034;#flush-collapse&lt;?php the_id(); ?&gt;&#034; aria-expanded=&#034;false&#034; aria-controls=&#034;flush-collapse&lt;?php the_id(); ?&gt;&#034;&gt; &lt;div class=&#034;row w-100 align-items-end justify-content-start decoration-hover&#034;&gt; &lt;div class=&#034;col-auto&#034;&gt; &lt;?php the_post_thumbnail('rectangle', array( 'class' =&gt; 'image_accordeon' )); ?&gt; &lt;/div&gt; &lt;div class=&#034;col titre-grand&#034;&gt; &lt;?php the_title(); ?&gt; &lt;/div&gt; &lt;div class=&#034;col texte-minus pe-5 text-end&#034;&gt; &lt;?php the_category(', '); ?&gt; &lt;/div&gt; &lt;/div&gt; &lt;/button&gt; &lt;/h2&gt; &lt;div id=&#034;flush-collapse&lt;?php the_id(); ?&gt;&#034; class=&#034;accordion-collapse collapse&#034; aria-labelledby=&#034;flush-heading&lt;?php the_id(); ?&gt;&#034; data-bs-parent=&#034;#accordeon_theme_base&#034;&gt; &lt;div class=&#034;accordion-body&#034;&gt; &lt;?php the_content(); ?&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;?php endwhile; ?&gt; &lt;/div&gt; &lt;?php endif; ?&gt; &lt;/main&gt; &lt;style&gt; .image_accordeon { height:3em; width:auto; } &lt;/style&gt; &lt;?php /* retrouver la query de base */ $wp_query = $temp_query; ?&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Le r&#195;&#169;sultat :&lt;/p&gt;
&lt;p&gt;&lt;span class='spip_document_1257 spip_documents spip_documents_center'&gt;&lt;img src='http://arts-numeriques.codedrops.net/local/cache-vignettes/L500xH340/accordeon-2-b40f4.png?1726920049' width='500' height='340' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Des posts &#034;draggables&#034; en homepage</title>
		<link>http://arts-numeriques.codedrops.net/Des-posts-draggables-en-homepage</link>
		<guid isPermaLink="true">http://arts-numeriques.codedrops.net/Des-posts-draggables-en-homepage</guid>
		<dc:date>2021-03-27T17:07:07Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>St&#233;phane Noel</dc:creator>



		<description>
&lt;p&gt;Plusieurs fois demand&#195;&#169;, voici un exemple de code permettant de placer des &#195;&#169;l&#195;&#169;ments al&#195;&#169;atoirement dans l'espace de la page, et pouvant &#195;&#170;tre d&#195;&#169;plac&#195;&#169;s avec la souris. &lt;br class='autobr' /&gt; Comment aborder ce genre de cas ? Ce cas est surtout int&#195;&#169;ressant parce qu'&#195; partir d'une demande, il faut rechercher les solutions techniques pour y r&#195;&#169;pondre. &lt;br class='autobr' /&gt;
Nous devons &#195;&#170;tre en mesure de : disposer al&#195;&#169;atoirement des &#195;&#169;l&#195;&#169;ments dans l'espace d'un bloc permettre leur d&#195;&#169;placement par drag &amp; drop mettre &#195; (&#8230;)&lt;/p&gt;


-
&lt;a href="http://arts-numeriques.codedrops.net/-Wordpress-par-l-exemple-le-theme-theme_base-" rel="directory"&gt;Wordpress par l'exemple : le th&#195;&#168;me theme_base&lt;/a&gt;


		</description>


 <content:encoded>&lt;img src='http://arts-numeriques.codedrops.net/local/cache-vignettes/L150xH124/arton653-a36fa.jpg?1743932071' class='spip_logo spip_logo_right' width='150' height='124' alt=&#034;&#034; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Plusieurs fois demand&#195;&#169;, voici un exemple de code permettant de placer des &#195;&#169;l&#195;&#169;ments al&#195;&#169;atoirement dans l'espace de la page, et pouvant &#195;&#170;tre d&#195;&#169;plac&#195;&#169;s avec la souris.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h2 class=&#034;spip&#034;&gt;Comment aborder ce genre de cas ?&lt;/h2&gt;
&lt;p&gt;Ce cas est surtout int&#195;&#169;ressant parce qu'&#195; partir d'une demande, il faut rechercher les solutions techniques pour y r&#195;&#169;pondre.&lt;/p&gt;
&lt;p&gt;Nous devons &#195;&#170;tre en mesure de : &lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; disposer al&#195;&#169;atoirement des &#195;&#169;l&#195;&#169;ments dans l'espace d'un bloc
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; permettre leur d&#195;&#169;placement par drag &amp; drop
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; mettre &#195; l'avant plan le bloc lorsqu'il est cliqu&#195;&#169;&lt;/p&gt;
&lt;p&gt;Ces trois choses passent par du javascript, et la premi&#195;&#168;re chose &#195; faire sera de trouver une librairie javascript pour g&#195;&#169;rer le &#034;drag &amp; drop&#034;. Une recherche rapide sur le net permet de trouver plusieurs librairies open source le permettant. Apr&#195;&#168;s avoir lu la documentation et regard&#195;&#169; les d&#195;&#169;mos, j'ai choisi &lt;a href=&#034;https://github.com/catc/displace&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;la librairie displace&lt;/a&gt;, tr&#195;&#168;s l&#195;&#169;g&#195;&#168;re et qui permet de faire le travail.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Test &#034;hors Wordpress&#034;&lt;/h2&gt;
&lt;p&gt;La premi&#195;&#168;re chose &#195; faire est de mod&#195;&#169;liser notre demande en dehors du th&#195;&#168;me wordpress. &#195;&#8225;a peut sembler idiot, mais parfois les librairies peuvent s'av&#195;&#169;rer difficile &#195; mettre en place. Dominer techniquement la mise en place des &#195;&#169;l&#195;&#169;ments en htl/css/javascript est donc une bonne fa&#195;&#167;on de v&#195;&#169;rifier qu'on est capable de mettre au travail la librairie. Si un probl&#195;&#168;me survient qui emp&#195;&#170;che le bon fonctionnement du code, il sera plus facile de d&#195;&#169;bugguer ou d&#195;&#169;cider que ce n'est pas la bonne librairie pour la t&#195;&#162;che qui nous incombe.&lt;/p&gt;
&lt;p&gt;Voici le code qui permet de tester la base, sans le placement al&#195;&#169;atoire, juste pour voir si le drag &amp; drop fonctionne :&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;!DOCTYPE html&gt; &lt;html lang=&#034;&#034;&gt; &lt;head&gt; &lt;meta charset=&#034;utf-8&#034;&gt; &lt;meta name=&#034;viewport&#034; content=&#034;width=device-width, initial-scale=1.0&#034;&gt; &lt;title&gt;Un test de drag &amp; drop&lt;/title&gt; &lt;script src=&#034;displace.min.js&#034;&gt;&lt;/script&gt; &lt;/head&gt; &lt;body&gt; &lt;section id=&#034;moveable-container&#034;&gt; &lt;article class=&#034;moveable&#034;&gt;Element un&lt;br&gt;&lt;a href=&#034;http://www.codrdrops.net&#034;&gt;Un lien&lt;/a&gt;&lt;/article&gt; &lt;article class=&#034;moveable&#034;&gt;Element deux&lt;/article&gt; &lt;article class=&#034;moveable&#034;&gt;Element trois&lt;/article&gt; &lt;article class=&#034;moveable&#034;&gt;Element quatre&lt;/article&gt; &lt;article class=&#034;moveable&#034;&gt;Element cinq&lt;/article&gt; &lt;/section&gt; &lt;style&gt; .moveable { position:absolute; top:100px; left:100px; width:300px; height:200px; padding:10px; box-sizing: border-box; border:1px solid red; background-color:white; } .active { background-color:white; box-shadow:5px 5px 0 rgba(255,0,0,0.2); } section { border:1px solid #000; height:70vh; position:relative; } &lt;/style&gt; &lt;script&gt; var blocsContainer=document.querySelector(&#034;#moveable-container&#034;) var blocs=blocsContainer.querySelectorAll(&#034;.moveable&#034;) // activer le drad &amp; drop const displace = window.displacejs var zactuel=1 document.querySelectorAll('.moveable').forEach(function(elem){ var el = elem var options = { constrain: true, onMouseDown: active, onMouseUp: inactive, } displace(el, options) function active(el){ el.classList.add('active') el.style.zIndex=zactuel zactuel++ } function inactive(el){ el.classList.remove('active') } }) &lt;/script&gt; &lt;/body&gt; &lt;/html&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Pour que ce code fonctionne, il faut que la librairie displace.min.js soit plac&#195;&#169;e dans le m&#195;&#170;me r&#195;&#169;pertoire que notre page html, &#195;&#169;videmment. On obtient apr&#195;&#168;s quelques mouvements, ceci :&lt;/p&gt;
&lt;p&gt;&lt;span class='spip_document_1244 spip_documents spip_documents_center'&gt;&lt;img src='http://arts-numeriques.codedrops.net/local/cache-vignettes/L500xH264/vue-html-3fca5.jpg?1743932072' width='500' height='264' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Il manque deux choses pour ce code : &lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; le placement al&#195;&#169;atoire des blocs
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; le changement de position en cas de changement de taille de la page&lt;/p&gt;
&lt;p&gt;Je vous &#195;&#169;pargne ces codes que je place dans la d&#195;&#169;mo compl&#195;&#168;te ici :&lt;/p&gt;
&lt;div class='spip_document_1245 spip_document spip_documents spip_document_file spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;59&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt;
&lt;a href='http://arts-numeriques.codedrops.net/IMG/zip/test_drag.zip' class=&#034; spip_doc_lien&#034; title='Zip - 3.3 kio' type=&#034;application/zip&#034;&gt;&lt;img src='http://arts-numeriques.codedrops.net/local/cache-vignettes/L64xH64/zip-f045b.svg?1757706167' width='64' height='64' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-1245 '&gt;&lt;strong&gt;Code en version pur html/css/javascript
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_descriptif crayon document-descriptif-1245 '&gt;Avec la librairie
&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;Cr&#195;&#169;er un tempate part pour le code &lt;/h2&gt;
&lt;p&gt;Une fois le test r&#195;&#169;ussi, on place le code dans un template part de Wordpress.&lt;br class='autobr' /&gt;
L'utilisation d'un template part n'est pas obligatoire, mais permet d'isoler facilement le code.&lt;/p&gt;
&lt;p&gt;Voici la portion de code et la librairie displace.min.js, &lt;strong&gt;qui doit &#195;&#170;tre plac&#195;&#169;e dans le dossier assets/&lt;/strong&gt; (sans quoi &#195;&#167;a ne marchera pas, &#195;&#169;videment.&lt;/p&gt;
&lt;div class='spip_document_1246 spip_document spip_documents spip_document_file spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;180&#034; data-legende-lenx=&#034;xxx&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt;
&lt;a href='http://arts-numeriques.codedrops.net/IMG/zip/template_part_et_librairie-2.zip' class=&#034; spip_doc_lien&#034; title='Zip - 3.4 kio' type=&#034;application/zip&#034;&gt;&lt;img src='http://arts-numeriques.codedrops.net/local/cache-vignettes/L64xH64/zip-f045b.svg?1757706167' width='64' height='64' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-1246 '&gt;&lt;strong&gt;Le template part et la librairie displace
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_descriptif crayon document-descriptif-1246 '&gt;N'oubliez pas de placer ces &#195;&#169;l&#195;&#169;ments au bon endroit : le template part dans le dossier morceaux/ et le fichier javascript dans assets/
&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Le code pour placer ce template part dans la page home.php du th&#195;&#168;me &#034;theme_base&#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;&lt;?php get_template_part( 'morceaux/posts-draggable' ); ?&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Code pour un scroll horizontal</title>
		<link>http://arts-numeriques.codedrops.net/Code-pour-un-scroll-horizontal</link>
		<guid isPermaLink="true">http://arts-numeriques.codedrops.net/Code-pour-un-scroll-horizontal</guid>
		<dc:date>2021-03-21T22:56:19Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>St&#233;phane Noel</dc:creator>



		<description>
&lt;p&gt;Sur base du theme &#034;theme_base&#034;, voici un code permettant de cr&#195;&#169;er un scroll horizontal. &lt;br class='autobr' /&gt; Le code se base au maximum sur Bootstrap. Il utilise cependant un peu de javascript pour calculer la taille du scroll horizontal. Il affiche le contenu de la boucle, pr&#195;&#169;c&#195;&#169;d&#195;&#169; par une page appel&#195;&#169;e &#034;Baseline&#034; si elle existe. &lt;br class='autobr' /&gt;
O&#195;&#185; placer ce code &lt;br class='autobr' /&gt;
Ce code peut &#195;&#170;tre d&#195;&#169;pos&#195;&#169; dans un template part et appel&#195;&#169; avec le code d'inclusion de ceux-ci. Pour un template part du nom de (&#8230;)&lt;/p&gt;


-
&lt;a href="http://arts-numeriques.codedrops.net/-Wordpress-par-l-exemple-le-theme-theme_base-" rel="directory"&gt;Wordpress par l'exemple : le th&#195;&#168;me theme_base&lt;/a&gt;


		</description>


 <content:encoded>&lt;img src='http://arts-numeriques.codedrops.net/local/cache-vignettes/L150xH85/arton652-5a372.jpg?1743932072' class='spip_logo spip_logo_right' width='150' height='85' alt=&#034;&#034; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Sur base du theme &#034;theme_base&#034;, voici un code permettant de cr&#195;&#169;er un scroll horizontal.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Le code se base au maximum sur Bootstrap. Il utilise cependant un peu de javascript pour calculer la taille du scroll horizontal.&lt;br class='autobr' /&gt;
Il affiche le contenu de la boucle, pr&#195;&#169;c&#195;&#169;d&#195;&#169; par une page appel&#195;&#169;e &#034;Baseline&#034; si elle existe.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;O&#195;&#185; placer ce code&lt;/h2&gt;
&lt;p&gt;Ce code peut &#195;&#170;tre d&#195;&#169;pos&#195;&#169; dans un template part et appel&#195;&#169; avec le code d'inclusion de ceux-ci. Pour un template part du nom de home__scroll_horizontal.php, on aura donc :&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;get_template_part( 'morceaux/home_scroll_horizontal' );&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Il peut aussi &#195;&#170;tre cod&#195;&#169; directement dans la page home par exemple. Dans ce cas, on ajoutera les fonctions get_header() et get_footer() avant et apr&#195;&#168;s le code.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Le code&lt;/h2&gt;&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;&lt;div id=&#034;main&#034; class=&#034;d-block d-md-flex scroll-vh-100&#034;&gt; &lt;!-- baselin --&gt; &lt;?php // on garde la requete par defaut $temp_query = $wp_query; $args = array( 'post_type' =&gt; 'page', 'title' =&gt; 'Baseline' ); query_posts($args); if(have_posts()) : ?&gt;&lt;?php while(have_posts()) : the_post(); ?&gt; &lt;article id=&#034;baseline&#034; class=&#034;ps-3 pe-6 fst-italic texte-grand d-flex align-items-center&#034;&gt; &lt;div class=&#034;&#034;&gt; &lt;?php the_content(); ?&gt; &lt;/div&gt; &lt;/article&gt; &lt;?php endwhile; ?&gt; &lt;?php endif; ?&gt; &lt;?php /* retrouver la query de base */ $wp_query = $temp_query; ?&gt; &lt;!-- derniers articles --&gt; &lt;?php if(have_posts()) : ?&gt;&lt;?php while(have_posts()) : the_post(); ?&gt; &lt;article class=&#034;px-3 scroll-item&#034; id=&#034;post-&lt;?php the_ID(); ?&gt;&#034;&gt; &lt;div class=&#034;row h-100 py-4&#034;&gt; &lt;figure class=&#034;col col-md-6&#034;&gt;&lt;?php the_post_thumbnail('illu-scroll', array( 'class' =&gt; 'mw-100 mh-100' )); ?&gt;&lt;/figure&gt; &lt;div class=&#034;col-12 col-md-6&#034;&gt; &lt;h2&gt;&lt;a href=&#034;&lt;?php the_permalink(); ?&gt;&#034; title=&#034;&lt;?php the_title(); ?&gt;&#034;&gt;&lt;?php the_title(); ?&gt;&lt;/a&gt;&lt;/h2&gt; &lt;div class=&#034;post_content texte-petit pe-5&#034;&gt; &lt;?php the_excerpt(); ?&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/article&gt; &lt;?php endwhile; ?&gt; &lt;!-- lien vers page precedente et suivante --&gt; &lt;?php endif; ?&gt; &lt;/div&gt; &lt;style&gt; /* css sp&#195;&#169;cifique &#195; ce layout */ .logged-in .navbar.fixed-top { top:32px; } #main { padding:50px 0; width:100%; /* sera recalcul&#195;&#169; avec du script */ } .scroll-vw-50 { width:50vw; } @media (min-width: 768px) { #main { width:10000px; /* sera recalcul&#195;&#169; avec du script */ } #baseline { width:500px; } .scroll-vh-100 { height:100vh; } .logged-in .scroll-vh-100 { height:calc(100vh - 47px) !important; } .scroll-item { height:100%; width:800px; } .navbar { position: fixed; top:0; left:0; } .logged-in .navbar { top:32px; } footer { position:fixed; bottom:0; left:0; } } &lt;/style&gt; &lt;script&gt; calcule_width(); jQuery(window).resize(function(){ calcule_width(); }); function calcule_width(){ if(jQuery(window).width() &lt; 768){ jQuery(&#034;#main&#034;).css(&#034;width&#034;,&#034;100%&#034;); } else { jQuery(&#034;#main&#034;).css(&#034;width&#034;,&#034;10000px&#034;); var l=0; jQuery(&#034;#main article&#034;).each(function(){ l+=jQuery(this).width(); }); jQuery(&#034;#main&#034;).css(&#034;width&#034;,l+&#034;px&#034;); } } &lt;/script&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;La navigation et le footer&lt;/h2&gt;
&lt;p&gt;La navigation et le footer doivent &#195;&#170;tre adapt&#195;&#169;s.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La navigation :&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; &lt;nav class=&#034;navbar navbar-expand-lg&#034;&gt; &lt;div class=&#034;container-fluid&#034;&gt; &lt;a class=&#034;navbar-brand&#034; href=&#034;&lt;?php echo esc_url( home_url( '/' ) ); ?&gt;&#034; class=&#034;titre-petit text-primary&#034;&gt;&lt;?php bloginfo('name'); ?&gt;&lt;/a&gt; &lt;button class=&#034;navbar-toggler&#034; type=&#034;button&#034; data-bs-toggle=&#034;collapse&#034; data-bs-target=&#034;#navbarSupportedContent&#034; aria-controls=&#034;navbarSupportedContent&#034; aria-expanded=&#034;false&#034; aria-label=&#034;Toggle navigation&#034;&gt; &lt;i class=&#034;bi bi-list&#034;&gt;&lt;/i&gt; &lt;/button&gt; &lt;?php // transformer le menu en menu pr&#195;&#170;t pour bootstrap wp_nav_menu(array( 'theme_location' =&gt; 'menu-principal', 'container' =&gt; 'div', 'container_id' =&gt; 'navbarSupportedContent', 'container_class' =&gt; 'collapse navbar-collapse ', //'collapse navbar-collapse justify-content-end', 'menu_id' =&gt; false, 'menu_class' =&gt; 'navbar-nav ms-auto', 'depth' =&gt; 3, 'fallback_cb' =&gt; 'wp_bootstrap_navwalker::fallback', 'walker' =&gt; new wp_bootstrap_navwalker() )); ?&gt; &lt;/div&gt; &lt;/nav&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Le footer&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;&lt;footer class=&#034;container-fluid row px-3 pb-3&#034;&gt; &lt;div class=&#034;texte-petit&#034;&gt; &lt;a href=&#034;&lt;?php echo esc_url( home_url( '/' ) ); ?&gt;&#034; rel=&#034;home&#034;&gt;&lt;?php bloginfo( 'name' ); ?&gt;&lt;/a&gt; est un site Wordpress accompagn&#195;&#169; du th&#195;&#168;me gr3_minimal &lt;/div&gt; &lt;/footer&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Assembler un texte &#195; partir de 3 sources diff&#195;&#169;rentes</title>
		<link>http://arts-numeriques.codedrops.net/Assembler-un-texte-a-partir-de-3-sources-differentes</link>
		<guid isPermaLink="true">http://arts-numeriques.codedrops.net/Assembler-un-texte-a-partir-de-3-sources-differentes</guid>
		<dc:date>2021-03-19T11:03:56Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>St&#233;phane Noel</dc:creator>



		<description>
&lt;p&gt;Un script simple pour assembler des portions de texte provenant de 3 sources diff&#195;&#169;rentes. &lt;br class='autobr' /&gt; Ce code utilise les StringList, qui permettent une manipulation plus facile des Strings que les simples variables tableaux : la fonction shuffle() permet un m&#195;&#169;lange des Strings, et remove() permet de supprimer la String d&#195;&#169;j&#195; utilis&#195;&#169;e. &lt;br class='autobr' /&gt;
&#195;&#8225;a donne ceci en terme de code : String petit=&#034;lion_en_societe.txt&#034; ; String moyen=&#034;loup_chien.txt&#034; ; String grand=&#034;mouche_lion.txt&#034; ; &lt;br class='autobr' /&gt;
// la stringlist de (&#8230;)&lt;/p&gt;


-
&lt;a href="http://arts-numeriques.codedrops.net/-Traitement-du-texte-" rel="directory"&gt;Traitement du texte&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Un script simple pour assembler des portions de texte provenant de 3 sources diff&#195;&#169;rentes.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Ce code utilise les StringList, qui permettent une manipulation plus facile des Strings que les simples variables tableaux : la fonction shuffle() permet un m&#195;&#169;lange des Strings, et remove() permet de supprimer la String d&#195;&#169;j&#195; utilis&#195;&#169;e.&lt;/p&gt;
&lt;p&gt;&#195;&#8225;a donne ceci en terme de code :&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;String petit=&#034;lion_en_societe.txt&#034;; String moyen=&#034;loup_chien.txt&#034;; String grand=&#034;mouche_lion.txt&#034;; // la stringlist de textes r&#195;&#169;cup&#195;&#169;r&#195;&#169;s StringList mix; //Les 3 textes sous forme de stringlist aussi StringList t1; StringList t2; StringList t3; void setup() { size(600, 800); } void draw() { // on recharge les textes &#195; chaque tour, sinon la liste se vide au fur et &#195; mesure // remplir la premi&#195;&#168;re stringlist t1=new StringList(); t1 = remplit(t1, petit); // remplir la deuxi&#195;&#168;me stringlist t2=new StringList(); t2 = remplit(t2, moyen); // remplir la troisi&#195;&#168;me stringlist t3=new StringList(); t3 = remplit(t3, grand); background(255); fill(0); // initaliser la stringlist mix = new StringList(); for (int i=0; i&lt;2; i++) { mix.append(portion(t1)); //appel de fonction } for (int i=0; i&lt;3; i++) { mix.append(portion(t2)); //appel de fonction } for (int i=0; i&lt;5; i++) { mix.append(portion(t3)); //appel de fonction } mix.shuffle(); // mettre &#195;&#167;a dans un array traditionnel String[] textes = mix.array(); // transformer l'array en une seule string String resultat = join(textes, &#034;\n&#034;); textSize(10); text(resultat, 20, 20, width-40, height); // saveFrame(); noLoop(); } String portion(StringList lequel) { String retour=&#034;&#034;; int phasard=int(random(lequel.size())); retour=lequel.get(phasard); // enlever l'&#195;&#169;l&#195;&#169;ment utilis&#195;&#169; de la StringList lequel.remove(phasard); println(&#034;la stringlist fait maintenant &#034;+lequel.size()); return retour; } // remplit les stringlists avec les textes StringList remplit(StringList s, String t) { String[] t_complet=loadStrings(t); for (int i=0; i&lt;t_complet.length; i++) { s.append(t_complet[i]); } println(t+&#034; a maintenant &#034;+s.size()+&#034; lignes&#034;); return s; } void keyPressed() { loop(); }&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		
		<enclosure url="http://arts-numeriques.codedrops.net/IMG/zip/pioche_texte_student_help.zip" length="4463" type="application/zip" />
		

	</item>
<item xml:lang="fr">
		<title>Une image comme ensemble de particules</title>
		<link>http://arts-numeriques.codedrops.net/Une-image-comme-ensemble-de-particules</link>
		<guid isPermaLink="true">http://arts-numeriques.codedrops.net/Une-image-comme-ensemble-de-particules</guid>
		<dc:date>2021-03-15T10:49:44Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>St&#233;phane Noel</dc:creator>



		<description>
&lt;p&gt;Un script permettant de reposser les pixels avec la souris et sauver un pdf. &lt;br class='autobr' /&gt; Le code prend un portrait de Flaubert, remplacez l'image par la v&#195;&#180;tre. &lt;br class='autobr' /&gt; // detruire un dessin import processing.pdf.* ; boolean saveOneFrame = false ; &lt;br class='autobr' /&gt;
String image_source=&#034;flaubert.jpg&#034; ; &lt;br class='autobr' /&gt;
ArrayList pix ; PImage im ; float nbx=120.0 ; float nby=120.0 ; int zone_influence=15 ; boolean show_stroke=false ; &lt;br class='autobr' /&gt;
void setup() im=loadImage(image_source) ; size(634,800) ; pix=new ArrayList() ; for (float (&#8230;)&lt;/p&gt;


-
&lt;a href="http://arts-numeriques.codedrops.net/-Exemples-" rel="directory"&gt;int&#195;&#169;raction et calcul&lt;/a&gt;


		</description>


 <content:encoded>&lt;img src='http://arts-numeriques.codedrops.net/local/cache-vignettes/L119xH150/arton650-b12af.jpg?1767160577' class='spip_logo spip_logo_right' width='119' height='150' alt=&#034;&#034; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Un script permettant de reposser les pixels avec la souris et sauver un pdf.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Le code prend un portrait de Flaubert, remplacez l'image par la v&#195;&#180;tre.&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;// detruire un dessin import processing.pdf.*; boolean saveOneFrame = false; String image_source=&#034;flaubert.jpg&#034;; ArrayList&lt;pixel&gt; pix; PImage im; float nbx=120.0; float nby=120.0; int zone_influence=15; boolean show_stroke=false; void setup() { im=loadImage(image_source); size(634,800); pix=new ArrayList&lt;pixel&gt;(); for (float px=0;px&lt;width;px+=width/nbx) { for (float py=0;py&lt;height;py+=height/nby) { color c=im.get(int(px), int(py)); if (brightness(c) &lt; 250) { pix.add(new pixel(px, py, c, width/nbx, height/nby)); } } } rectMode(CENTER); } void draw() { if (saveOneFrame == true) { beginRecord(PDF, &#034;Line.pdf&#034;); } background(255); noStroke(); for (int i = 0; i &lt;pix.size(); i++) { pixel cf=pix.get(i); cf.affiche(); cf.choc(); } stroke(255, 0, 0); noFill(); if (saveOneFrame == true) { endRecord(); saveOneFrame = false; } else { ellipse(mouseX, mouseY, zone_influence*2, zone_influence*2); } } void keyPressed() { if (key==' ') { if (show_stroke==false) { show_stroke=true; } else { show_stroke=false; } } if(key == 's'){ saveOneFrame = true; } if (key=='x') { for (int i = 0; i &lt;pix.size(); i++) { pixel cf=pix.get(i); cf.position.x=cf.pox; cf.position.y=cf.poy; } } } class pixel { float tx, ty; float pox, poy; PVector position, deplacement; color c; pixel(float px, float py, color co, float tx, float ty) { pox=px; poy=py; position=new PVector(px, py); deplacement=new PVector(0, 0); c=co; this.tx=tx; this.ty=ty; } void affiche() { if (show_stroke==true) { float dx=mouseX-(position.x); float dy=mouseY-(position.y); stroke(map(dist(position.x, position.y, pox, poy), 0, width/2, 0, 255)); line(pox, poy, position.x, position.y); noStroke(); } fill(c); rect(position.x, position.y, tx, ty); // reduire la vitesse deplacement.div(1.1); position.x+=deplacement.x; position.y+=deplacement.y; } void choc() { float dx=mouseX-(position.x); float dy=mouseY-(position.y); if (abs(dx)&lt;zone_influence &amp;&amp; abs(dy)&lt;zone_influence) { float d=map(dist(position.x, position.y, mouseX, mouseY), 0, 100, 0.1, 1.1); deplacement.x=-dx*d; deplacement.y=-dy*d; } } }&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		
		<enclosure url="http://arts-numeriques.codedrops.net/IMG/zip/particules_image.zip" length="432445" type="application/zip" />
		

	</item>
<item xml:lang="fr">
		<title>Cr&#195;&#169;er un template en html/css pur</title>
		<link>http://arts-numeriques.codedrops.net/Creer-un-template-en-html-css-pur</link>
		<guid isPermaLink="true">http://arts-numeriques.codedrops.net/Creer-un-template-en-html-css-pur</guid>
		<dc:date>2021-03-14T15:23:47Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>St&#233;phane Noel</dc:creator>



		<description>
&lt;p&gt;Lorsqu'on d&#195;&#169;bute, il est difficile de g&#195;&#169;rer la cr&#195;&#169;ation d'un th&#195;&#168;me directement dans un th&#195;&#168;me wordpress : on coupe les fichiers en morceaux, ils sont ex&#195;&#169;cut&#195;&#169;s via la machinerie de Worpress, etc.
&lt;br class='autobr' /&gt;
On peut en fait d&#195;&#169;marrer avec du html pur, et int&#195;&#169;grer ensuite le html dans le th&#195;&#168;me morceau par morceau, ce qui peut &#195;&#170;tre plus facile. Analyser le template &lt;br class='autobr' /&gt;
Il s'agit de transformer un wireframe en une page html/css. &lt;br class='autobr' /&gt;
Prenons donc le wireframe de la page single, la plus simple &#195; (&#8230;)&lt;/p&gt;


-
&lt;a href="http://arts-numeriques.codedrops.net/-Proceder-a-l-integration-d-un-theme-" rel="directory"&gt;Proc&#195;&#169;der &#195; l'int&#195;&#169;gration d'un th&#195;&#168;me&lt;/a&gt;


		</description>


 <content:encoded>&lt;img src='http://arts-numeriques.codedrops.net/local/cache-vignettes/L132xH150/arton649-9ae0d.jpg?1743932072' class='spip_logo spip_logo_right' width='132' height='150' alt=&#034;&#034; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Lorsqu'on d&#195;&#169;bute, il est difficile de g&#195;&#169;rer la cr&#195;&#169;ation d'un th&#195;&#168;me directement dans un th&#195;&#168;me wordpress : on coupe les fichiers en morceaux, ils sont ex&#195;&#169;cut&#195;&#169;s via la machinerie de Worpress, etc.&lt;br class='autobr' /&gt;
On peut en fait d&#195;&#169;marrer avec du html pur, et int&#195;&#169;grer ensuite le html dans le th&#195;&#168;me morceau par morceau, ce qui peut &#195;&#170;tre plus facile.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h2 class=&#034;spip&#034;&gt;Analyser le template&lt;/h2&gt;
&lt;p&gt;Il s'agit de transformer un wireframe en une page html/css.&lt;/p&gt;
&lt;p&gt;Prenons donc le wireframe de la page single, la plus simple &#195; analyser. Il s'agit d'en identifier les diff&#195;&#169;rents morceaux pour aider la stucture du html. On contr&#195;&#180;le que la structure correspond aussi dans la version smartphone.&lt;/p&gt;
&lt;p&gt;&lt;span class='spip_document_1238 spip_documents spip_documents_center'&gt;&lt;img src='http://arts-numeriques.codedrops.net/local/cache-vignettes/L500xH569/gabarit-single-analyse-6f4a2.jpg?1743932072' width='500' height='569' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;La particularit&#195;&#169; de ce site par rapport &#195; un site bootstrap standard est que le titre du site est grand, et que la navigation est plac&#195;&#169;e en dessous du titre du site et pas &#195; sa droite comme c'est massivement le cas. &#195;&#8225;a va nous obliger &#195; une petite adaptation du code.&lt;/p&gt;
&lt;p&gt;Sur base de l'analyse du wireframe, on d&#195;&#169;duit une structure html, que l'on place dans une page avec tous les imports n&#195;&#169;cessaires de bootstrap (css et js pour le menu, plus les ic&#195;&#180;nes &#195; toutes fins utiles).&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		
		<enclosure url="http://arts-numeriques.codedrops.net/IMG/zip/simple_bootstrap_theme_for_wordpress.zip" length="1276154" type="application/zip" />
		

	</item>
<item xml:lang="fr">
		<title>Une requ&#195;&#170;te ajax dans un template</title>
		<link>http://arts-numeriques.codedrops.net/Une-requete-ajax-dans-son-site</link>
		<guid isPermaLink="true">http://arts-numeriques.codedrops.net/Une-requete-ajax-dans-son-site</guid>
		<dc:date>2021-03-08T16:41:32Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>St&#233;phane Noel</dc:creator>



		<description>
&lt;p&gt;Charger un contenu en simple clic, sans changer de page, peut &#195;&#170;tre cool. Voici quelques bouts de code pour r&#195;&#169;ussir &#195;&#167;a. &lt;br class='autobr' /&gt; Plusieurs morceaux de code La difficult&#195;&#169; des requ&#195;&#170;tes en ajax est qu'elles sont constitu&#195;&#169;es de plusieurs morceaux de code : du html, du javascript, du php et du html encore. Pour ne pas se perdre il faut comprendre la fonction de ces diff&#195;&#169;rents &#195;&#169;l&#195;&#169;ments. &lt;br class='autobr' /&gt;
Un bouton Le premier &#195;&#169;l&#195;&#169;ments est un bouton en html, associ&#195;&#169; &#195; une fonction javascript charge l'article (&#8230;)&lt;/p&gt;


-
&lt;a href="http://arts-numeriques.codedrops.net/-Creation-de-theme-avance-" rel="directory"&gt;Cr&#195;&#169;ation de th&#195;&#168;me avanc&#195;&#169;&lt;/a&gt;


		</description>


 <content:encoded>&lt;img src='http://arts-numeriques.codedrops.net/local/cache-vignettes/L150xH113/arton648-f0ea9.jpg?1743932072' class='spip_logo spip_logo_right' width='150' height='113' alt=&#034;&#034; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Charger un contenu en simple clic, sans changer de page, peut &#195;&#170;tre cool. Voici quelques bouts de code pour r&#195;&#169;ussir &#195;&#167;a.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h2 class=&#034;spip&#034;&gt;Plusieurs morceaux de code&lt;/h2&gt;
&lt;p&gt;La difficult&#195;&#169; des requ&#195;&#170;tes en ajax est qu'elles sont constitu&#195;&#169;es de plusieurs morceaux de code : du html, du javascript, du php et du html encore.&lt;br class='autobr' /&gt;
Pour ne pas se perdre il faut comprendre la fonction de ces diff&#195;&#169;rents &#195;&#169;l&#195;&#169;ments.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Un bouton&lt;/strong&gt;&lt;br class='autobr' /&gt;
Le premier &#195;&#169;l&#195;&#169;ments est un bouton en html, associ&#195;&#169; &#195; une fonction javascript&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;button onclick=&#034;charge_article(52)&#034; class=&#034;btn btn-sm btn-primary text-light&#034;&gt;charge l'article 52&lt;/button&gt; &lt;div id=&#034;conteneur&#034;&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ce bouton appelle la fonction &#034;charge_article&#034; en lui envoyant l'argument &#034;52&#034;, qui est l'id de l'article que nous voulons charger. Remplacez-le par l'id d'un article existant, ou dans une boucle wordpress, par le code php &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;?php the_ID(); ?&gt;&lt;/code&gt;.&lt;br class='autobr' /&gt;
Le div avec l'id #conteneur est destin&#195;&#169; &#195; recevoir le r&#195;&#169;sultat de la requ&#195;&#170;te.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Une fonction javascript&lt;/strong&gt;&lt;br class='autobr' /&gt;
Nous allons maintenant &#195;&#169;crire la fonction javascript qui re&#195;&#167;oit l'appel de fonction, dans un fichier js charg&#195;&#169; dans le site ou directement 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;&lt;script&gt; function charge_article(id_du_post){ jQuery.ajax({ type: 'POST', url: '&lt;?php echo admin_url('admin-ajax.php');?&gt;', dataType: &#034;html&#034;, data: { action : 'get_article', post_id: id_du_post }, success: function( reponse ) { jQuery( '#conteneur' ).html( reponse ); } }); } &lt;/script&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Cette fonction r&#195;&#169;cup&#195;&#168;re l'id, puis fait une requ&#195;&#170;te &lt;a href=&#034;https://fr.wikipedia.org/wiki/Ajax_(informatique)&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;ajax&lt;/a&gt;. Javascript va charger une page pr&#195;&#169;sente dans la machinerie de Wordpress, une page sp&#195;&#169;cialement d&#195;&#169;di&#195;&#169;e &#195; cet usage.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Une fonction php&lt;/strong&gt;&lt;br class='autobr' /&gt;
La fonction javascript appelle une fonction php du nom de charger_article() et r&#195;&#169;cup&#195;&#169;rer l'id du post.&lt;br class='autobr' /&gt;
Cette fonction doit &#195;&#170;tre plac&#195;&#169;e dans le fichier &lt;strong&gt;functions.php&lt;/strong&gt; du th&#195;&#168;me !&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 get_article() { // construire la requ&#195;&#170;te $args = array( 'post_type' =&gt; 'post', 'p' =&gt; $_REQUEST[&#034;post_id&#034;], ); // envoyer $resultat = new WP_Query( $args ); $reponse = ''; // traiter la requ&#195;&#170;te, un seul r&#195;&#169;sultat ici if ( $resultat-&gt;have_posts() ) { while ( $resultat-&gt;have_posts() ) { $resultat-&gt;the_post(); $reponse .= get_template_part('morceaux/ajax_article'); } } else { $reponse .= &#034;rien re&#195;&#167;u&#034;; // ou faire autre chose } echo $reponse; exit; // fin de la requ&#195;&#170;te } // rendre la requ&#195;&#170;te disponible pour les utilisateur logu&#195;&#169;s ou non logu&#195;&#169;s add_action('wp_ajax_get_article', 'get_article'); add_action('wp_ajax_nopriv_get_article', 'get_article');&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Un template part&lt;/strong&gt;&lt;br class='autobr' /&gt;
Ce n'est pas encore fini ! Ce code fait une requ&#195;&#170;te sur la base de donn&#195;&#169;e, et pr&#195;&#169;pare une boucle wordpress pr&#195;&#170;te &#195; l'emploi. Elle appelle alors un template part, un morceau de fichier permettant d'entourer les &#195;&#169;l&#195;&#169;ments tir&#195;&#169;s de la base de donn&#195;&#169;e d'un code html permettant son affichage en accord avec le reste du site.&lt;br class='autobr' /&gt;
En voici un exemple simple :&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 the_post_thumbnail('jumbo', array( 'class' =&gt; 'mb-3' )); ?&gt; &lt;h2&gt;&lt;?php the_title(); ?&gt;&lt;/h2&gt; &lt;div class=&#034;text&#034;&gt;&lt;?php the_content(); ?&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Il affiche l'image mise en avant, le titre et le texte complet, avec un peu de html. On peut &#195;&#169;videmment y mettre tout ce qui est possible dans une loop wordpress.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;C'est fait !&lt;/h2&gt;
&lt;p&gt;Chacun de ces fichiers est &#195;&#169;videmment am&#195;&#169;nageable selon les besoins, mais la logique est pos&#195;&#169;e.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Fichiers de base</title>
		<link>http://arts-numeriques.codedrops.net/Fichiers-de-base</link>
		<guid isPermaLink="true">http://arts-numeriques.codedrops.net/Fichiers-de-base</guid>
		<dc:date>2021-03-08T00:25:16Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>St&#233;phane Noel</dc:creator>



		<description>
&lt;p&gt;Ce th&#195;&#168;me est en cours de d&#195;&#169;veloppement, voici une version 0.2 bas&#195;&#169;e sur Bootstrap 5. Templates &lt;br class='autobr' /&gt;
Le th&#195;&#168;me comporte les templates :
&lt;br class='autobr' /&gt;
&#8211; home.php
&lt;br class='autobr' /&gt;
&#8211; single.php
&lt;br class='autobr' /&gt;
&#8211; page.php
&lt;br class='autobr' /&gt;
&#8211; archive.php &#195;&#8240;l&#195;&#169;ments embarqu&#195;&#169;s &lt;br class='autobr' /&gt;
&#8211; Bootstrap version 5 beta2
&lt;br class='autobr' /&gt;
&#8211; les ic&#195;&#180;nes de Bootstrap 5
&lt;br class='autobr' /&gt;
&#8211; la police Rubik en light, regular, medium et bold Extras &lt;br class='autobr' /&gt;
&#8211; des exemples de &#034;templates parts&#034;
&lt;br class='autobr' /&gt;
&#8211; un exemple de template alternatif pour les articles &lt;br class='autobr' /&gt;
&#8211; une fonction convertissant les menus de wordpress en menu compatible (&#8230;)&lt;/p&gt;


-
&lt;a href="http://arts-numeriques.codedrops.net/-Wordpress-par-l-exemple-le-theme-theme_base-" rel="directory"&gt;Wordpress par l'exemple : le th&#195;&#168;me theme_base&lt;/a&gt;


		</description>


 <content:encoded>&lt;img src='http://arts-numeriques.codedrops.net/local/cache-vignettes/L150xH113/arton647-d7599.jpg?1743932072' class='spip_logo spip_logo_right' width='150' height='113' alt=&#034;&#034; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Ce th&#195;&#168;me est en cours de d&#195;&#169;veloppement, voici une version 0.2 bas&#195;&#169;e sur Bootstrap 5.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h2 class=&#034;spip&#034;&gt;Templates&lt;/h2&gt;
&lt;p&gt;Le th&#195;&#168;me comporte les templates :
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; home.php
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; single.php
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; page.php
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; archive.php&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;&#195;&#8240;l&#195;&#169;ments embarqu&#195;&#169;s&lt;/h2&gt;
&lt;p&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; Bootstrap version 5 beta2
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; les ic&#195;&#180;nes de Bootstrap 5
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; la police Rubik en light, regular, medium et bold&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Extras&lt;/h2&gt;
&lt;p&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; des exemples de &#034;templates parts&#034;
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; un exemple de template alternatif pour les articles &lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; une fonction convertissant les menus de wordpress en menu compatible avec Bootstrap.
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; une am&#195;&#169;lioration de bootstrap : les tailles de margin, padding, gouti&#195;&#168;res sont cod&#195;&#169;es en taille 6, 7, 8 et 9, permettant par exemple des paddings et margin en m-6 ou pe-7 par exemple&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Attention&lt;/h2&gt;
&lt;p&gt;Bootstrap 5 modifie certains noms de classe : mr-5 devient me-5 par exemple. Se reporter &lt;a href=&#034;https://getbootstrap.com/docs/5.0/getting-started/introduction/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;&#195; la documentation officielle&lt;/a&gt; pour ne pas avoir de mauvaise surprise.&lt;br class='autobr' /&gt;
De m&#195;&#170;me, jQuery a &#195;&#169;t&#195;&#169; abndonn&#195;&#169; pour cette version, ce qui modifie certains comportements javascript.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		
		<enclosure url="http://arts-numeriques.codedrops.net/IMG/zip/theme_base.zip" length="1196227" type="application/zip" />
		

	</item>
<item xml:lang="fr">
		<title>Pr&#195;&#169;parer une structure et un wireframe</title>
		<link>http://arts-numeriques.codedrops.net/Preparer-une-structure-et-un-wireframe</link>
		<guid isPermaLink="true">http://arts-numeriques.codedrops.net/Preparer-une-structure-et-un-wireframe</guid>
		<dc:date>2021-02-28T21:36:18Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>St&#233;phane Noel</dc:creator>



		<description>
&lt;p&gt;Un th&#195;&#168;me wordpress se r&#195;&#169;fl&#195;&#169;chit sur base de templates, on l'a vu. Construire un th&#195;&#168;me demande donc d'avoir compris les diff&#195;&#169;rents templates accessibles et d'en jouer pour r&#195;&#169;pondre &#195; la demande. A partir de l&#195; , on r&#195;&#169;fl&#195;&#169;chit &#195; la structure de chacun de ces templates, g&#195;&#169;n&#195;&#169;ralement sur base de wireframes avec du papier et un stylo. &lt;br class='autobr' /&gt; Identifier les besoins Lors de r&#195;&#169;unions pr&#195;&#169;paratoire, il faut &#195;&#169;videmment identifier le besoin auquel r&#195;&#169;pondra le site. Typiquement, notre site est (&#8230;)&lt;/p&gt;


-
&lt;a href="http://arts-numeriques.codedrops.net/-Proceder-a-l-integration-d-un-theme-" rel="directory"&gt;Proc&#195;&#169;der &#195; l'int&#195;&#169;gration d'un th&#195;&#168;me&lt;/a&gt;


		</description>


 <content:encoded>&lt;img src='http://arts-numeriques.codedrops.net/local/cache-vignettes/L134xH150/arton646-710b7.jpg?1743932073' class='spip_logo spip_logo_right' width='134' height='150' alt=&#034;&#034; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Un th&#195;&#168;me wordpress se r&#195;&#169;fl&#195;&#169;chit sur base de templates, on l'a vu. Construire un th&#195;&#168;me demande donc d'avoir compris les diff&#195;&#169;rents templates accessibles et d'en jouer pour r&#195;&#169;pondre &#195; la demande. A partir de l&#195; , on r&#195;&#169;fl&#195;&#169;chit &#195; la structure de chacun de ces templates, g&#195;&#169;n&#195;&#169;ralement sur base de wireframes avec du papier et un stylo.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h2 class=&#034;spip&#034;&gt;Identifier les besoins&lt;/h2&gt;
&lt;p&gt;Lors de r&#195;&#169;unions pr&#195;&#169;paratoire, il faut &#195;&#169;videmment identifier le besoin auquel r&#195;&#169;pondra le site. Typiquement, notre site est un portfolio de graphiste.&lt;br class='autobr' /&gt;
On aura besoin de :
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; d&#195;&#169;finir les comp&#195;&#169;tences de celui-ci, &lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; de montrer l'activit&#195;&#169; r&#195;&#169;cente, &lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; de montrer des productions li&#195;&#169;es aux diff&#195;&#169;rents champs de comp&#195;&#169;tence, &lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; permettre le contact via un formulaire,
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; renvoyer vers les r&#195;&#169;seaux sociaux&lt;br class='autobr' /&gt;
Le design du site doit &#195;&#170;tre en accord avec les choix esth&#195;&#169;tiques que d&#195;&#169;fend notre graphiste. Ici un design simple, voire minimal, mais orient&#195;&#169; sur le contenu et &#195;&#169;l&#195;&#169;gant.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Identifier la structure&lt;/h2&gt;
&lt;p&gt;Un site poss&#195;&#168;de toujours une page d'entr&#195;&#169;e, qui est en g&#195;&#169;n&#195;&#169;ral la page la plus complexe &#195; construire, puisqu'elle contiendra - en plus d'un header et d'un footer - diff&#195;&#169;rents contenus pioch&#195;&#169;s dans la base de donn&#195;&#169;e.&lt;/p&gt;
&lt;p&gt;Typiquement : la baseline du site, quelques productions r&#195;&#169;centes mises en avant, un certain nombre de contenus li&#195;&#169;s &#195; des cat&#195;&#169;gories pr&#195;&#169;cises.&lt;/p&gt;
&lt;p&gt;A partir de cette page, le menu et les diff&#195;&#169;rents &#195;&#169;l&#195;&#169;ments de cette page vont pointer vers des contenus sp&#195;&#169;cifiques, typiquement des pages, des posts et des cat&#195;&#169;gories.&lt;/p&gt;
&lt;p&gt;Pr&#195;&#169;parer les wireframes de ces diff&#195;&#169;rentes page sera donc la premi&#195;&#168;re mission.&lt;/p&gt;
&lt;p&gt;Voici une mise en page assez simple.&lt;/p&gt;
&lt;p&gt;On commence par une vue du template affichant un article :&lt;/p&gt;
&lt;p&gt;&lt;span class='spip_document_1235 spip_documents spip_documents_center'&gt;&lt;img src='http://arts-numeriques.codedrops.net/local/cache-vignettes/L500xH569/gabarit-single-f196e.jpg?1743932073' width='500' height='569' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Puis on r&#195;&#169;fl&#195;&#169;chit aux autres gabarits principaux : le template des cat&#195;&#169;gories et la page d'entr&#195;&#169;e du site.&lt;/p&gt;
&lt;div class=&#034;galerie_embed&#034;&gt; &lt;ul class=&#034;galerie_liste flexit clearfix&#034;&gt; &lt;li&gt; &lt;a href=&#034;https://arts-numeriques.codedrops.net/IMG/jpg/gabarit-categorie.jpg&#034; class=&#034;fancybox&#034; rel=&#034;rgp1236,1237&#034; alt=&#034;photo GP&#034; &gt; &lt;img src='http://arts-numeriques.codedrops.net/local/cache-vignettes/L160xH200/a1771fecf5c58a9b5615a2e65a7574-ef97c.jpg?1727084478' width='160' height='200' /&gt; &lt;/a&gt; &lt;/li&gt; &lt;li&gt; &lt;a href=&#034;https://arts-numeriques.codedrops.net/IMG/jpg/gabarit-entree.jpg&#034; class=&#034;fancybox&#034; rel=&#034;rgp1236,1237&#034; alt=&#034;photo GP&#034; &gt; &lt;img src='http://arts-numeriques.codedrops.net/local/cache-vignettes/L160xH200/2f84115d871941e2f6a607f0c06129-87cf9.jpg?1727084478' width='160' height='200' /&gt; &lt;/a&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/div&gt;
&lt;p&gt;(L'id&#195;&#169;e ici est de proposer un premier cas d'int&#195;&#169;gration et de d&#195;&#169;veloppement, il n'y a rien de compliqu&#195;&#169; &#195; r&#195;&#169;aliser en Wordpress donc)&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Identifier les templates&lt;/h2&gt;
&lt;p&gt;Ce site &#195;&#169;tant simple, il va demander le d&#195;&#169;veloppement des templates de base de Wordpress que sont
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; home.php : le template de la page d'entr&#195;&#169;e
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; single.php : le template des articles (post)
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; page.php : le template des page (typiquement une page &#034;a propos&#034;
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; archive.php : le template par cat&#195;&#169;gorie&lt;/p&gt;
&lt;p&gt;On doit alors r&#195;&#169;pondre &#195; quelques question sp&#195;&#169;cifique au web :&lt;br class='autobr' /&gt;
sur les &#195;&#169;crans larges, comment se disposent les contenus ?
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; occupent-ils tous l'espace de la page de gauche &#195; droite ?
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; limitent-ils leur taille en se centrant dans la page ?
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; limitent-ils leur taille en restant sur la gauche ?&lt;/p&gt;
&lt;p&gt;Quelques d&#195;&#169;tails graphiques ou sp&#195;&#169;cificit&#195;&#169; de navigation peuvent alors &#195;&#170;tre pens&#195;&#169;s. Typiquement :
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; un choix radical de typo ou de couleur,
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; une disposition de la navigation particuli&#195;&#168;re (dans l'espace, dans la mani&#195;&#168;re dont elle apparait (survol, clic, etc)
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; un acc&#195;&#168;s aux infos particulier (au hasard, muet, ou au contraire par saturation)
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; un m&#195;&#169;thode d'affichage des images (tr&#195;&#168;s grandes, tr&#195;&#168;s petites, coloris&#195;&#169;es, avec un effet d'apparition/disparition, etc)&lt;/p&gt;
&lt;p&gt;Trop de d&#195;&#169;tails nuisent &#195; la lisibilit&#195;&#169; et rendent le site brouillon, voire compliqu&#195;&#169; &#195; maintenir dans le temps. Tout le monde n'a pas le temps de red&#195;&#169;velopper un site tous les 6 mois, faites des choix qui peuvent tenir un an ou deux au moins. &#195;&#8240;vitez les trucs &#195; la mode, ils seront d&#195;&#169;mod&#195;&#169;s rapidement.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>



</channel>

</rss>
