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.
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 |
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) ]