Datumbeheer

SPIP beschikt over een aantal criteria en bakens om met de verschillende data van een artikel om te gaan.

Datumweergave

-   #DATE is de datum dat een publicatie online ging (of gaat). Ze kan nadien worden aangepast. De datum van een rubriek is die van zijn meest recente element.

-  #DATE_REDAC geeft de vorige redactiedatum weer (die optioneel aanpasbaar is en uitsluitend beschikbaar is op sites waarbij deze optie werd geactiveerd).

-  #DATE_MODIF toont de datum van de laatste aanpassing van een artikel.

-  #DATE_NOUVEAUTES geeft de datum aan waarop deze publicatie voor het laatst in de nieuwsbrief verscheen.

Een datum formatteren

Worden deze #DATE... bakens zonder filter opgenomen, dan wordt die datum in een numeriek formaat weergegeven (in het MySQL formaat): «2001-12-01 03:25:02».

De filters |annee, |mois, |jour, |heures, |minutes, |secondes, maar ook |affdate, |date_relative, |nom_mois, |nom_jour, |saison maken een meer gebruikelijke weergave mogelijk. Een volledige lijst met deze filters kun je terugvinden in het artikel De filters van SPIP.

De datumcontext

SPIP biedt alle lussen een datumcontext. Binnen een (ARTICLES), (BREVES) of (RUBRIQUES) lus is dat de publicatiedatum van het artikel of nieuwsbericht of de datum van de laatste aanpassing van de rubriek.

Buiten een lus is het de huidige datum (wanneer die via de URL naar het skelt werd doorgegeven (zie hieronder).

In het laatste geval en voor PHP versies vanaf 3.0.12 wordt de in de URL doorgegeven datum geanaliseerd met functie strtotime: zo voldoet ?date=2013, ?date=2013/01, maar ook date=-1year (één jaar geleden), ?date=1march1970, enz.

Datum- en leeftijdvoorwaarden

De voorwaarde {age} laat je toe artikelen te selecteren die een bepaalde leeftijd (in aantal dagen) hebben. Hun publicatiedatum wordt vergeleken met de huidige datum. Zo selecteert {age<30} uitsluitend artikelen die niet langer dan 30 dagen geleden werden gepubliceerd.

age als begindatum
Teken Waarde Betekenis Omschrijving
<= -1 +1 dag vanaf morgen
<= 0 vandaag sinds vandaag
<= 1 -1 dag sinds gisteren
<= 2 -2 dagen sinds eergisteren
<= 365 -365 dagen sinds een jaar
age als einddatum
Teken Waarde Betekenis Omschrijving
>= 1 -1 dag tot gisteren
>= 0 vandaag tot vandaag
>= -1 +1 dag tot morgen
>= -2 +2 dagen tot overmorgen
>= -365 +365 dagen tot over een jaar

De voorwaarde {age_relatif} maakt het vergelijken van de publicatiedatums van twee artikelen mogelijk: wanneer je in een lus een artikel selecteert en binnen die lus een tweede lus opneemt, kun je bijvoorbeeld artikelen selecteren die in de voorafgaande week werden geplubliceerd door middel van {age_relatif<=7}{age_relatif>=0}, enz.

De voorwaarden {age} en {age_relatif} maken het onderscheid mogelijk van twee op dezelfde dag gepubliceerde artikelen. Zo kun je bijvoorbeeld lussen maken om het «vorige» of het «volgende» artikel weer te geven:

<BOUCLE_art(ARTICLES){id_article}>
<BOUCLE_vorige(ARTICLES){age_relatif>=0}{par date}{inverse}{1,1}>
Het vorige artikel: <a href='#URL_ARTICLE'>#TITRE</a> #DATE
</BOUCLE_vorige>
<br />
<b>#TITRE</b> - #DATE
<br />
<BOUCLE_volgende(ARTICLES){age_relatif<0}{par date}{0,1}> 
Het volgende artikel: <a href='#URL_ARTICLE'>#TITRE</a> #DATE
</BOUCLE_volgende>
</BOUCLE_art>

Let op, schijn bedriegt! Ondanks dat het lijkt dat data gemakkelijk kunnen worden vergeleken, is het een delicate aangelegenheid: als gevolg van het gebruik van "soft data" (zoals de maand van publicatie van een artikel, zonder opgave van de dag) kan de berekening van de waarde met age_relatif in één richting als resultaat nul geven en niet andersom! Vandaar de asymmetrie van de hierboven getoonde lussen: in één richting zochten we de "tweede meest recente" artikelen {age_relatif>=0} (want de meest recente is — met de niet-strikte vergelijking — het artikel zelf); in de andere de oudste van de later gepubliceerde artikelen.

De voorwaarden {jour_relatif}, {mois_relatif} en {annee_relatif} functioneren zoals {age_relatif}, maar gebruiken een (respectievelijk op dag, maand en jaar) afgeronde datum. Wanneer de URL bijvoorbeeld de variabele ?date=2013-03-01 bevat, zal de volgende lus resulteren in « alle artikelen van de maand maart 2013 »

<h3>Artikelen van de maand [(#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>

De vorige redactiedatum

Wanneer op de site het gebruik van de vorige redactiedatum werd geactiveerd, zal het merendeel van bovenstaande voorwaarden functioneren: het volstaat om _redac aan het criterium toe te voegen. Dus {age_redac>365} geeft de artikelen weer met een vorige publicatiedatum van minder dan 365 dagen geleden.

Wanneer een lus een artikel selecteert waarvan de date_redac is gedefineerd, zal een lus erbinnen met de voorwaarde {annee_relatif_redac=0} artikelen zoeken met een vorige redactiedatum binnen datzelfde jaar.

Een voorbeeld van een overzicht dat op datum is gerangschikt

Hier zie je hoe je alle artikelen van een site gesorteerd op de maand van publicatie kunt weergeven:

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

Hoe vindt SPIP het jaartal van het oudste artikel

Hier zie je hoe SPIP onderaan de homepage de copyright vanaf het jaartal van het oudste artikel tot vandaag weergeeft:

<BOUCLE_annee(ARTICLES){par date}{0,1}>
[(#DATE|annee|!={#VAL{Y}|date}|oui)[(#DATE|annee)]]
</BOUCLE_annee> - </B_annee>[(#DATE|annee) ]

Auteur Hanjo Gepubliceerd op: Aangepast: 21/03/23

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