Dotclear : l’affichage des mois des archives ne tient plus compte de la catégorie sélectionnée


Dans la version de base, lorsqu’on sélectionne une catégorie, les mois affichés dans les archives sont seulement ceux pour lesquels il existe des messages de la catégorie. Et je n’aime pas ça. Je veux voir tous les mois, quelle que soit la catégorie sélectionnée.

Surtout que le fonctionnement de base n’est pas logique, à mon avis. Inversement, lorsqu’on sélectionne un mois, on voit toutes les catégories, même celles qui n’ont pas de messages pour le mois concerné. Bref, ça m’ennuie.

1) Dans le fichier layout/prepend.php, commenter la ligne en vert et ajouter la ligne en bleu, comme suit, pour sélectionner tous les mois pour lesquels il y a des messages, sans tenir compte de la catégorie :

 # Mois pour les archives //$arry_months = $blog->getAllDates('m','','','',$cat_id); $arry_months = $blog->getAllDates('m','','','',''); 

2) Dans le fichier layout/function.php, créer une nouvelle fonction : elle sert à supprimer la catégorie du lien sur lequel on va cliquer quand on choisira un mois dans les archives. En effet, on veut afficher tous les mois dans les archives, indépendamment de la catégorie. Et quand on clique sur un mois, on veut afficher tous les messages du mois, toujours sans prise en compte de la catégorie.

 function dcMonthsList2($block='<ul>%s</ul>',$item='<li>%s</li>') { 	global $arry_months, $month, $year, $cat_id, $lang, $blog; 	$comp_url = ''; 	if ($lang) { 		$comp_url .= $lang.'/'; 	} 	$res = ''; 	foreach($arry_months as $ts => $d) 	{ 		$titre = dt::str('%B %Y',$ts); 		$url = sprintf($blog->front_url['archive'],$comp_url.date('Y',$ts),date('m',$ts)); 		$lien = '<a href="'.$url.'">%s 0) { 		printf($block,$res); 	} } 

Solution alternative : on peut aussi plus simplement commenter les lignes suivantes de la fonction function dcMonthsList:

 	//if($cat_id) { 	//	$comp_url .= $cat_id.'/'; 	//} 

3) Si vous ne choisissez pas la solution alternative, dans le fichier template.php de votre blog, remplacer:

 	<div id="archives"> 		<h2>Archives</h2> 		<?php dcMonthsList(); ?> 	</div> 

par

 	<div id="archives"> 		<h2>Archives</h2> 		<?php dcMonthsList2(); ?> 	</div> 

4) On fait la même chose pour les jours : que lorsqu’on clique sur un jour, cela ne tienne pas compte de la catégorie et affiche tous les messages du jour. Dans prepend.php, commenter la ligne en vert et la remplacer par la ligne en bleue :

 elseif($mode == 'day') { //	$news = $blog->getPostByDate($year,$month,$day,$cat_id,'post_dt DESC'); $news = $blog->getPostByDate($year,$month,$day,'','post_dt DESC'); 
    

2 Commentaires sur “Dotclear : l’affichage des mois des archives ne tient plus compte de la catégorie sélectionnée”

  1. A noter : ce blog a migré sous wordpress, donc il ne fonctionne plus forcément comme décrit ci-dessus

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *