date, affichage conditionnel et filtre de test ?

Bonjour

je butte sur un probleme pour faire afficher un élément (disons toto) sur un article en fonction de son anciennete.

Concretement si un article a plus d'un an je fais apparaitre l'objet "toto", sinon rien

j'ai essayé de travailler avec les filtres de test mais je n'ai pas reussi a notamment car la valeur de test etant un age, je ne sais pas comment la definir dans la syntaxe prévue.

Quelqu'un a-t-il une solution

merci

test réalisé infructueux:

[(#DATE|<{'3600'}|?{' ',' '})
              TOTO]

--
> Avant d'imprimer ce courriel, réfléchissons à l'utilité de la version imprimée.
Une lecture en ligne est peut-être suffisante.

---------------------------------
Olivier GARRY
Chef de produit, chef de projets
Portail vie-publique.fr (www.vie-publique.fr)
Département des produits internet
La Documentation française
01 40 15 69 09
olivier.garry@df.gouv.fr

Olivier Garry a écrit :

Bonjour

je butte sur un probleme pour faire afficher un élément (disons toto) sur un article en fonction de son anciennete.

Concretement si un article a plus d'un an je fais apparaitre l'objet "toto", sinon rien

j'ai essayé de travailler avec les filtres de test mais je n'ai pas reussi a notamment car la valeur de test etant un age, je ne sais pas comment la definir dans la syntaxe prévue.

Quelqu'un a-t-il une solution

merci

test réalisé infructueux:

[(#DATE|<{'3600'}|?{' ',' '})
              TOTO]

Peut être en utilisant les parties optionnelles des boucles ?
<BOUCLE_b(ARTICLES){age>365}></BOUCLE_b>
toto
</B_b>

Eric

On 28 nov, 10:11, Olivier Garry <olivier.ga...@df.gouv.fr> wrote:

Bonjour

je butte sur un probleme pour faire afficher un élément (disons toto)
sur un article en fonction de son anciennete.

Concretement si un article a plus d'un an je fais apparaitre l'objet
"toto", sinon rien

j'ai essayé de travailler avec les filtres de test mais je n'ai pas
reussi a notamment car la valeur de test etant un age, je ne sais pas
comment la definir dans la syntaxe prévue.

Quelqu'un a-t-il une solution

merci

test réalisé infructueux:

[(#DATE|<{'3600'}|?{' ',' '})
              TOTO]

Il te faut un filtre qui prenne une date et renvoie un age relatif.
Très approximativement et à la louche, ça pourrait ressembler à ça (à
coller dans mes_options.php) (non testé) (et à ne pas utiliser tel que
en prod):

function age($date, $unite='secondes') {

  if (!$date) return;
  $decal = date("U") - date("U", strtotime($date));

        $futur = False;
  if ($decal < 0) {
            $futur = True
      $decal = -1 * $decal;
  }

        $div = array(
                     'secondes' : 1,
                     'minutes' : 60,
                     'heures' : 3600,
                     'jours' : 3600 * 24,
                     'semaines': 3600 * 24 * 7,
                     'mois' : 3600 * 24 * 30, // pas bon
                     'annees' : 3600 * 24 * 365 // non plus
                     );

        $retour = ceil($decal / $div[$unite]);
        if ($futur) {
            $retour *= -1;
        }

  return $retour;
}

Suite à quoi ce test devrait fonctionner (nb: absolument pas testé du
tout, hein...):

[(#DATE|age{annee}|>={1}|?{' ',''})
  TOTO
]

Mes deux centimes

De fait j'ai mis en place quelque-chose de plus basique et qui fonctionne:

<BOUCLE_archives(ARTICLES){id_article} {age>360}>
              [(#DATE|?{'<div><img src="monimage"></div>',''})]
              </BOUCLE_archives>

merci tout de même

bruno desthuilliers a écrit :

On 28 nov, 10:11, Olivier Garry <olivier.ga...@df.gouv.fr> wrote:
  

Bonjour

je butte sur un probleme pour faire afficher un élément (disons toto)
sur un article en fonction de son anciennete.

Concretement si un article a plus d'un an je fais apparaitre l'objet
"toto", sinon rien

j'ai essayé de travailler avec les filtres de test mais je n'ai pas
reussi a notamment car la valeur de test etant un age, je ne sais pas
comment la definir dans la syntaxe prévue.

Quelqu'un a-t-il une solution

merci

test réalisé infructueux:

[(#DATE|<{'3600'}|?{' ',' '})
              TOTO]

Il te faut un filtre qui prenne une date et renvoie un age relatif.
Très approximativement et à la louche, ça pourrait ressembler à ça (à
coller dans mes_options.php) (non testé) (et à ne pas utiliser tel que
en prod):

function age($date, $unite='secondes') {

  if (!$date) return;
  $decal = date("U") - date("U", strtotime($date));

        $futur = False;
  if ($decal < 0) {
            $futur = True
      $decal = -1 * $decal;
  }

        $div = array(
                     'secondes' : 1,
                     'minutes' : 60,
                     'heures' : 3600,
                     'jours' : 3600 * 24,
                     'semaines': 3600 * 24 * 7,
                     'mois' : 3600 * 24 * 30, // pas bon
                     'annees' : 3600 * 24 * 365 // non plus
                     );

        $retour = ceil($decal / $div[$unite]);
        if ($futur) {
            $retour *= -1;
        }

  return $retour;
}

Suite à quoi ce test devrait fonctionner (nb: absolument pas testé du
tout, hein...):

[(#DATE|age{annee}|>={1}|?{' ',''})
  TOTO
]

Mes deux centimes
_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
irc://irc.freenode.net/spip
FAQ : FAQ webmestre - SPIP

--
> Avant d'imprimer ce courriel, réfléchissons à l'utilité de la version imprimée.
Une lecture en ligne est peut-être suffisante.

---------------------------------
Olivier GARRY
Chef de produit, chef de projets
Portail vie-publique.fr (www.vie-publique.fr)
Département des produits internet
La Documentation française
01 40 15 69 09
olivier.garry@df.gouv.fr

On 28 nov, 13:39, Olivier Garry <olivier.ga...@df.gouv.fr> wrote:

De fait j'ai mis en place quelque-chose de plus basique et qui fonctionne:

<BOUCLE_archives(ARTICLES){id_article} {age>360}>
              [(#DATE|?{'<div><img src="monimage"></div>',''})]
              </BOUCLE_archives>

Qui fonctionne, certes, mais au coût d'une requete SQL et d'un paquet
d'appels de fonctions inutiles. Enfin bon, c'est pas moi qui paie le
serveur, hein ? Heu... Quoique...

Accessoirement, aussi, le test sur #DATE est inutile dans ce contexte.

merci tout de même

De rien, de rien...