Foire à Yancilane

Un blog pour tous, tous sur un blog.
2009 7
mars

Personnaliser les archives temporelles de Wordpress

WordpressComme vous le savez déjà, mon blog est construit sur la plateforme Wordpress. Grâce au (très bon) tutoriel proposé par Maigret, j’avais déjà mis en place la page « Blogmap » qui affiche les archives des articles par catégorie, en plus des archives chronologiques proposées par Wordpress.

A propos de ces archives chronologiques, elles correspondent en général au fichier archive.php de votre thème Wordpress. On remarque vite que les articles sont listés avec un extrait voire l’intégralité de leur contenu, ce qui les distingue peu des articles standards qu’on parcourt en temps normal dans un blog. Personnellement, il me suffit de voir le titre d’un article pour comprendre son contenu (à condition que les titres soient bien choisis, sinon je zappe…)  et j’aime voir des archives dont je peux parcourir d’un trait le contenu.

L’autre point qui m’imposait un changement, est l’inévitable accumulation de ma rubrique « Archives » (dressée par mois) dans la sidebar. Une des solutions serait de faire migrer les archives vers une page et opter pour certains plugins (SRG Clean Archives, Simple Yearly Archive…) comme je l’ai fait pour la blogmap, mais cela aurait engendré un déséquilibre visuel entre la division du contenu et la sidebar (qui est déjà suffisamment vide comme ça). L’autre est de regrouper les archives par années. Mais comme chaque page affiche un nombre limité d’articles, la navigation risque d’être très laborieuse pour le lecteur…

Alors pour trouver un compromis, mon idée a été de modifier ce fichier archive.php de manière à afficher une liste de titres d’articles. Ainsi, chaque catégorie, tag, mois ou année est intégralement visible sur une page.

Voici le code à mettre dans la division du contenu (nommée « content » chez moi) :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php $post = $posts[0]; // Hack. Set $post so that the_date() works.//		
/* If this is a category archive */ if (is_category()) { ?>
<h1>
Archive pour la cat&eacute;gorie &#8216;<?php single_cat_title(); ?>
&#8217;</h1>
<?php $current_cat = single_cat_title("", false);
query_posts("showposts=300&category_name=$current_cat&order=ASC");
/* If this is a tag archive */ } elseif (is_tag()) { ?>
<h1>
Archive pour le th&egrave;me &#8216;<?php single_tag_title(); ?>&#8217;
</h1>
<?php $current_tag = single_tag_title("", false);
query_posts("showposts=300&tag=$current_tag&order=ASC");
/* If this is a monthly archive */ } elseif (is_month()) { ?>
<h1>Archive pour <?php the_time('F Y'); ?></h1>
<?php 
query_posts("showposts=300&monthnum=$monthnum&year=$year&order=ASC");
/* If this is a yearly archive */ } elseif (is_year()) { ?>
<h1>Archive pour <?php the_time('Y'); ?></h1>
<?php query_posts("showposts=300&year=$year&order=ASC");
/* If this is a paged archive */ 
} elseif (isset($_GET['paged']) && !empty($_GET['paged'])) { ?>
<h1>Archives du blog</h1>
<?php query_posts("showposts=300&order=ASC");
}
if (have_posts()) : 
if (is_year()) { ?>
<ul>
<?php while (have_posts()) : the_post(); ?>
<li style="font-weight:normal !important;"><?php the_time('j F') ?> : 
<a href="<?php the_permalink() ?>"><?php the_title(); ?></a> - 
<?php echo $post->comment_count ?> Commentaire(s)</li>
<?php endwhile; ?>
</ul>
<?php } elseif (is_month()) { ?>
<ul>
<?php while (have_posts()) : the_post(); ?>
<li style="font-weight:normal !important;"><?php the_time('j') ?> : 
<a href="<?php the_permalink() ?>"><?php the_title(); ?></a> - 
<?php echo $post->comment_count ?> Commentaire(s)</li>
<?php endwhile; ?>
</ul>
<?php } elseif ( (isset($_GET['paged']) && !empty($_GET['paged']))
|| ((is_category()) || (is_tag())) ) { ?>
<ul>
<?php while (have_posts()) : the_post(); ?>
<li style="font-weight:normal !important;"><?php the_time('j F Y') ?> : 
<a href="<?php the_permalink() ?>"><?php the_title(); ?></a> - 
<?php echo $post->comment_count ?> Commentaire(s)</li>
<?php endwhile; ?>
</ul>
<?php } else { ?>
<p><?php _e('D&eacute;sol&eacute;, aucun article ne r&eacute;pond
&acute; vos cri&egrave;res.'); ?></p>
<?php } endif; ?>

A noter que le nombre d’articles à afficher « showposts » est à augmenter si certaines sections de votre blog contiennent un nombre élevé d’articles.

Ne maîtrisant pas encore parfaitement le langage PHP, il est fort probable que ce code puisse être amélioré. Toute suggestion est la bienvenue.

Pas de commentaire

Aucun commentaire n'a encore été posté. Soyez le premier !

Laisser une réponse

Markup Controls Gras Italique Barré Code Citation Abbréviation Accronyme Lien URL

Smile Grin Sad Surprised Shocked Confused Cool Mad Razz Neutral Wink Lol Red Face Cry Evil Twisted Roll Exclaim Question Idea Arrow Mr Green

Vous pouvez personnaliser votre avatar en créant un compte sur Gravatar et y uploader votre image qui sera associée à votre adresse email une fois pour toutes.