La gestione delle date

SPIP 1.6 introduce una serie di criteri e di segnaposti per gestire meglio le date degli articoli. Di seguito ve ne diamo un elenco.

Visualizzare le date

-  #DATE è la data di pubblicazione. (Modificabile dopo la pubblicazione dell’articolo, della breve, ecc. La data di una rubrica è quella del suo elemento più recente.)

-  #DATE_REDAC è la data di prima pubblicazione. (Modificabile a volontà, ma disponibile solo per gli articoli.)

-  #DATE_MODIF Apparso con [SPIP 1.5], questo segnaposto indica la data di ultima modifica dell’articolo.

-  #DATE_NOUVEAUTES [SPIP 1.6] permette di visualizzare la data dell’ultima email inviata per presentare le novità.

Assegnare formati alle date

Nel caso i segnaposti #DATE... siano utilizzati senza alcun filtro, tutte le informazioni di data vengono mostrati in un formato numerico (nel formato MySQL): « 2001-12-01 03:25:02 ».

I filtri |annee, |mois, |jour, |heures, |minutes, |secondes, come pure |affdate, |nom_mois, |nom_jour, |saison, eccetera, si applicano per permettere tutte le visualizzazioni abituali in diversi formati. Un elenco completo dei filtri che è possibile applicare alle date è riportato nell’articolo I filtri di SPIP.

Contesto della data

[SPIP 1.6] fornisce a tutti i cicli un contesto di data. Se ci si trova all’interno di un ciclo (ARTICLES), (BREVES) oppure (RUBRIQUES), la data in questione è la data di pubblicazione dell’articolo, della breve o la data di ultima modifica della rubrica.

Se, al contrario, ci si trova al primo livello del modello (cioè, al di fuori di ogni ciclo), la data presa in considerazione è la data del giorno - a meno che non sia stata passata una data nell’URL della pagina (vedi esempio sottostante).

In quest’ultimo caso, e per le versioni di PHP superiori alla 3.0.12, la data passata nell’URL viene analizzata con la funzione strtotime: quindi ?date=2003, ?date=2003/01 saranno validi, come pure date=-1year (un anno fa), ?date=1march1970 (articoli pubblicati il primo marzo 1970), ecc.

Criterio di data, di età e di età relativa

Il criterio {age} permette di selezionare gli articoli in base all’intervallo di tempo che separa la loro data di pubblicazione online dalla data corrente. Pertanto, {age<30} permette di non visualizzare gli articoli che hanno un’età maggiore di 30 giorni.

Il criterio {age_relatif} permette di confrontare le date di pubblicazione di due articoli: se si è appena selezionato un articolo in un ciclo, un secondo ciclo posto all’interno del primo può richiedere gli articoli pubblicati nella settimana che precede l’articolo attuale, attraverso {age_relatif<=7}{age_relatif>=0}, ecc.

I criteri {age} e {age_relatif} permettono di distinguere due articoli pubblicati nello stesso giorno (prima della versione [SPIP 1.6] ciò non era possibile). Attualmente è quindi possibile programmare dei cicli per ottenere l’articolo « precedente » o quello « seguente »:

<BOUCLE_art(ARTICLES){id_article}>
<BOUCLE_precedente(ARTICLES){age_relatif>=0}{par date}{inverse}{1,1}>
precedente: <a href='#URL_ARTICLE'>#TITRE</a> #DATE
</BOUCLE_precedente>
<br />
<b>#TITRE</b> - #DATE
<br />
<BOUCLE_seguente(ARTICLES){age_relatif{par date}{0,1}><0} 
seguente: <a href='#URL_ARTICLE'>#TITRE</a> #DATE
</BOUCLE_seguente>
</BOUCLE_art>

Attenzione! Malgrado la loro apparenza i confronti tra date possono essere incongruenti: in effetti, a causa delle "date indefinite" (un articolo pubblicato un dato mese, senza un giorno precisato), il calcolo dell’età relativa può restituire il valore zero in un senso ma non viceversa! Da ciò deriva l’asimmetria dei cicli sopra indicati: in un senso si cerca il "secondo più recente" degli articoli {age_relatif>=0} (poiché il più recente, con il confronto meno rigido, può essere solo l’articolo stesso); nell’altro senso l’articolo più vecchio tra gli articoli pubblicati esclusivamente in seguito.

I criteri {jour_relatif}, {mois_relatif} e {annee_relatif} funzionano come l’age_relatif, ma prendono in considerazione date arrotondate rispettivamente al giorno, al mese e all’anno; per esempio, se l’URL contiene la variabile ?date=2003-01-01, il ciclo seguente darà "tutti gli articoli del mese di marzo 2003"

<h3>Articloli di [(#DATE|nom_mois)] [(#DATE|annee)] :</h3>
<BOUCLE_blog(ARTICLES){mois_relatif=0}{par date}{"<br />"}>
<a href='#URL_ARTICLE'>#TITRE</a> ([(#DATE|jour)]/[(#DATE|nom_mois)]
</BOUCLE_blog>

La data di pubblicazione precedente

Se l’opzione di utilizzo delle date di pubblicazione precedenti è stata attivata, la maggior parte dei criteri suesposti sarà valida: è sufficiente aggiungere _redac al criterio. Di conseguenza, {age_redac>365} visualizzerà gli articoli la cui data di pubblicazione precedente risale a più di un anno fa.

Se un ciclo seleziona un articolo la cui date_redac è definita, un ciclo interno che includa il criterio {annee_relatif_redac=0} andrà a cercare gli articoli la cui data di pubblicazione precedente appartiene allo stesso anno.

Un esempio di indice di sito ordinato per data

A titolo esemplificativo vediamo come è possibile visualizzare tutti gli articoli di un sito, ordinati per mese di pubblicazione:

<BOUCLE_articolomese(ARTICLES){par date}{inverse}>
<BOUCLE_primodelmese(ARTICLES){id_article}{doublons}>
<br /><ul><b> [(#DATE|nom_mois|majuscules)] [(#DATE|annee)] </b>
   <li><a href="#URL_ARTICLE">[(#TITRE|couper{50})]</a> - [(#DATE|jour)]/[(#DATE|mois)]</li>
</BOUCLE_primodelmese>
   <BOUCLE_MESE(ARTICLES) {mois_relatif=0}{doublons}{par date}{inverse} >
       <li><a href="#URL_ARTICLE">[(#TITRE|couper{50})]</a> - [(#DATE|jour)]/[(#DATE|mois)]</li>
   </BOUCLE_MESE>
</ul>
</BOUCLE_articolomese>

Autore Fausto Barbarito Publié le : Mis à jour : 21/03/23

Traductions : عربي, català, Deutsch, English, Español, français, italiano, Nederlands