· Tech watch

Un module Drupal pour gérer les dates de publication

Drupal gère nativement, pour chaque contenu, une date de création, et une date de mise à jour.

Néanmoins, on a souvent besoin d’une troisième date, qui est la date de publication. Cela sert notamment lorsque la rédaction d’un article est soumise à validation d’un responsable, ou bien lorsque la publication d’un article est différée de quelques jours.

Clever Age a réalisé un module permettant d’ajouter cette fonctionnalité.

La date de publication est la date à laquelle un noeud est publié, que cela soit fait manuellement (en cochant la case ‘publié’), ou via un workflow de validation, ou via le module Scheduler par exemple.

Après avoir installé le module publication_date, on dispose d’un nouveau champ ‘published_at’ au niveau de chaque node.

Ce champ peut-être utilisé dans les templates. Exemple de node.tpl.php :

Le champ peut-etre également utilisé dans les Views :

Attention : la traduction française du coeur de Drupal est erronée, la date de création a été traduite en « date de publication » ! Du coup, une fois le module publication_date installé, il y a 2 champs « Date de publication », il faut s’aider du commentaire pour sélectionner le bon champ :

5 commentaires

  1. Bonjour,

    Il me semble que le module « Scheduler » vise également à apporter cette fonctionnalité.

    http://drupal.org/project/scheduler

    Merci néanmoins pour votre contribution, beaucoup plus légère.

    Florian

  2. Tristan Marly

    Bonjour Florian,

    Le module scheduler ne règle pas le problème.

    Admettons que je crée le 1er novembre un article « Promo », et qu’avec le module scheduler je choisisse de le publier le 15 novembre.

    Il semble logique que lorsque les internautes vont sur le site le 15 novembre, ils voient « Promo – publié le 15 novembre ».

    Pour cela, je crée une view, affichant pour chaque contenu le title + date … ? Quel champ date puis-je prendre ?
    – Si je prends « post date », cela affichera le 1er novembre, ce que je ne souhaite pas.
    – Si je prends « publish_on », cela affichera la date du scheduler, cela marchera pour cet article précis, mais si je crée un autre article et que je décide de publier aussitôt sans passer par le scheduler, alors ‘publish_on’ sera vide.

    L’idée de ce module est donc de proposer un champ supplémentaire ‘published at’ qui gère tous les cas.

    Tristan

  3. Waw, excellent article, merci pour votre aide, et notez que je partage moi aussi votre point de vue ! Hum voilà, votre billet est vraiment excellent, j’ajoute de ce pas votre site à mes favoris. NB : Ca fait du bien de vous lire !

  4. Bonjour,

    Je n’arrive pas à définir une date par décalage (par exemple, pour afficher les annonces qui datent de moins d’un mois).

    si je mets une date en dur, j’ai bien :

    …WHERE (publication_date.published_at >= 1262300400)

    si je mets un décalage de 1 mois (en indiquant « -1 mois » dans le champ, la requête est mauvaise car j’obtiens

    …WHERE (publication_date.published_at >= ***CURRENT_TIME***+7200)

    Comment résoudre le problème?

    ou comment définir ce décalage?

    Merci

  5. Tristan Marly

    Les views ne reconnaissent pas les termes français, il faut mettre: -1 month

Les commentaires sont désormais fermés.