Affichage d’un article entre une date de début et de fin

En suivant le forum des utilisateurs de SPIP, il est souvent demandé « Comment afficher un article entre une date de début et une date de fin ? ». Alors voilà comment j’ai fait ça, pour un site, rien qu’avec un SPIP de base et sans utiliser de plugin.

C’est un site qui annonce des expositions : par exemple une exposition du 2/08/2015 au 09/08/2015.

La solution utilise

  1. une rubrique spécialement pour les articles qui annoncent les expositions
  2. le champ « date de rédaction antérieure », qui sert à indiquer la date de début de l’exposition
  3. une noisette inc-expositions.html avec le contenu suivant :
   <h2 class="menu-rubriques">Expositions</h2>
    <BOUCLE_agenda (ARTICLES) {tout} 
        {par date_redac} 
        {age_redac <= 9} {age_redac >= -30}>
    [(#DATE_REDAC|affdate_jourcourt) :] 
    <a href="#URL_ARTICLE">
        [(#LOGO_ARTICLE_RUBRIQUE|image_reduire{40,*}) ]
        #TITRE
    </a><br />                            
    </BOUCLE_agenda>
    <!-- Si aucun programme n'est annoncé, alors on affiche un message d'information -->                            
    <:actuellement_pas_de_programme:>
    <//B_agenda>

On insère <INCLURE{fond=inc-expositions} /> à l’endroit ou on veut qu’apparaisse l’annonce

A la suite de quoi, il suffit d’écrire un article annonçant l’exposition et à la « Date de rédaction antérieure », mettre la date du premier jour de l’expo. L’include qui fait le reste.

{age_redac <= 9} conservera l’annonce pendant 9 jours. Cette durée peut être modifiée selon la durée de l’expo.
{age_redac >= -30}> fera apparaître l’article 30 jours avant la date de début.

On peut mettre autant d’article que l’on souhaite dans la rubrique.

Discussion

2 discussions

  • 1

    yo,

    j’aime bien l’idée, mais en réalité je cherche autre chose
    faire apparaître tous les ans un article pendant un Mois.

    en réalité , j’explique les choses du mois, donc une fois le mois passé c’est l’autre qui apparaît sachant que tous les ans c’est le même article.

    suis je clair et avez vous une idée ?

    merci

    • Merci a
      @erational de m’avoir mis sur la piste
      @Jean Christophe d’avoir corrigé le code pour avoir la bonne date et éviter
      le dédoublement d’article

      pour ceux et celle que ça intéresse

       <!-- on récupère le mois precedent-->
       #SET{mois_precedent,#DATE|agenda_moisdecal{-1}|nom_mois}
       <!-- on récupère le mois en cours-->
       #SET{mois_en_cours,#DATE|nom_mois}
      <!-- on récupère le mois suivant-->
       #SET{mois_suivant,#DATE|agenda_moisdecal{1}|nom_mois}
       	
      <BOUCLE_contexte(RUBRIQUES){id_rubrique}>
      <!-- affichage du logo, du titre, du descriptif et du texte de la rubrique appelee -->
      	<div id="cadre-rubrique">
      		<div class="logorub">[(#LOGO_RUBRIQUE||image_reduire{#CONFIG{escal/config/taillelogorub,150}})] </div>
      	  	<div id="titre-rubrique">
                      [(#CONFIG{escal/config/fluxrssrub}|=={oui}|oui)
                      <div class="fluxrss-rubrique">
                      	<a href="[(#URL_PAGE{backend}|parametre_url{id_rubrique,#ID_RUBRIQUE})]">
                      	<img src="#CHEMIN{images/rss.png}" alt="RSS" title="<:syndiquer_site:>" />
                      	</a>
                       </div>
                       ]
      		<div class="#EDIT{titre} titre-rub">[(#TITRE)]</div>
      		<div id="descriptif-rubrique" class="#EDIT{descriptif}">
                      [(#DESCRIPTIF|image_reduire{[(#CONFIG{escal/config/largeurimage,400})],0})]
                      </div>
      		<div id="texte-rubrique" class="#EDIT{texte}">[(#TEXTE)]</div>
      		[<div id="notes"><strong>Notes : </strong> <br />(#NOTES)</div>]			  			
      	  				</div>
          <div class="nettoyeur"></div>        
      		</div>
       
          <BOUCLE_art_mois_precedent(ARTICLES){id_rubrique}{titre==#GET{mois_precedent}}>
      <div class="cadre-articles-rubrique">
            <div class="titre-articles-rubrique">
              <div class="logorub">[(#LOGO_ARTICLE_RUBRIQUE||image_reduire{#CONFIG{escal/config/taillelogorub,150}})]</div>
              <a href="[(#URL_ARTICLE|parametre_url{lang,#ENV{lang}})]" title="[(#DESCRIPTIF|textebrut|entites_html)]">[(#TITRE)]</a>
            </div>
            <div class="introduction-articles-rubrique">
              [(#INTRODUCTION|supprimer_tags|couper{150})]
              <br/>
              <a href="[(#URL_ARTICLE|parametre_url{lang,#ENV{lang}})]" title="[(#DESCRIPTIF|textebrut|entites_html)]"><strong><:escal:lire_article:></strong></a>
              <!--<a href="#URL_ARTICLE[(#CONFIG{multi_secteurs}=={oui}|oui)|parametre_url{lang,#ENV{lang}}]" title="[(#DESCRIPTIF|textebrut|entites_html)]"><strong><:escal:lire_article:></strong></a>
              -->
              <br/>
            </div>
            <div class="nettoyeur"></div>
          </div>
          </BOUCLE_art_mois_precedent>
          
              <BOUCLE_art_mois_actuel(ARTICLES){id_rubrique}{titre==#GET{mois_en_cours}}>
      <div class="cadre-articles-rubrique">
            <div class="titre-articles-rubrique">
              <div class="logorub">[(#LOGO_ARTICLE_RUBRIQUE||image_reduire{#CONFIG{escal/config/taillelogorub,150}})]</div>
              <a href="[(#URL_ARTICLE|parametre_url{lang,#ENV{lang}})]" title="[(#DESCRIPTIF|textebrut|entites_html)]">[(#TITRE)]</a>
            </div>
            <div class="introduction-articles-rubrique">
              [(#INTRODUCTION|supprimer_tags|couper{150})]
              <br/>
              <a href="[(#URL_ARTICLE|parametre_url{lang,#ENV{lang}})]" title="[(#DESCRIPTIF|textebrut|entites_html)]"><strong><:escal:lire_article:></strong></a>
              <!--<a href="#URL_ARTICLE[(#CONFIG{multi_secteurs}=={oui}|oui)|parametre_url{lang,#ENV{lang}}]" title="[(#DESCRIPTIF|textebrut|entites_html)]"><strong><:escal:lire_article:></strong></a>
              -->
              <br/>
            </div>
            <div class="nettoyeur"></div>
          </div>
          </BOUCLE_art_mois_actuel>
              <BOUCLE_art_mois_suivant(ARTICLES){id_rubrique}{titre==#GET{mois_suivant}}>
      <div class="cadre-articles-rubrique">
            <div class="titre-articles-rubrique">
              <div class="logorub">[(#LOGO_ARTICLE_RUBRIQUE||image_reduire{#CONFIG{escal/config/taillelogorub,150}})]</div>
              <a href="[(#URL_ARTICLE|parametre_url{lang,#ENV{lang}})]" title="[(#DESCRIPTIF|textebrut|entites_html)]">[(#TITRE)]</a>
            </div>
            <div class="introduction-articles-rubrique">
              [(#INTRODUCTION|supprimer_tags|couper{150})]
              <br/>
              <a href="[(#URL_ARTICLE|parametre_url{lang,#ENV{lang}})]" title="[(#DESCRIPTIF|textebrut|entites_html)]"><strong><:escal:lire_article:></strong></a>
              <!--<a href="#URL_ARTICLE[(#CONFIG{multi_secteurs}=={oui}|oui)|parametre_url{lang,#ENV{lang}}]" title="[(#DESCRIPTIF|textebrut|entites_html)]"><strong><:escal:lire_article:></strong></a>
              -->
              <br/>
            </div>
            <div class="nettoyeur"></div>
          </div>
          </BOUCLE_art_mois_suivant>
       
       </BOUCLE_contexte>

    Répondre à ce message

  • 1

    Bonjour,
    Il y a un petit moment que je cherche également, j’ai par exemple sur mon site une rubrique « événement » qui liste les anniversaires à souhaiter, je suis obligé de le mettre à jour tous les et manuellement, j’utilise pour celà la Date de rédaction antérieure j’aimerais qu’elle se mette à jour toute seule tous les ans.

    Je crois que nous sommes tous deux au même point, si tu as une idée je suis preneur.

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom