Certains événements, comme les expositions, s’inscrivent sur la durée : leur date de fin peut être très éloignée de leur date de début. S’ils ont déjà commencé, mais ne sont pas terminés, il est judicieux de les séparer des autres en créant une partie « en cours ».
Pour filtrer l’affichage des événements sur des intervalles de temps, plutôt que de multiplier les critères de sélection, on va associer deux techniques :
- la sélection à l’aide de la paire de critères doublons/anti-doublons (voire la doc de SPIP et l’explication complémentaire sur Contrib) ;
- le regroupement d’après la valeur d’un champ, avec le critère fusion.
Ce qu’on veut obtenir
L’objectif est donc d’extraire de façon automatique les événements [1], qu’ils soient dans l’intervalle du mois courant, ou à venir, en éliminant les dates échues.
A. Sélectionner tous les événements non finis
Une première boucle va servir de référence - un doublon nommé - pour « mémoriser » les événements publiés, commencés ou non, dont la date de fin est située dans le futur.
<BOUCLE_evtpasfini(EVENEMENTS){age_fin<=0}{statut=publie}{doublons evtpasfini}/>
Cette boucle sert seulement à sélectionner des événements, pas à les afficher, elle peut donc être de type « auto-fermante » : il suffit de la balise d’ouverture, sa fin y est intégrée par le />
final.
Rappel au sujet de la technique doublons/antidoublons : {doublons}
permet de mémoriser la sortie d’une boucle... que l’on récupère ensuite dans une autre boucle avec l’antidoublons, noté {!doublons}
.
B. Récupérer et afficher la sélection
En premier, on veut afficher les événements en cours, qui ont déjà commencé mais ne sont pas terminés, comme les expositions :
<B_encours>
<h3>En cours</h3>
<BOUCLE_encours(EVENEMENTS){!doublons evtpasfini}{age_debut>=1}{par date_fin}{doublons encours}>
</BOUCLE_encours>
</B_encours>
En deuxième on veut le reste des événements triés par année et par mois. Ce mécanisme de regroupement nécessite deux boucles imbriquées avec le critère {fusion}
spécifiant successivement les deux valeurs, année et mois :
<B_annees>
<BOUCLE_annees(EVENEMENTS){!doublons evtpasfini}{age_debut<=1}{par date_debut}{annee_relatif_debut}{lang_select=non}{fusion YEAR(date_debut)}{fusion MONTH(date_debut)}>
<B_mois>
<h3>[(#DATE_DEBUT|nom_mois|ucfirst) ][(#DATE_DEBUT|annee)]</h3>
<BOUCLE_mois(EVENEMENTS){!doublons evtpasfini}{age_debut<=1}{par date_debut}{mois_relatif_debut}{doublons}>
</BOUCLE_mois>
</B_mois>
</BOUCLE_annees>
</B_annees>
Notez l’importance des critères {annee_relatif}
et {mois_relatif}
documentés ici... que l’on peut appliquer aux dates de début ou de fin utilisées par le plugin Agenda.
C. Afficher le tout sous la forme d’une liste à puce
Pour des raisons d’accessibilité, on veut afficher le tout sous la forme d’une seule liste à puce. Voici ce que cela donne :
<B_evt>
<div class="liste_mots_articles">
<ul>
<BOUCLE_evt(EVENEMENTS){!doublons evtpasfini}>
<B_encours>
<li><h3>En cours</h3>
<ul>
<BOUCLE_encours(EVENEMENTS){!doublons evtpasfini}{age_debut>=1}{par date_fin}{doublons encours}>
<li>
<a class="uid url" href="[(#URL_ARTICLE|ancre_url{evt#ID_EVENEMENT})]">
<h4 class="summary">[(#LOGO_EVENEMENT)][(#TITRE)]</h4>
</a>
<p class="dateevenement dtstart"> [(#DATE_DEBUT|Agenda_affdate_debut_fin{#DATE_FIN,#HORAIRE})]</p>
<p class="lieuevenement location">[(#LIEU|sinon{#LESCOMMUNES})][<br/> (#ADRESSE|deparagrapher)]</p>
</li>
</BOUCLE_encours>
</ul>
</li>
</B_encours>
<B_annees>
<BOUCLE_annees(EVENEMENTS){!doublons evtpasfini}{age_debut<=1}{par date_debut}{annee_relatif_debut}{lang_select=non}{fusion YEAR(date_debut)}{fusion MONTH(date_debut)}>
<B_mois>
<li><h3>[(#DATE_DEBUT|nom_mois|ucfirst) ][(#DATE_DEBUT|annee)]</h3>
<ul>
<BOUCLE_mois(EVENEMENTS){!doublons evtpasfini}{age_debut<=1}{par date_debut}{mois_relatif_debut}{doublons}>
<li>
<a class="uid url" href="[(#URL_ARTICLE|ancre_url{evt#ID_EVENEMENT})]">
<h4 class="summary">[(#LOGO_EVENEMENT)][(#TITRE)]</h4></a>
<p class="dateevenement dtstart">[(#DATE_DEBUT|Agenda_affdate_debut_fin{#DATE_FIN,#HORAIRE})]</p>
<p class="lieuevenement location">[(#LIEU|sinon{#LESCOMMUNES})][<br/> (#ADRESSE|deparagrapher)]</p>
</li>
</BOUCLE_mois>
</ul>
</li>
</B_mois>
</BOUCLE_annees>
</B_annees>
</BOUCLE_evt>
</ul>
</div>
</B_evt>
Discussions par date d’activité
Une discussion
et la meme jour par jour, c’est possible ?
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |