La gestión de las fechas

SPIP dispone de una serie de criterios y etiquetas para gestionar las fechas de los artículos.

Publicar las fechas

-  #DATE es la fecha de publicación en la web. (Modificable tras la publicación del artículo, la breve, etc. La fecha de una sección es la de la publicación de su elemento más reciente.)

-  #DATE_REDAC es la fecha de primera publicación. (Modificable a voluntad, la opción sólo está disponible para los artículos.)

-  #DATE_MODIF es la fecha de la última edición del artículo.

-  #DATE_NOUVEAUTES permite publicar la fecha del último envío del correo electrónico presentando las novedades.

Los filtros |annee, |mois, |jour, |heure, |minutes, |secondes, (año, mes, día, hora, minutos, segundos) además de los que ya hemos visto |affdate, |nom_mois, |nom_jour, |saison, etc. (publicar fecha, nombre del mes, nombre del día de la semana, estación, etc.) se aplican para permitir todas las publicaciones habituales en diversos formatos. Sin estos filtros, las balizas #DATE... devuelven una fecha en formato MySQL : "2001-12-01 03:25:02".)

Formatear las fechas

En el artículo Los filtros de SPIP encontrarás una lista completa de filtros que pueden ser aplicados a las fechas para formatearlas en un formato numérico (el formato MySQL).

Si se utilizan sin filtros las balizas #DATE..., todas las informaciones de fecha aparecerán : «2001-12-01 03:25:02».

Contexto de fecha

SPIP ofrece a todos los bucles un contexto de fecha. Si nos encontramos dentro de un bucle (ARTICLES), (BREVES) o (RUBRIQUES), la fecha en cuestión es la fecha de publicación del artículo, de la breve o de la última modificación de la sección.

Si nos encontramos en el primer nivel del esqueleto, la fecha presentada en el contexto es la fecha del día, salvo si existe una fecha pasada en la URL de la página.

En este último caso y para las versiones de php superiores a 3.0.12, la fecha pasada en la URL se analiza con la función strtotime: así ?date=2003, ?date=2003/01 funcionarán, pero también funcionará date=-1year (hace un año), ?date=1march1970 (artículos publicados el 1º de marzo de 1970), etc.

Criterio de date/fecha, âge/antigüedad, y âge relatif/antigüedad relativa

El criterio {age} [1] permite seleccionar los artículos en función del tiempo que dista entre su fecha de publicación en línea y la fecha corriente. Así {age<30} permitirá publicar los artículos puestos en línea hace menos de 30 días.

La {age_relatif} permite comparar las fechas de publicación de dos artículos: si acabamos de seleccionar un artículo en un bucle, un segundo bucle colocado dentro del primero podrá, por ejemplo, solicitar los artículos publicados en la semana precedente, utilizando simultáneamente los criterios {age_relatif<=7}{age_relatif>=0}

Los criterios {age} y {age_relatif} permiten distinguir dos artículos publicados el mismo día (no era posible antes de [SPIP 1.6]). Por ende, a partir de entonces se pueden programar bucles para obtener el artículo «precedente» o el «siguiente»:

<BOUCLE_art(ARTICLES){id_article}>
<BOUCLE_precedente(ARTICLES){age_relatif>=0}{par date}{inverse}{1,1}>
Artículo precedente: <a href='#URL_ARTICLE'>#TITRE</a> #DATE
</BOUCLE_precedente>
<br />
<b>#TITRE</b> - #DATE
<br />
<BOUCLE_siguiente(ARTICLES){age_relatif<0}{par date}{0,1}> 
Artículo siguiente: <a href='#URL_ARTICLE'>#TITRE</a> #DATE
</BOUCLE_suivant>
</BOUCLE_art>

Atención: A pesar de las apariencias, las comparaciones de fecha son de un manejo delicado: en efecto, a causa de las «fechas ambiguas» (un artículo publicado en un determinado mes sin que se precise el día), el cálculo de age_relatif/antigüedad relativa puede dar valor cero en un sentido y no en otro. De ahí la asimetría de los bucles presentados a continuación: en un sentido se busca el "segundo más reciente" de los artículos {age_relatif>=0} (puesto que el más reciente en comparación no estricta, solo puede ser el propio artículo); en otro, el más antiguo de los artículos publicados estrictamente más tarde.

Los criterios {jour_relatif}, {mois_relatif} y {annee_relatif} (día, mes y año relativo) funcionan como age_relatif pero tomando en cuenta las fechas redondeadas del día, el mes y el año respectivamente; por ejemplo, si la URL lleva la variable ?date=2003-01-01, el bucle siguiente dará «todos los artículos del mes de marzo de 2003»

<h3>Articles de [(#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 fecha de redacción anterior

Si activaste la utilización de fechas de publicación anterior, la mayoría de los criterios planteados a continuación funcionan: tan sólo es necesario añadir _redac al criterio [2]. Así {age_redac>365} publicará los artículos cuya fecha de publicación anterior remonta a más de un año.

Si un bucle selecciona un artículo cuya date_redac está definida, un bucle interno que contenga el criterio{annee_relatif_redac=0} buscará los artículos cuya fecha de publicación pertenezca al mismo año.

Un ejemplo de sumario de sitio clasificado por fecha

A título de ejemplo, he aquí como se puede publicar todos los artículos de un sitio, ordenados por mes de publicación:

<BOUCLE_articulom(ARTICLES){par date}{inverse}>
<BOUCLE_primero_del_mes(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_primero_del_mes>
   <BOUCLE_MES(ARTICLES) {mois_relatif=0}{doublons}{par date}{inverse} >
       <li><a href="#URL_ARTICLE">[(#TITRE|couper{50})]</a> - [(#DATE|jour)]/[(#DATE|mois)]</li>
   </BOUCLE_MES>
</ul>
</BOUCLE_articulom>

Notas

[1Nota de traducción: hemos traducido el concepto por "antigüedad" aunque en traducción literal del francés sería "edad"

[2redac, de «redaction,» redacción

Autor o autora mboix Publicado el: Actualizado: 31/08/23

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