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

C’est très simple, puisque les pages sont des articles comme les autres, ils n’ont juste pas de rubrique [1] .

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é, dans lequel on n’a plus qu’à faire <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.

Footnotes

[1Chaque page unique a un id_rubrique=-1 : on peut les filtrer/éliminer d’une boucle article par le critère {id_rubrique>0} ou plus simplement {page=''}

updated on 2 October 2019

Discussion

88 discussions

  • 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 :

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

      1. {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

  • 3

    Hello ici :)

    Petit bug spotté à l’instant sur SPIP 3.1-stable [22728]

    Lorsque le site ne comporte aucune rubrique (et en l’occurence dans cecas précis il n’en a aucunement besoin vu que c’est un mini-site vitrine) la création de pages uniques est impossible :-(

    Accès interdit

    Vous n’avez pas le droit d’accéder à la page article_edit.

    Est-ce que c’est voulu ? Corrigeable ? Comment ?

    J’avoue que devoir créer un secteur ici serait complètement superflu et même limite contre-productif : création d’une page publique inutile qu’il faudrait gérer avec du squelettes particulier et/ou des solutions alternatives à base de court-circuit ou autre joyeuseté dans le style... or là je cherche vraiment la simplicité sur ce projet vu qu’il ne comporte que 5 pages et que les seules choses qui ont réellement besoin d’être regroupées dessus sont des documents et qu’album est là pour les prendre en charge.

    Merci d’avance pour vos retours

    • C’est un comportement bloqué dans le noyau de SPIP et pour l’instant je ne vois pas ce qu’on pourrait corriger dans le plugin à moins de tout surcharger. Ça utilise les articles de base, donc ça a les mêmes contraintes du coup. Tu peux parfaitement créer une rubrique bidon, si elle n’a rien dedans elle sera invisible.

    • Woaw ! Quelle réactivité ! Merci !

      Hmmm... invisible certes, mais avec une URL renvoyant tout de même un code 200, de mémoire... bon ça encore j’ai un patch pour contourner.

      Merci pour ta réponse en tout cas ;)

    • Euh non non, un contenu qui n’existe pas ça retourne une 404 hein, comme toujours dans SPIP quand un squelette est vide. Après si ton squelette fait des trucs bizarres… :p
      Mais les squelettes de la dist, et les squelettes générés avec z-core génèrent 404 quand le contenu principal est vide.

    Reply to this message

  • 2

    Bonjour,

    Je pense avoir trouvé un conflit entre ce plugin Pages uniques et le critère {traduction} (SPIP 3.1.3, plugin Pages 1.3.5, plugin Menus 1.6.4).
    En effet, le plugin ajoute automatiquement un critère id_rubrique > 0 sur une boucle ARTICLE ce qui ne retourne rien si l’article est en réalité une page unique (car id_rubrique == -1).
    Je m’en suis rendu compte en utilisant le plugin Menus (http://contrib.spip.net/Menus-3139) et en voulant traduire une page unique “Mentions légales” en pied de page.

    La solution que j’ai trouvé est un petit patch du code du plugin qui supprime l’ajout du critère id_rubrique > 0 en cas d’utilisation de {traduction} ou de {origine_traduction}:

    --- pages_pipelines.php.orig        2016-10-14 17:23:58.000000000 +0200
    +++ pages_pipelines.php.patched        2016-10-17 09:55:51.000000000 +0200
    @@ -343,7 +343,10 @@
     
                     // On cherche les critères id_rubrique, id_article ou page
                     foreach ($boucle->criteres as $_critere) {
    -                        if ($_critere->op == 'page' and !$_critere->not) { // {page} ou {page?} mais pas {!page}
    +                        if ($_critere->op == 'traduction' || $_critere->op == 'origine_traduction') { // {traduction} 
    +                                $boucle_articles = false;
    +                                break;
    +                        } elseif ($_critere->op == 'page' and !$_critere->not) { // {page} ou {page?} mais pas {!page}
                                     // On considère qu'on cherche toujours des pages uniques donc on force le filtre id_rubrique=-1
                                     $boucle_articles = false;
                                     $critere_page = true;

    Reply to this message

  • Question, pour utiliser ce plugin dans un squelette avec article-XX, J’ai donc crée un fichier article=-1.html.

    Cela fonctionne Mais, si mon url contient ?id_rubrique=1 il perd la page du squelette ci-dessus.

    Une idée?

    Reply to this message

  • Bonjour et d’abord merci pour ce plugin bien pratique !

    Je voulais savoir s’il était possible de changer les urls des liens vers les pages uniques pour rendre tout ça un peu plus joli ?
    Ca marche en ayant une simple url monsite.fr/?&page=legal (par exemple) mais ce serait quand même mieux (autant pour l’esthétique que le SEO) d’avoir une belle url.

    Il y a t’il un truc pour arriver à ça ou ce n’est pas possible ?
    Merci beaucoup !

    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