Accès rapide : Aller au contenu de l'article |  Aller au menu |  Liste complète des articles  |  Aide  |  Contact |
bandeau

Accueil > Aides pour les nuls > Détourner le statut « Refusé » pour faire de l’archivage

Détourner le statut « Refusé » pour faire de l’archivage

Je voulais que le statut « refusé » me permette d’archiver les articles périmés.

Je me suis servie de l’article suivant (méthode du mot-clé)
avec l’aide de spipeurs du forum. Voici les étapes.

 Première façon

– D’abord modifier « article.html »

  • 1) Ouvrir article.html
  • 2) Modifier la première ligne.
    Si celle-ci est :
    <BOUCLE_principale(ARTICLES) {id_article}>
    il faut écrire :
    <BOUCLE_principale(ARTICLES) {id_article}{statut==refuse|publie}>
  • 3) Toujours dans article.html, ajouter un filtre « Si oui », par exemple après le titre de l’article. Voici ce filtre :
    [(#STATUT|=={refuse}|? {"Cet article est périmé. Il ne reste en ligne que pour mémoire"})]

Cela veut dire que, si l’article est « refusé » (donc ici archivé), la phrase « Cet article est périmé. Il n’est en ligne que pour mémoire » sera écrite. Si l’article est publié en ligne, la phrase n’y sera pas.

  • 4) Enregistrer le fichier article.html ainsi modifié et l’envoyer vers le site distant dans le dossier « squelettes »
    (si ce dossier n’existe pas, il faut le créer)

– Ensuite modifier « recherche.html »

1) Ouvrir recherche.html
2) Ajouter quelque part (par exemple à la fin) juste avant <!--#contenu-->

Attention, les articles ci-dessous sont anciens. Ils restent en ligne pour mémoire.
<B_art_rub_archiv>
#ANCRE_PAGINATION
<ul class="search">
<BOUCLE_art_rub_archiv(ARTICLES){recherche}{statut==refuse}{par points} {inverse}{pagination 5}>
<li><a href="spip.php?article#ID_ARTICLE">#TITRE</a></li>
</BOUCLE_art_rub_archiv></ul>
[<p class="pagination">(#PAGINATION)</p>]
</B_art_rub_archiv>
  • 3) Enregistrer le fichier recherche.html ainsi modifié et l’envoyer vers le site distant dans le dossier « squelettes »

– Ensuite créer le statut « archivé »

  • 1) Créer le fichier nommé local_fr.php ainsi constitué :
<?php
if (!defined("_ECRIRE_INC_VERSION")) return; $GLOBALS[$GLOBALS['idx_lang']] = array
('texte_statut_refuse' => 'archiv&eacute;',
'texte_statut_poubelle' => '............',
'info_refuses' => 'Vos articles archiv&eacute;s',
'texte_statut_refuses'  => 'archiv&eacute;s',
'info_tous_articles_refuses' => 'Tous les articles archiv&eacute;s',
)
?>
  • 2) Ce fichier « local_fr.php » est à placer dans /squelettes/lang/. Si le sous répertoire n’existe pas, il faut le créer. On peut aussi, si on préfère, modifier le fichier ecrire/lang/ecrire_fr.php

– Ensuite créer un article nommé « Archives »

Si cet article porte le numéro 400, écrire seulement <archive400> dans l’article 400 mais à condition d’avoir créé un modèle archive.html dans squelettes/modeles.

Voici ce fichier archive.html :

#CACHE{0}
<B_paginer_annee>
<ul class="nopuce">
   <BOUCLE_paginer_annee(ARTICLES){statut=refuse}{par date}{inverse}{fusion YEAR(date)}>
       [<li><h3><:citeo:archives|ucfirst:> (#DATE|annee)</h3>]
           <ul class="nopuce espaceur">
           <BOUCLE_article_annee(ARTICLES){statut=refuse}{par date}{inverse}{annee=#_paginer_annee:DATE}>
               [<li><a href="[(#URL_ARTICLE)]" title="[(#SURTITRE|?{[(#SURTITRE)],[<:citeo:aller_article|ucfirst:>(#TITRE|textebrut|supprimer_numero)]})]"[ (#SOUSTITRE|oui)[(#SOUSTITRE)]]>(#TITRE|supprimer_numero)</a></li>]
           </BOUCLE_article_annee>
           </ul>
       </li>
   </BOUCLE_paginer_annee>
</ul>
</B_paginer_annee>

– - Enfin modifier le fichier rubrique.html

... du moins si l’on veut que les articles archivés apparaissent dans la rubrique.
Dans le fichier rubrique.html, il suffit de recopier toute la boucle allant de <BOUCLE_secteurs(RUBRIQUES){id_rubrique}{par titre}>  .... à...  </BOUCLE_secteurs>
a) en faisant <BOUCLE_secteurs_archiv(RUBRIQUES){id_rubrique}{par titre}> ............... <BOUCLE_secteurs_archiv> et en complétant ainsi tous les noms de boucles
b) en ajoutant {statut==refuse} à la boucle articles : comme ça : <BOUCLE_articles_racine_archiv(ARTICLES) {id_rubrique}{statut==refuse}{par date}{inverse}{pagination 10}>

Télécharger le document : rubrique.html modifiée , format pdf de 41.1 kilo octets

Voir l’article « articles archivés »
Voir la rubrique « animations récentes »

Et voilà, tout fonctionne !

Merci aussi à Bobof, Sylvain, Beurt, Jean-Christophe et autres spipeurs et Freebsnet


 Deuxième façon : en créant un fichier « archive.html »

L’inconvénient : les moteurs de recherche comme google ne trouvent plus ces articles, cela fait donc des erreurs 404 en grand nombre.

– D’abord créer « archive.html »

  • 1) Ouvrir article.html
  • 2) Modifier la première ligne.
    Si celle-ci est : <BOUCLE_principale(ARTICLES) {id_article}>
    il faut écrire : <BOUCLE_principale(ARTICLES) {id_article}{statut=refuse}>
  • 3) Toujours dans article.html, ajouter un avertissement, par exemple après le titre de l’article. Par exemple :
    Cet article est périmé. Il n'est maintenu en ligne que pour mémoire
  • 4) Enregistrer le fichier article.html ainsi modifié en lui donnant le nom « archive.html » et envoyer archive.html vers le site distant dans le dossier « squelettes ». (si ce dossier n’existe pas, il faut le créer)

