Re la liste,
Pour ceux que ça intéresse et qui veulent se prendre la tête, voilà
comment j'affiche la liste des années suivie, sur clic d'une année, de
la liste des mois qui contiennent des articles publiés. En gros, ça
donne quelque chose comme :
--------------------------------------------------------------------------------------------
(2007) - (2005) - (2004) - (1999)
J A J J S D
// et le traitement désiré après (sur les articles sélectionnés)
--------------------------------------------------------------------------------------------
Voici le traitement, qui, si cela plaît à quelqu'un, peut le
simplifier avec les boucles spip (les traitements date = #ENV{year} ne
fonctionnent pas chez moi... lapin compris) :
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
<B_presse_annees>
<ul class="annee">
<?php
// compteur pour sélectionner la première année
par défaut si aucune n'est passée en param
$cpt_annee = 0;
?>
<BOUCLE_presse_annees(ARTICLES){id_rubrique}{lang}{par
date}{inverse}>
<?php
// sauvegarde de l'année de l'article
$sauv_annee = '[(#DATE|annee|unique)]';
if ($sauv_annee != '') {
$cpt_annee += 1;
// sauvegarde première année
if ($cpt_annee == '1') {
$first_year = $sauv_annee;
}
// si l'année paramètre == l'année de
l'article, on affiche celle-ci une seule fois en sélectionnée
if ($sauv_annee == $_GET['year']) {
?>
<li class="current">
<a href="#URL_RUBRIQUE&year=<?php echo
$sauv_annee; ?>">
(<?php echo $sauv_annee; ?>)
</a>
</li>
<?php
} else { // sinon, si c'est la première année,
on l'affiche aussi en current
if ($cpt_annee == '1' && $_GET['year'] == '') {
?>
<li class="current">
<a href="#URL_RUBRIQUE&year=<?php
echo $sauv_annee; ?>">
(<?php echo $sauv_annee; ?>)
</a>
</li>
<?php } else { // sinon, l'année est simplement
affichée ?>
<li>
<a href="#URL_RUBRIQUE&year=<?php
echo $sauv_annee; ?>" >
(<?php echo $sauv_annee; ?>)
</a>
</li>
<?php
}
}
?>
[(#COMPTEUR_BOUCLE|!={#TOTAL_BOUCLE}|?{'-',''})]
<?php
}
?>
</BOUCLE_presse_annees>
</ul>
</B_presse_annees>
<B_presse_mois>
<ul class="mois">
<?php
// compteurs pour sélectionner le premier mois par
défaut si aucun n'est passé en param
$cpt_mois = 0;
$cpt_year_month = 0;
?>
<BOUCLE_presse_mois(ARTICLES){id_rubrique}{lang}{par date}>
<?php
$sauv_mois_court = '[(#DATE|nom_mois|unique|couper{1})]';
$sauv_mois_complet = '[(#DATE|nom_mois)]';
// si le mois n'est pas vide (critère "unique")
if ($sauv_mois_court != '') {
// ************************************
// * Si il y a une année en paramètre *
// ************************************
if ($_GET['year'] != '') {
// si l'année en paramètre correspond à
l'année de l'article
if ('[(#DATE|annee)]' == $_GET['year']) {
$cpt_mois += 1;
// sauvegarde premier mois
if ($cpt_mois == '1') {
$first_month = $sauv_mois_complet;
}
// si le mois en paramètre == le mois
de l'article, on affiche celui-ci une seule fois en current
if ($sauv_mois_complet == $_GET['mois']) {
?>
<li class="current">
<a
href="#URL_RUBRIQUE&year=<?php echo $_GET['year']; ?>&mois=<?php echo
$sauv_mois_complet; ?>"
style="text-transform:uppercase;">
<?php echo $sauv_mois_court; ?>
</a>
</li>
<?php
// sinon, si c'est le premier mois, on
l'affiche aussi en current
} else if ($cpt_mois == '1' &&
$_GET['mois'] == '') {?>
<li class="current">
<a
href="#URL_RUBRIQUE&year=<?php echo $_GET['year']; ?>&mois=<?php echo
$sauv_mois_complet; ?>"
style="text-transform:uppercase;">
<?php echo $sauv_mois_court; ?>
</a>
</li>
<?php } else { ?>
<li>
<a
href="#URL_RUBRIQUE&year=<?php echo $_GET['year']; ?>&mois=<?php echo
$sauv_mois_complet; ?>"
style="text-transform:uppercase;">
<?php echo $sauv_mois_court; ?>
</a>
</li>
<?php }
}
}
// ************************************
// * Sinon, si l'année == la première *
// ************************************
else if ('[(#DATE|annee)]' == $first_year) {
$cpt_year_month += 1;
if ($sauv_mois_complet == $_GET['mois']) {
?>
<li class="current">
<a href="#URL_RUBRIQUE&year=<?php
echo $first_year; ?>&mois=<?php echo $sauv_mois_complet; ?>"
style="text-transform:uppercase;">
<?php echo $sauv_mois_court; ?>
</a>
</li>
<?php } else if ($cpt_year_month == '1' ||
$cpt_mois == '1') { ?>
<li class="current">
<a href="#URL_RUBRIQUE&year=<?php
echo $first_year; ?>&mois=<?php echo $sauv_mois_complet; ?>"
style="text-transform:uppercase;">
<?php echo $sauv_mois_court; ?>
</a>
</li>
<?php } else { ?>
<li>
<a href="#URL_RUBRIQUE&year=<?php
echo $first_year; ?>&mois=<?php echo $sauv_mois_complet; ?>"
style="text-transform:uppercase;">
<?php echo $sauv_mois_court; ?>
</a>
</li>
<?php }
}
}
?>
</BOUCLE_presse_mois>
</ul>
</B_presse_mois>
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sujet clos pour ma part, même si je regrette que ça ne fonctionne pas
de manière plus simple...
Gratz