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é',
'texte_statut_poubelle' => '............',
'info_refuses' => 'Vos articles archivés',
'texte_statut_refuses' => 'archivés',
'info_tous_articles_refuses' => 'Tous les articles archivé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}>
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é',
'texte_statut_poubelle' => '............',
'info_refuses' => 'Vos articles archivés',
'texte_statut_refuses' => 'archivés',
'info_tous_articles_refuses' => 'Tous les articles archivé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&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