– Ensuite modifier « recherche.html »

  • 1) Ouvrir recherche.html
  • 2) Ajouter quelque part (par exemple à la fin) juste avant <!--#contenu-->
Attention, les articles ci-dessous sont anciens. Ils restent en ligne pour mémoire.
<B_art_rub_archiv>
#ANCRE_PAGINATION
<ul class="search">
<BOUCLE_art_rub_archiv(ARTICLES){recherche}{statut=refuse}{par points} {inverse}{pagination 5}>
<li><a href="article.php?id_article=#ID_ARTICLE">#TITRE</a></li>
</BOUCLE_art_rub_archiv></ul>
[<p class="pagination">(#PAGINATION)</p>]
</B_art_rub_archiv>

3) Enregistrer le fichier recherche.html ainsi modifié et l’envoyer vers le site distant dans le dossier « squelettes »

Enfin créer le statut « archivé »

1) Créer le fichier nommé local_fr.php ainsi constitué (qui supprime la ligne « à la poubelle » et remplace « refusé » par « archivé ») :

<?php
if (!defined("_ECRIRE_INC_VERSION")) return; $GLOBALS[$GLOBALS['idx_lang']] = array
(
'texte_statut_refuse' => 'archiv&eacute;',
 
'texte_statut_poubelle' => '............',
'info_refuses' => 'Vos articles archiv&eacute;s',
'texte_statut_refuses'  => 'archiv&eacute;s',
'info_tous_articles_refuses' => 'Tous les articles archiv&eacute;s',
)
?>

2) Ce fichier « local_fr.php » est à placer dans /squelettes/lang/. Si le sous répertoire n’existe pas, il faut le créer.

Et voilà, tout fonctionne !

 Compléter rubrique.html

On peut souhaiter que la liste des articles archivés apparaisse dans la rubrique où ils se trouvent. Dans ce cas on peut ajouter ceci, juste avant : <!--#contenu-->

[(#REM) Articles archivés ]
               
        <h3> Articles en archive :</h3>
        Attention, les articles ci-dessous, anciens, sont anciens.  Ils ne restent en ligne que pour mémoire.
 <B_archiv>
<ul>
<BOUCLE_archiv(ARTICLES){branche}{statut=refuse}{par date} {inverse}{pagination 3}>
 <li>
           
<a href="spip.php?page=archive&amp;id_article=#ID_ARTICLE">#TITRE</a>
</li>
               
</BOUCLE_archiv></ul>
<p style="text-align:center;">Autres articles en archive : #PAGINATION </p>
</B_archiv>
 

 Détourner le modèle <doc> pour en faire un lien

Il s’agit d’une question d’accessibilité. Un mal voyant ne pourra pas cliquer sur une petite vignette correspondant à un document pdf. Il faut donc trouver le moyen de signaler ce document par une url, qu’on puisse obtenir sans trop se casser la tête. Voir la méthode dans un autre article


NOTES:

NOTES :

1) Voir aussi : article à la poubelle, article refusé

2) Quand on crée un squelette mon_squelette.html, il est visible sur une page du type ...spip.php ?page=mon_squelette

3) Dans recherche.html, au lieu de

<a href="spip.php?page=archive&id_article=#ID_ARTICLE">#TITRE</a>

les lignes suivantes fonctionnent aussi (au choix !) :

<a href="[(#URL_PAGE{archive}|parametre_url{id_article,#ID_ARTICLE})]">#TITRE</a>

<a href="http://www.mon-site.fr/spip.php?article#ID_ARTICLE">#TITRE</a>

<a href="http://www.mon-site.fr/#URL_ARTICLE">#TITRE</a>

(en remplaçant http://www.mon-site.fr par l’adresse exacte du site concerné). Merci au forum spip !

3) Il arrive que le fichier fasse appel à une « noisette » du genre :
<INCLURE{fond=inc/inc-article}{id_article}{id_rubrique}>

il faut alors passer tout ce dont a besoin comme variable d’environnement pour continuer le traitement dans la noisette. Ici il fallait mettre :
<INCLURE{fond=inc/inc-article}{id_article}{id_rubrique}{statut}>

Dans d’autres cas cela pourrait être : <INCLURE{fond=inc/inc-article}{id_article}{id_rubrique}{env}> . Avec env cela donne tout l’environnement des variables mais c’est pas le mieux car on sollicite trop spip et la mémoire du serveur, alors que l’on n’a besoin que de quelques variables.