<?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=41&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>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>
<item xml:lang="fr">
		<title>Requ&#195;&#170;tes GET et POST</title>
		<link>http://arts-numeriques.codedrops.net/Requetes-GET-et-POST</link>
		<guid isPermaLink="true">http://arts-numeriques.codedrops.net/Requetes-GET-et-POST</guid>
		<dc:date>2021-02-01T11:51:54Z</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;Pour comprendre le fonctionnement des CMS, il est n&#195;&#169;cessaire de comprendre ce qu'est une requ&#195;&#170;te en GET, et ses d&#195;&#169;riv&#195;&#169;s contemporains. &lt;br class='autobr' /&gt; Un CMS est un logiciel install&#195;&#169; sur un serveur, qui va recevoir des requ&#195;&#170;tes (la demande de voir certains contenus) et renvoyer les contenus correspondants, quand c'est possible et autoris&#195;&#169;. Par d&#195;&#169;faut, un CMS montre le contenu de la page d'entr&#195;&#169;e du site, ensuite, selon les requ&#195;&#170;tes, il va afficher telle ou telle page sp&#195;&#169;cifique : un article, (&#8230;)&lt;/p&gt;


-
&lt;a href="http://arts-numeriques.codedrops.net/-Introduction-89-" rel="directory"&gt;Introduction&lt;/a&gt;


		</description>


 <content:encoded>&lt;img src='http://arts-numeriques.codedrops.net/local/cache-vignettes/L150xH76/arton643-1f2d8.png?1743932073' class='spip_logo spip_logo_right' width='150' height='76' alt=&#034;&#034; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Pour comprendre le fonctionnement des CMS, il est n&#195;&#169;cessaire de comprendre ce qu'est une requ&#195;&#170;te en GET, et ses d&#195;&#169;riv&#195;&#169;s contemporains.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Un CMS est un logiciel install&#195;&#169; sur un serveur, qui va recevoir des requ&#195;&#170;tes (la demande de voir certains contenus) et renvoyer les contenus correspondants, quand c'est possible et autoris&#195;&#169;. Par d&#195;&#169;faut, un CMS montre le contenu de la page d'entr&#195;&#169;e du site, ensuite, selon les requ&#195;&#170;tes, il va afficher telle ou telle page sp&#195;&#169;cifique : un article, la biographie d'un auteur, une liste de pages correspondant &#195; une cat&#195;&#169;gorie ou une recherche, etc.&lt;/p&gt;
