Liens sur articles non publiés.

Bonjour,
Je veux vous soumettre un souci de gestion du lien vers des articles non
(encore) publiés. Je présente ça sous la forme d'un (mini) cahier des
charges.

Contexte:
Site essentiellement textuel et évolutif organisé sous la forme d'une
arborescence qui peut être très profonde (> 10 niveaux). Les rubriques ne
sont pas utilisées, l'arborescence est organisée par les liens internes à
chaque page ou article (noeud de l'arborescence). Ces liens sont :
- lien vers page mère (1)
- liens vers pages soeurs (<7)
- liens vers pages filles (<7)
Les liens et les pages sont fabriqués par un algorithme qui produit des
articles spip comportant :
- url de la forme 2541231.html ( retraçant la topologie de l'arborescence)
- titre
- description
- les liens sont dans le corps de texte
- les articles sont au statut prepa (en cours de rédaction)
Les articles sont complétés au fur et à mesure par des nouveaux articles ou
des reprises d'articles existants sur un autre site.
A un instant T, il y a des articles vides, des articles non terminés, des
articles publiés et des articles terminés avec une date de publication à
venir.

Objectif:
Comme tous les liens sont présents, il y a des liens qui vont générer des
erreurs 404 dans spip puisque certains articles ne sont pas en mode
publication.
Plutôt que d'afficher une bête page 404.html, je souhaite proposer en cas
d'erreur 404 l'affichage d'une page reprenant :
- le titre et la description de l'article demandé
- un message précisant le statut de l'article demandé
- un formulaire d'inscription à la mail list de notification de publication.

Question:
Je sais bien comment faire ça via un script php ou autre mais j'aimerai
savoir si quelqu'un a déjà fait ça dans spip et si oui comment ?
Sinon, je suis ouvert à toutes les suggestions de réalisation.

Merci d'avance,
Bernard

Le 04/03/2021 à 16:07, Bernard Frit a écrit :

Objectif:
Comme tous les liens sont présents, il y a des liens qui vont générer des erreurs 404 dans spip puisque certains articles ne sont pas en mode publication.
Plutôt que d'afficher une bête page 404.html, je souhaite proposer en cas d'erreur 404 l'affichage d'une page reprenant :
- le titre et la description de l'article demandé
- un message précisant le statut de l'article demandé
- un formulaire d'inscription à la mail list de notification de publication.

Question:
Je sais bien comment faire ça via un script php ou autre mais j'aimerai savoir si quelqu'un a déjà fait ça dans spip et si oui comment ?
Sinon, je suis ouvert à toutes les suggestions de réalisation.

Merci d'avance,
Bernard

Il suffit simplement que ton squelette article.html ne renvoie pas rien si l'article n'est pas publié, mais ce que tu veux qu'il renvoie.

Donc

<BOUCLE_articles(ARTICLES){id_article}{tout}>
<BOUCLE_si_publie(CONDITION){statut=publie}>
ICI TON CODE POUR ARTICLE PUBLIE
</BOUCLE_si_publie>
ICI TON CODE POUR ARTICLE PAS PUBLIER
<//B_si_publie>
</BOUCLE_article>

Voir l'article de doc de spip qui explique dans quel cas les pages 404 sont générés.

Le 04/03/2021 à 16:47, Maïeul Rouquette a écrit :
>> Plutôt que d'afficher une bête page 404.html, je souhaite proposer en cas d'erreur 404 l'affichage d'une page reprenant :
>> - le titre et la description de l'article demandé
>> - un message précisant le statut de l'article demandé
>> - un formulaire d'inscription à la mail list de notification de publication.

Un peu comme propose maieul mais sans la boucle avec {tout} qui ne sert à rien,
j'ai défini que pour les articles en statut "prop", certaines informations étaient pré-annoncées :
- le titre, le soustitre et le descriptif
- la future date de publication éventuellement

Pour l'inclusion appelée par le squelette article.html :

<BOUCLE_contenuart(ARTICLES){id_article}>

... ici le squelette normal pour les articles publiés ...

</BOUCLE_contenuart>

   <BOUCLE_repechage(ARTICLES){id_article}{statut=prop}>

     <h3>Article en préparation</h3>
     <h1 class='#EDIT{titre}'>#TITRE</h1>
     <p class='soustitre'>#SOUSTITRE</p>
     <p class='descriptif'>#DESCRIPTIF</p>

     <p>Désolé, cette page est en préparation, mais elle n'a pas encore été publiée</p>
     [<p>(#DATE_REDAC|oui) Nous avons prévu sa publication le [(#DATE_REDAC|affdate)]</p>]
     [<p>(#DATE_REDAC|non) Merci de revenir dans quelques temps !</p>]
     <p><a href="#URL_SITE_SPIP">Revenir à l'accueil</a></p>

   </BOUCLE_repechage>

     <h1>Désolé, mais cette page n'existe pas ou n'a pas encore été publiée</h1>
     [<p>L'article (#ENV{id_article}) n'existe pas ou n'est pas encore prêt.</p>]

   <//B_repechage>

<//B_contenuart>

JL

Bernard