Pages uniques

Allez, avouez... il ne vous est jamais arrivé d’avoir besoin d’articles qui ne sont rattachés à aucun rubriquage particulier ? Des articles uniques, n’ayant ni de thème, ni de rapport avec aucun autre ? Ou encore des articles pour lesquels vous avez besoin de faire un squelette particulier mais dont le contenu doit rester modifiable classiquement dans l’interface privée ?

Des pages, en quelque sorte. Des pages uniques rattachées à rien.

On a tous utilisé des bidouilles devenues des habitudes, que ce soit en se basant sur des mots-clés “techniques” ou bien en créant une rubrique “fourre-tout” que l’on devait ensuite rendre invisible dans tous nos squelettes en mettant {id_rubrique!=1}, par exemple.

Ce plugin propose de faire tout cela de manière plus propre et plus pratique.
On peut alors l’utiliser pour créer des pages de notice légale, d’à-propos, ou encore de contact.

Créer des pages

Le plugin ajoute une entrée “Pages uniques” dans le menu “Édition”.

On arrive sur une liste des pages déjà créées. Accolée à une boite permettant d’en ajouter de nouvelles.

Le formulaire de création d’une page est le même que celui d’un article. Sauf qu’on n’a pas à choisir de rubrique. À la place, on désigne un nom de page (qui peut être, par exemple, le nom d’un squelette).

Afficher les pages sur son site

Les pages sont des articles comme les autres, ils n’ont simplement pas de rubrique.

Vous pouvez donc :

  • Utiliser une boucle classique
    <BOUCLE_art(ARTICLES){id_article=38}>#URL_ARTICLE</BOUCLE_art>
  • Utiliser les raccourcis dans les textes [->art38]
  • Cela utilisera donc le squelette normal “article.html”

Mais les pages uniques ont aussi un champ “page” ! Qui peut être utilisé de plusieurs manières pour récupérer habilement ses pages.

Imaginons que l’on ait créé une page “Notice légale” avec le mot “legal” dans le champ “page”. On peut alors :

  • Faire une boucle <BOUCLE_legal(ARTICLES){page=legal}>#TEXTE</BOUCLE_legal>
  • Et mieux encore, avoir un squelette “legal.html” dédié. Comme ce squelette sera appelé par ?page=legal, le critère {page=legal} peut se simplifier, dans ce squelette, et s’écrire simplement {page}. La boucle principale devient alors simplement : <BOUCLE_legal(ARTICLES){page}>

Lorsqu’on veut juste l’URL, il existe aussi la balise #URL_PAGE_UNIQUE{identifiant} qui permet de retourner l’#URL_ARTICLE mais depuis l’identifiant textuel donné à la page.

Remarques techniques : conséquence sur les boucles (ARTICLES)