&lt;p&gt;Comment le CMS peut il identifier la demande qui lui est faite ? Il s'appuie sur l'adresse qui lui est envoy&#195;&#169;e. Lorsqu'on demande l'acc&#195;&#168;s &#195; la page principale d'un site, seule l'adresse web suffit, comme&lt;br class='autobr' /&gt;
&lt;a href=&#034;https://arts-numeriques.codedrops.net/&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://arts-numeriques.codedrops.net/&lt;/a&gt;&lt;br class='autobr' /&gt;
Mais si on veut acc&#195;&#169;der &#195; un contenu particulier, l'adresse devient plus longue&lt;br class='autobr' /&gt;
&lt;a href=&#034;https://arts-numeriques.codedrops.net/-CMS-Wordpress-&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://arts-numeriques.codedrops.net/-CMS-Wordpress-&lt;/a&gt;&lt;br class='autobr' /&gt;
Comme on le voit ici, il y a un ensemble de lettre en plus dans l'adresse, et cet ensemble est analys&#195;&#169; par le logiciel pour savoir quel contenu est demand&#195;&#169;. Sa structure est donc pr&#195;&#169;cise et un mauvais copier coller put envoyer sur une page d'erreur.&lt;/p&gt;
&lt;p&gt;L'adresse n'est donc pas une simple adresse mais une requ&#195;&#170;te qui passe dans l'adresse. On dit qu'elle est alors en GET, explicitement pr&#195;&#169;sente dans l'adresse, ce qui permet sauvegarder cette adresse ou la donner &#195; quelqu'un d'autre : en copiant et collant cette adresse, on peut retrouver exactement la m&#195;&#170;me page par la suite.&lt;/p&gt;
&lt;p&gt;Ce type de requ&#195;&#170;te a &#195;&#169;videmment ses limites : il est d&#195;&#169;conseill&#195;&#169; de g&#195;&#169;rer un mot de passe dans une requ&#195;&#170;te en GET, puisque son piratage serait trop simple.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;La requ&#195;&#170;te en GET&lt;/h2&gt;
&lt;p&gt;Les origines de la requ&#195;&#170;te en GET est l'usage des formulaire. Pour le comprendre, pla&#195;&#167;ons ce code html dans une page sur un serveur 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;&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 requ&#195;&#170;te GET&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;h1&gt;Recevoir une information en GET&lt;/h1&gt; &lt;h2&gt;J'ai re&#195;&#167;u ceci:&lt;/h2&gt; &lt;div class=&#034;contenu_requete&#034;&gt; &lt;?php print_r($_GET); ?&gt; &lt;/div&gt; &lt;/body&gt; &lt;/html&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&#195;&#8225;a donne &#195;&#167;a.&lt;br class='autobr' /&gt;
&lt;span class='spip_document_1223 spip_documents spip_documents_center'&gt;&lt;img src='http://arts-numeriques.codedrops.net/local/cache-vignettes/L500xH185/get1-e5e84.jpg?1743932073' width='500' height='185' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;En fait, la fonction print_r($_GET) ; permet d'afficher ce que le serveur a re&#195;&#167;u comme requ&#195;&#170;te en get, c'est &#195; dire ce qu'il a re&#195;&#167;u dans l'adresse en plus de l'adresse du serveur lui-m&#195;&#170;me. Actuellement, en pointant sur l'adresse de la page, il n'y a rien dans $_GET, qui est une variable cr&#195;&#169;&#195;&#169;e par le serveur contenant les informations r&#195;&#169;cup&#195;&#169;r&#195;&#169;es dans l'adresse de la page.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ajouter une requ&#195;&#170;te&lt;/strong&gt;&lt;br class='autobr' /&gt;
Si on ajoute dans l'adresse de la page ceci : &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;?truc=essai&lt;/code&gt;&lt;br class='autobr' /&gt;
On obtient cela :&lt;/p&gt;
&lt;p&gt;&lt;span class='spip_document_1224 spip_documents spip_documents_center'&gt;&lt;img src='http://arts-numeriques.codedrops.net/local/cache-vignettes/L500xH170/get2-f5df9.jpg?1743932073' width='500' height='170' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;le serveur envoie une variable tableau (une variable contenant une liste d'information et pas une seule) d'un type particulier, qu'on appelle tableau associatif : c'est une liste de cl&#195;&#169;s (ici truc par exemple) contenant chacune une valeur (ici &#034;truc&#034; contient &#034;essai&#034;).&lt;/p&gt;
&lt;p&gt;On peut donc envoyer via l'adresse plusieurs informations, et c'est souvent le cas, via l'association cle-valeur, comme ceci :&lt;br class='autobr' /&gt;
&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;?truc=essai&amp;machin=info&lt;/code&gt;&lt;br class='autobr' /&gt;
Remaquez que le point d'interrogation s&#195;&#169;pare l'adresse des diff&#195;&#169;rents &#195;&#169;l&#195;&#169;ments de la requ&#195;&#170;te, et que chaque duo cl&#195;&#169;/valeur est s&#195;&#169;par&#195;&#169; par un esperluette (&amp;).&lt;/p&gt;
&lt;p&gt;Le r&#195;&#169;sultat est ceci :&lt;br class='autobr' /&gt;
&lt;span class='spip_document_1225 spip_documents spip_documents_center'&gt;&lt;img src='http://arts-numeriques.codedrops.net/local/cache-vignettes/L500xH165/get3-d7841.jpg?1743932073' width='500' height='165' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Installer Wordpress sur le serveur GR3</title>
		<link>http://arts-numeriques.codedrops.net/Installer-Wordpress-sur-le-serveur-GR3</link>
		<guid isPermaLink="true">http://arts-numeriques.codedrops.net/Installer-Wordpress-sur-le-serveur-GR3</guid>
		<dc:date>2020-03-18T10:50:25Z</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;D&#195;&#169;ployer Wordpress sur un serveur distant est une op&#195;&#169;ration l&#195;&#169;g&#195;&#168;rement diff&#195;&#169;rente d'une installation sur MAMP. Plus simple, en fait, car vous n'avez pas a cr&#195;&#169;er d'acc&#195;&#168;s, c'est le webmaster - moi - qui le fait pour vous. &lt;br class='autobr' /&gt; Disposer des informations correctes Wordpress necessite une base de donn&#195;&#169;e, en mySql, et les codes d'acc&#195;&#168;s &#195; cette base de donn&#195;&#169;e, sans quoi il est impossible de le d&#195;&#169;ployer. J'ai cr&#195;&#169;&#195;&#169; ces acc&#195;&#168;s pour vous, et vous devez en disposer pour continuer ce tutorial. (&#8230;)&lt;/p&gt;


-
&lt;a href="http://arts-numeriques.codedrops.net/-Introduction-89-" rel="directory"&gt;Introduction&lt;/a&gt;


		</description>


 <content:encoded>&lt;img src='http://arts-numeriques.codedrops.net/local/cache-vignettes/L150xH119/arton592-55ddf.jpg?1743932073' class='spip_logo spip_logo_right' width='150' height='119' alt=&#034;&#034; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;D&#195;&#169;ployer Wordpress sur un serveur distant est une op&#195;&#169;ration l&#195;&#169;g&#195;&#168;rement diff&#195;&#169;rente d'une installation sur MAMP. Plus simple, en fait, car vous n'avez pas a cr&#195;&#169;er d'acc&#195;&#168;s, c'est le webmaster - moi - qui le fait pour vous.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h2 class=&#034;spip&#034;&gt;Disposer des informations correctes&lt;/h2&gt;
&lt;p&gt;Wordpress necessite une base de donn&#195;&#169;e, en mySql, et les codes d'acc&#195;&#168;s &#195; cette base de donn&#195;&#169;e, sans quoi il est impossible de le d&#195;&#169;ployer.&lt;br class='autobr' /&gt;
J'ai cr&#195;&#169;&#195;&#169; ces acc&#195;&#168;s pour vous, et vous devez en disposer pour continuer ce tutorial. Si ce n'est pas le cas, mailez-moi.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Acc&#195;&#169;der &#195; la page d'installation&lt;/h2&gt;
&lt;p&gt;Pour &#195;&#169;viter les probl&#195;&#168;mes d&#195; &#187;s &#195; un mauvais upload, j'ai moi-m&#195;&#170;me d&#195;&#169;pos&#195;&#169; le dossier de wordpress sur vos espaces d'h&#195;&#169;bergement. Un dossier se trouve donc sur votre dossier de travail sur le site gr3, et il porte le nom de portfolio, au premier niveau de votre espace. V&#195;&#169;rifiez &#195;&#169;ventuellement par FTP si vous avez un doute.&lt;/p&gt;
&lt;p&gt;Si vous acc&#195;&#169;dez &#195; ce dossier via votre navigateur pr&#195;&#169;f&#195;&#169;r&#195;&#169;, vous serez accueilli par la page d'installation par d&#195;&#169;faut de Wordpress.&lt;/p&gt;
&lt;p&gt;&lt;span class='spip_document_1026 spip_documents spip_documents_center'&gt;&lt;img src='http://arts-numeriques.codedrops.net/local/cache-vignettes/L500xH396/wordpress-entree1-f8a31.jpg?1743932074' width='500' height='396' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Si vous avez re&#195;&#167;u un mail de ma part, vous disposez de ces informations. Vous pouvez aller &#195; l'&#195;&#169;cran suivant.&lt;/p&gt;
&lt;p&gt;&lt;span class='spip_document_1027 spip_documents spip_documents_center'&gt;&lt;img src='http://arts-numeriques.codedrops.net/local/cache-vignettes/L500xH405/wordpress-entree2-5a517.jpg?1743932074' width='500' height='405' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Le nom de la base de donn&#195;&#169;es et l'identifiant sont identique dans notre cas. Ils commencent par esaconnection_ suivi d'un chiffre.&lt;br class='autobr' /&gt;
Le mot de passe, ben c'est le mot de passe.&lt;br class='autobr' /&gt;
L'adresse de la base de donn&#195;&#169;e est un mot commen&#195;&#167;ant par sql suivi d'un chiffre.&lt;br class='autobr' /&gt;
Le pr&#195;&#169;fixe ne doit pas &#195;&#170;tre chang&#195;&#169;, laissez &#034;wp_&#034;.&lt;/p&gt;
&lt;p&gt;Une fois que vous avez envoy&#195;&#169; l'information, Wordpress v&#195;&#169;rifie l'information et signale un &#195;&#169;ventuel probl&#195;&#168;me. V&#195;&#169;rifiez dans ce cas les informations et les champs, et si le probl&#195;&#168;me persiste, envoyez moi un mail, il se peut que je me sois tromp&#195;&#169; lors des multiples copier-coller que j'ai d&#195; &#187; r&#195;&#169;aliser pour cr&#195;&#169;er vos acc&#195;&#168;s.&lt;/p&gt;
&lt;p&gt;L'&#195;&#169;cran suivant vous permettra de cr&#195;&#169;er vos acc&#195;&#168;s au back-office de Wordpress.&lt;br class='autobr' /&gt;
ATTENTION ! Cette fois les acc&#195;&#168;s sont en ligne, et pas sur MAMP. Il faut donc que vous utilisiez un mot de passe un peu costaud, car les tentatives d'intrusion sur les sites en Wordpress est une r&#195;&#169;alit&#195;&#169;. Des bots essaient r&#195;&#169;guli&#195;&#168;rement d'acc&#195;&#169;der au back-office en utilisant les mot de passe les plus courants. Trouvez donc un vrai mot de passe dont vous vous souviendrez ! La proc&#195;&#169;dure de re-cr&#195;&#169;ation de mot de passe pourra &#195;&#170;tre utilis&#195;&#169;e si vous perdez vos acc&#195;&#168;s, mais bon, autant faire &#195;&#167;a bien.&lt;/p&gt;
&lt;p&gt;Une fois ceci r&#195;&#169;alis&#195;&#169;, il ne reste plus qu'&#195; cr&#195;&#169;er les contenus, choisir un th&#195;&#168;me, bref, bosser !&lt;/p&gt;
&lt;p&gt;Je reste &#195; votre disposition en cas de probl&#195;&#168;me technique.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>



</channel>

</rss>