Les pages unique sont automatiquement exclues des boucles (ARTICLES) sauf si l’un des critères suivant est présents :

  • {tout};
  • {page} avec éventuellement des opérateurs ({page=toto}, sauf {page=''};
  • {id_rubrique=-1} ou {id_rubrique<0}
  • {id_rubrique} ou {id_rubrique? avec une rubrique égale à -1 dans l’environnement;
  • {id_article} avec éventuellement des opérateurs:
  • {traduction} et {origine_traduction} avec éventuellement des opérateurs.

updated on 2 April 2020

Discussion

92 discussions

  • Bonjour,

    SPIP 3.3.0-dev [24547] et Pages 1.4.0.

    Avec l’interface privé de SPIP qui évolue en largeur (et autres), il y a quelque chose qui a bougé pour Pages uniques depuis les derniers commits de SPIP : quand on entre en modification d’une page, le remplacement du texte «Modifier cet article» dans «entete-formulaire» ne se fait plus correctement. Du coup, le titre se trouve affiché en une colonne étroite.

    Le REGEX dans $cherche ligne 40 de pages_pipelines.php ne cherche plus correctement sa cible ;-)

    Reply to this message

  • 1

    Bonjour,

    J’ai installé la version 1.4.0 du plugin pages uniques.
    J’ai essayé de faire fonctionner une boucle ARTICLES avec les critères page=xxxx et doublons
    Exemple :
    <BOUCLE_article(ARTICLES){page=test}{doublons ici}></BOUCLE_article>
    Mais l’id_article de la page test n’est pas ajouté à la liste des doublons !
    Du coup, plus loin, l’anti-doublons ne me renvoie pas la page d’identifiant test :(

    • J’ai testé chez moi. Je ne pense pas que le problème vient de lien. Il vient du fait que si on ne précise ni page, ni article, ni rubrique, alors par défaut la boucle articles exclut les pages unique. Le critère tout permet de forcer cela.

    Reply to this message

  • 3

    Perso, pour créer des pages particulières avec leur propre design, j’utilise une solution toute simple. Avec champs Extras, pour l’objet “Article”, je crée un champs texte “ARTICLE_IDENTIFIANT_PAR_NOM”.
    Je renseigne ce champ dans chaque article avec un nom (exemple “simple”).
    Je crée une page que je nomme “simple” dans mon dossier Inclure.
    Et dans la page Article, je mets la boucle ci-dessous, à l’endroit qui va accueillir les infos de chaque template.

    <BOUCLE_template(ARTICLES){id_article}>
    #SET{tpl,#ARTICLE_IDENTIFIANT_PAR_NOM.html}
    [(#CHEMIN{inclure/#GET{tpl}}|oui)
    <INCLURE{fond=inclure/#ARTICLE_IDENTIFIANT_PAR_NOM, presentation=#ARTICLE_IDENTIFIANT_PAR_NOM, id_article} >] 
    </BOUCLE_template>

    Et voilà ! Je peux créer autant de templates différents.
    Il est également possible de procéder ainsi pour les rubriques.

    • J’ajoute à cela que je n’ai plus besoin des plugins “composition”, ni “pages-uniques”.
      On peut faire varier l’idée en remplaçant le champs texte par des boutons radio. Ainsi, n’importe quel rédacteur peut choisir pour chaque article (ou rubrique) le template qui va bien...
      Perso, ça me donne de sacrées possibilités de présentations...
      Pour une rubrique, je met cette boucle :

      <BOUCLE_rubrique(RUBRIQUES){id_rubrique}>
      #SET{tpl,#PRESENTATION.html}
      [(#CHEMIN{inclure/#GET{tpl}}|oui)
      <INCLURE{fond=inclure/#PRESENTATION, presentation=#PRESENTATION, id_rubrique} >] 
      </BOUCLE_rubrique>

      Là, dans Champs Extras, ma ligne de texte s’appelle “presentation”...

    • Libre à toi de réinventer en moins complet et en moins générique des plugins qui existent déjà et qui sont maintenus en commun par la communauté donc pérennes. :D

    • ben, ce n’est pas un plugin... simplement une boucle, c’est tout ! C’est justement pour éviter d’installer pleins de plugins...

    Reply to this message

  • 2

    Bonjour,
    Je dispose de SPIP 3.2.4 avec le plugin Pages v1.4.0. En suivant la documentation, je crée une page avec le champ page=test puis je crée un squelette test.html. Lorsque je veux voir la page en ligne, c’est le squelette article.html qui est appelé et non test.html. La fonctionnalité ne marche pas/plus ?

    • Après discussion sur IRC, il s’avère que cette fonctionnalité n’a jamais été implémentée et qu’il est nécessaire d’avoir le plugin Compositions pour ce besoin. C’est fort dommage ça aurait été très pratique

    • La doc a été mise à jour pour plus de clarté du coup

    Reply to this message

  • 6

    Bonjour,

    En squellette sommaire.html, j’ai une boucle qui liste les articles d’un mot-clé “carreau”,
    mais je ne comprend pas pourquoi il ne liste pas les pages uniques portant ce même mot-clé “carreau”.

    voici ma boucle:

    <BOUCLE_carreaux(ARTICLES) {titre_mot=carreau}> 
     
    #TITRE<br>
    [(#LOGO_ARTICLE{#URL_ARTICLE})]
     
    </BOUCLE_carreaux>

    Une idée?

    Merci d’avance.

    • parce que le principe des pages uniques est d’etre exclus des boucles articles, sauf si on demande explicitement un id_article précis ou une page précise.

      Actuellement je ne vois pas de solution “propre” pour obtenir ton comportement. Il y a bien {id_article?} mais c’est risqué, car si tu a un id_article passé en environnement, ca pète.

      Donc il faudrait améliorer le plugin. Rastapopoulos, que pense tu d’un critère {page_peu_importe} ?

    • Euh, il suffit juste d’utiliser le critère {tout}.

    • a oui, j’ai loupé cela en relisant le code. donc j’ai rien dit ;-) donc Fennec72 tu a ta réponse.

    • c’était bien cela:

      <BOUCLE_carreaux(ARTICLES) {tout}{titre_mot=carreau}> 
       
      #TITRE<br>
      [(#LOGO_ARTICLE{#URL_ARTICLE})]
       
      </BOUCLE_carreaux>

      Merci

    • En fait, il faut aussi tenir compte du statut des articles, et du cas des articles sous embargo (dans le futur).
      Donc :

      {tout}{statut=publie}{WHERE articles.date < NOW()}
    • J’ai trouvé beaucoup plus simple comme code :

      {id_article>0}

    Reply to this message

  • 12

    Bonjour,
    J’ai effectué ce matin la MAJ vers Pages 1.3.8. et là surprise mon site ne s’affichait plus, plus d’accès à l’interface privée non plus. J’ai donc par ftp remis la version Pages 1.3.7. et miracle tout est revenu.
    Je ne sais pas où se situe le problème. Je suis sous SPIP 3.2.1. Escal 4.2.33.
    Merci de votre aide.
    Yann

    • Il faudrait activer l’affichage des erreurs.

    • Quand je regarde mon fichier error_log je trouve ceci sur plusieurs lignes à l’heure où j’ai installé la MAJ :
      [Thu Jan 17 09:18:29 2019] [warn] [client 90.107.58.69] mod_fcgid: stderr: PHP Fatal error: Cannot redeclare autoriser_rubrique_creerarticledans() (previously declared in /var/www/vhosts/maisondesprovinces.fr/httpdocs/plugins/auto/autorite/v0.10.20/inc/autoriser.php:254) in /var/www/vhosts/maisondesprovinces.fr/httpdocs/plugins/auto/pages/v1.3.8/pages_autorisations.php on line 197

    • Bonjour,

      https://zone.spip.net/trac/spip-zone/changeset/113485/spip-zone devrait résoudre ton problème.
      Merci du signalement.

    • Merci beaucoup ! :-)

      Yann

    • Euh, en mettant à jour j’ai cette erreur : Impossible de lire certaines descriptions XML

      Erreur dans les plugins : auto/pages/v1.3.9

    • Pour le XML, ya que le numéro qui a changé dedans, donc je ne vois pas pourquoi ça péterait plus que le précédent. Super bizarre
      https://zone.spip.net/trac/spip-zone/changeset/113485/spip-zone

    • Je vois qu’il n’y a que 2 fichiers modifiés. Je peux essayer juste de remplace le fichier pages_autorisations.php sans toucher le fichier xml.
      Yann

    • Bonjour,
      Je viens d’avoir la même expérience, sur un SPIP 3.2.1 avec la version 1.3.8 du plugin Pages : même message d’erreur (Impossible de lire certaines descriptions XML). ça ne semble donc pas venir de la correction d’aujourd’hui.

    • Alors en remplaçant juste l’ancien fichier pages_autorisations.php par le nouveau et sans remplacer le fichier XML ça fonctionne. dès qu’on met le nouveau fichier XML ça foire. J’ai donc essayé en modifiant dans l’ancien fichier XML le numéro de version pour indiquer 1.3.9 ainsi que le https pour le lien SPIP en ligne 8 et ça marche. Plus d’erreur et la version du plugin indique bien 1.3.9

      Je ne vois pas ce qu’il peut y avoir sur le fichier XML livré avec la MAJ qui pose problème !

      Yann

    • Bonjour, La version 10 corrige le problème pour activé le plugin

    • Merci !

      Yann

    • Merci beaucoup, l’installation se fait désormais sans problème.

    Reply to this message

  • 9

    Alors je suis désolé de jouer les rabat-joie plusieurs années après mais j’ai trouvé une faille :)
    En fait les pages uniques ne sont belles et bien pas indexées automatiquement, et si le .htaccess n’autorise pas la découverte la page est cachée, ça c’est nickel ! Par contre les commentaires bas de page (comme celui-ci) s’il y en a, sortent sous “Messages” dans les résultats d’une recherche.

    C’est lorsque j’ai changé un article en page à la suite de son obsolescence partielle que j’ai constaté cela. Perso je ne suis pas vraiment gêné car je ne la dissimule pas complètement, juste je la cache un peu (et puis elle reste indexée dans les moteurs de recherches), mais j’estime qu’une page qui serait crée dans un but privée ne pourrait pas être commentée sous peine de pouvoir être trouvée et j’estime cela un peu dommage

    • Hello,
      je ne vois pas trop ce que tu veux dire car ce plugin n’a jamais eu pour but de CACHER des articles. Au contraire ce sont des articles normaux, avec les mêmes statuts, donc publié, etc. Seulement ils ne sont RANGÉS dans aucun rubrique. C’est juste un truc de rangement.

      Si tu veux dépublier ou archiver des trucs, ya un plugin Archives pour ça à priori.

    • Bah comme l’énoncé’ du plugin dit “articles qui ne sont rattachés à aucun rubriquage particulier” on peut je pense présumer que si aucun linkage n’est créé la “page unique” n’est pas découvrable par le commun des mortel ? En tous cas c’est bien le cas, même par les robots d’indexations, et même lorsqu’on lance une recherche sur la page avec le moteur de recherche de SPIP, la page ne sort pas. Moi je dis assez parfait, et c’est d’ailleurs cela qui m’avait fait conserver ce plugin: des pages un peu cachées jusqu’à un éventuel linkage, exactement ce que je cherchais.

      Mais parfait jusqu’à ce qu’un visiteur publie un commentaire sur la page. Car ce commentaire devient, lui, trouvable via le moteur de recherche dans SPIP. Et ceci rend alors la page découvrable !
      C’est vraiment le seul truc accessible que j’ai pu apercevoir qui rende la page découvrable, je trouve cela vraiment dommage

      En capture une recherche de la page unique “Indian Road” sur le site https://docsanscible.fr et qui comporte un commentaire. Comme on peut le constater la page n’est pas trouvée, par contre le commentaire l’est.

      Je ne sais pas quel genre de boulot ça peut être, perso de remédier à ça, je ne crois pas avoir les connaissances pour le faire, mais franchement je pense que ça mériterait

    • Bé non, il n’y a rien à faire, ce plugin n’a pas et n’aura jamais pour but de cacher quoi que ce soit. Ce sont des articles publiés, donc accessibles à tout le monde. Après ça dépend des squelettes du site, et ça ça peut être 12000 trucs différents suivants les sites, chacun fait ce qu’il veut. Si tu veux cacher des choses, soit tu modifies tes squelettes, soit tu utilises un plugin qui dépublie ou met en archive réellement les articles.

    • Non merci je ne désire pas archiver ni dépublier.
      J’utilise le dist
      Je considère que les “articles qui ne sont rattachés à aucun rubriquage particulier” du plugin “Pages uniques” recèlent en réalité une façon de se faire rattacher. Je pense que ça doit pouvoir se résoudre mais je n’en ai pas les moyens.

      Ce sera tout merci

    • Je n’ai pas compris la phrase “« Pages uniques » recèlent en réalité une façon de se faire rattacher”

      En gros, si j’ai bien compris, vous ne voulez pas afficher les résultats des forusm dans le formulaire de recherche?

      Par ce que vraiment, page unique ce n’est pas fait pour cacher une page !

    • “vous ne voulez pas afficher les résultats des forums dans le formulaire de recherche”
      C’est exactement cela :) Ne pas afficher les résultats des forums (j’aurais sans doute du employer le bon mot d’entré, désolé) des pages uniques dans le moteur de recherche de SPIP :)
      Parce qu’il est chouette ce plugin je veux dire ! C’est même pas merci c’est pire :) On crée une page unique, on peut travailler un peu à plusieurs auteurs dessus, la mettre en ligne et la montrer via juste son adresse sans code d’accès, recevoir des avis aussi en commentaires dans le forum, continuer à travailler tout en la laissant publiée, et tout ça sans que les visiteurs de passage ne soient en mesure de la trouver :) Pas complètement cachée (on ferait autrement): juste un peu. Juste assez :)
      Et ça ce plugin le procure par défaut ! Tant qu’il n’y a pas un commentaire :)

      Je vous remercie en tous cas de l’attention que vous m’avez porté :)

    • Oui, c’est vraiment pas l’usage pour lequel ca a été prévu, même si avec la dist ca peut correspondre.

      Donc il vous faut masquer les forums des resultats de recherches. Vous êtes avec la dist:
      -  créer (si ce n’est pas deja fait) un dossier squelettes (à coté de ecrire, squelettes-dist, etc).
      -  copier squelettes-dist/recherche.html dans ce dossier squelettes
      -  modifier squelettes/recherche.html en supprimant:

      [(#REM) Messages trouves ]
      <B_messages>
      <div class="menu menu_comments">
         #ANCRE_PAGINATION
         <h2><:messages_forum:> (#GRAND_TOTAL)</h2>
         <ul class="spip">
         <BOUCLE_messages(FORUMS?) {recherche} {!par points} {pagination 5}>
             [<li><a href="#URL_FORUM"[ title="(#TITRE|attribut_html|couper{80})"]>
                  (#TEXTE|couper{80})</a></li>]
         </BOUCLE_messages>
         </ul>
         [<p class="pagination">(#PAGINATION)</p>]
      </div>
      </B_messages>
    • Ah ou enlever les commentaires des résultats de recherches oui :)
      Comme ça maintenant je sais où ça se tient ? :) Je vais regarder si y’a moyen de s’arranger avec la boucle pour le fun :)
      En tous cas merci pour votre présence et le coup de main :)

    • Il veut pas virer les forums, il veut virer juste les forums qui sont sur des pages uniques.

    Reply to this message

  • 3

    Bonjour,

    Lorsque :
    -  l’on crée un article virtuel sur une page
    -  Que les URLs du site sont arborescentes

    L’article virtuel est redirigé sur une page 404.

    Dès que la page est transformée en article, la redirection fonctionne.

    Quelqu’un a t-il une solution pour pallier à ce problème ?

    • Bonjour Yohooo,

      Je viens de vérifier, en 3.2-dev et en 3.1, et je ne reproduis pas entièrement ce comportement.
      En fait ça fonctionne dans les 2 cas par défaut.

      Sauf. Sauf si un autre jeu d’URLs était utilisé auparavant (ou après), par exemple ’Libre’. Dans ce cas, pour les URLs pages, une nouvelle URL est généré qui ne contient pas le champ ’id_parent’. Et le mélange de ces 2 monde semble les perturber. C’est peut être un problème dans ce plugin…

      Toujours est-il que la correction est assez simple cependant : supprimer l’URL qui n’a pas le id_parent (-1) renseigné, lorsque tu passes en URLs Arborescente (la recréer au besoin ensuite), pour les articles pages.

    • Précisions : en 3.2-dev je ne reproduis pas de 404 même si le parent n’est pas renseigné.
      Visiblement il y a eu amélioration entre temps.

    • Hello Mathieu,

      Merci pour la solution.

      Sur ma version, en 3.1, supprimer les URL n’ayant pas d’id_parent (-1) ne suffit pas. Il faut tout simplement en ajouter une nouvelle.

    Reply to this message

  • J’ai l’impression que je suis tombé sur un loup ...
    Soit dans un coin de page une boucle qui teste la présence d’une page unique
    <BOUCLE_test(ARTICLES){page=toto}> et qui renvoie un item de menu si cette page existe. Jusque là tout va bien

    La page qui contient ce code est amenée à rapatrier des brèves issues d’un site distant (=un autre site SPIP) : elle est appelée une url du type
    ?page=breve&id_breve=xx&connect=connect_distant
    alors le debug m’affiche une erreur => BOUCLE_test critère = inconnu

    Une écriture “forçant le connect local” rétablit le bon fonctionnement

    <BOUCLE_test(connect:ARTICLES){page=toto}>

    mais bon, ça fait un peu rustine ! Un tour de torunevis ou un boulon à serrer quelque part dans le code du plugin pour ne pas avoir besoin de ce correctif ?

    Reply to this message

  • 7

    Bonjour,

    Je viens de faire une mise à jour de SPIP via spip_loader (SPIP 3.1.1 [22913] ) et maintenant, les pages-uniques ne sont plus listées dans ?exec=mot&id_mot=xx.
    Par contre ?exec=groupe_mots&id_groupe=x indique bien qu’il y a un article lié au mot clé xx.

    Pages-uniques est en dernière version ;) et l’affichage via des boucles fonctionne toujours parfaitement.

    Déjà constaté ce souci ?

    Merci,
    françois

    • Je ne l’ai pas indiqué, mais ma page-unique possède un mot-clé xx ;)

    • Ton site était sous quelle version avant ?

    • Oups ! Je n’ai pas vu ta notification : je ne me souviens plus de la version exacte, mais au moins en 3.1.xx.

      D’ailleurs, même phénomène avec une version toute neuve 3.1.4 :
      -  création d’un mot clé 1
      -  création de la page unique
      -  association du mot clé 1 à la page unique et à 2 autres articles classiques
      -  ?exec=groupe_mots&id_groupe=1 indique bien 3 articles pour le mot 1
      -  ?exec=mot&id_mot=1 liste uniquement 2 articles
      -  une BOUCLE mots ne retourne que les 2 articles !!

    • Je viens de trouver une partie de la réponse à la question de la BOUCLE qui ne retournait pas les pages avec le mot clé :
      https://contrib.spip.net/Pages-uniques?debut_comments-list=-1#forum483148

      C’est peut-être aussi une des explications du « non listage » des pages uniques en ?exec=mot&id_mot=1.

    • Oui c’est sûr que c’est ça. Mais le problème c’est qu’on ne va pas surcharger les listes du noyau pour juste ajouter un tout. (On retombe sur un débat des plugins qui veulent modifier les listes en ajoutant des critères, et le fait qu’il n’existe pas de pipeline pour ajouter des critères dans un squelette précis.)

    • Je comprends bien la problématique globale.
      Ceci dit, les 2 vues ?exec=groupe_mots&id_groupe=1 et ?exec=mot&id_mot=1 affichent des résultats différents : est-ce propre à Pages Uniques ou un manque du noyau ?

    • Ça dépend des critères de la boucle de liste qui est utilisé, c’est pas le même squelette du tout. Suivant s’il y a les critères {tout}{id_article}{id_rubrique}{page} ça modifie si on affiche ou pas les pages uniques mélangées avec les articles.

    Reply to this message

Comment on this article

Who are you?
  • [Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom