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.

Notes

[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=''}

Dernière modification de cette page le 13 février 2019

Discussion

88 discussions

  • 5

    Bug très embétant en SPIP 3.0.4 [19781] :

    la version 1.0.1 de pages uniques a besoin du plugin spipicious qui lui même à besoin du plugin sélécteur générique qui n’existe pas pour SPIP3.

    Pas possible d’activer le plugin une fois mis à jour ce qui « casse » la partie publique qui l’utilise.

    Le retour en arrière n’a rien d’évident, j’ai utilisé cette commande pour retrouver l’ancienne version :

    svn co svn ://zone.spip.org/spip-zone/_plugins_/pages/trunk/@62306 v1.0.0

    • Ce que tu racontes est absolument faux, que ce soit sur plugins.spip.net ou le XML d’où l’info est tiré, à aucun endroit il n’est spécifié de nécessite pour ce plugin.

      http://zone.spip.org/trac/spip-zone/browser/_plugins_/pages/trunk/paquet.xml

    • Effectivement, je me suis trompé, ca ne casse pas la partie publique. Par contre il y a bien un soucis lors de la maj du plugin (non bloquant) : http://dl.free.fr/getfile.pl?file=/h02Ce8RC

      « Impossible d’activer le plugin ../plugins/auto/spipicious/v1.0.1

      Nécessite le plugin SELECTEURGENERIQUE en version 0.7 minimum. »

      Je pense que le soucis vient de la ligne :

              "<utilise nom="polyhier" />"

      qui essaye de ramener le plugin poly hiérarchie et donc spipicious et donc sélécteur générique qui existe pas pour SPIP3. J’ai du supprimer le plugin spipicious à la main via SSH (impossible autrement) pour ne plus avoir d’erreur dans ma page http://www.root-me.org/ecrire/?exec=admin_plugin...

    • Non mais je le répète : il n’y a AUCUN <necessite>. Donc absolument aucun plugin n’est chargé en plus, ce plugin est auto suffisant.

      Et en plus de ça Polyhiérarchie n’a de toute façpn aucun nécessite non plus donc ne dépend pas du tout de spipicious.

      Pour tester un plugin, je rappelle qu’il faut désactiver TOUS les autres, afin d’être sûr de quoi on parle, que ça vienne pas d’un autre truc activé en même temps.

    • Perso je constate, c’est tout. Je pense que d’autre que moi auront ce problème.

      Pourquoi la ligne suivante est elle présente si ce plugin est inutile à Pages ?

      <utilise nom="polyhier" />

      Autant la supprimer non ?

    • Non mais constater ça veut rien dire, ça dépend du contexte, si on constate des éléments qui n’ont rien à voir entre eux, et bien ça ne veut alors rien dire.

      Si tu lis la doc, tu vois que « utilise » ce n’est PAS une dépendance, c’est une information qui permet qu’un plugin passe avant un autre dans l’ordre des chargements. Donc aucun rapport avec le fait de nécessite le plugin.

      Le plugin Pages ne dépend donc absolument pas de Polyhiérarchie. Et comme je l’ai dit, de toute manière Polyhiérarchie ne dépend pas non plus d’autres plugins, donc pourquoi insistes-tu pour y voir un rapport avec Spipicious ?

      As-tu essayé d’activer le plugin Pages avec RIEN d’autre ? Sur un SPIP 3 neuf sans autres plugins.

    Répondre à ce message

  • 3

    Bonjour,

    est ce qu’il y a possibilité de supprimer ou de cacher les boutons convertir en page unique / convertir en articles qui apparaissent dans l’admin ?

    • À moins de modifier le code, non ce n’est pas possible facilement là.

      Mais normalement ce bouton n’apparaît que pour les admins, sur un article publié, non ? Donc peu de personnes. Quel est le but exactement ?

    • Je n’avais pas noté que les pages uniques étaient réservés aux administrateurs.

      C’est un site que j’ai récupéré et parmi les utilisateurs une 40aine sont administrateurs. Dans l’idéal j’aimerai qu’ils puissent modifier les pages uniques mais pas en créer ni supprimer ni convertir celles-ci.

      Normalement le nombre d’utilisateur doit être revu à la baisse donc pour l’instant je vais laisser dans l’état. Juste pour l’info, quels fichiers du plugin il faudrait modifier ?

    • Dans page_pipelines.php

      Mais le plus propre serait de créer des autorisations propres à ce plugin, propres aux pages, et de les faire pointer par défaut sur celles actuelles càd autoriser(’modifier’, ’article’). Ce qui fait qu’on pourrait alors surcharger ces autorisations sans toucher ni à celles de SPIP ni au fichier.

    Répondre à ce message

  • Bonjour.

    J’ai découvert une incompatibilité avec Exclure secteur (lien vers mon commentaire, histoire de ne pas faire doublon…).

    Et merci pour ce plugin bien sympa !

    Répondre à ce message

  • 1

    Bonjour,

    Sous SPIP 2.1.12, lorsque je transforme un article en page unique, et que cet article est le seul article d’une rubrique, la rubrique reste en statut « publie ». Il devrait être passé en statut « prive » car il ne contient plus d’éléments publiés.

    • Effectivement, mais le changement en mode page n’appelle pas la fonction de recalcule de statut des rubriques de la hiérarchie. C’est pareil en SPIP 3 je suppose.

    Répondre à ce message

  • 1

    Salut,

    sous SPIP 2.1, avec version 0.3.7 du plugin

    #URL_FORUM ne produit pas le code correct lorsque le forum se situe sur une page unique. Cela me renvoie quelque chose du genre ?page=rubrique&id_rubrique=-1#forumxxx. En revanche il fonctionne pour les articles classiques.

    Une idée ?

    Merci d’avance

    Répondre à ce message

  • Bonjour,

    j’ai fais un petit squelette pour pouvoir attribuer un squelette différent à chaque pages uniques (ou pas)

    Squelette article=-1.html (les pages uniques sont classées dans la rubriques -1) :

    [(#REM) Redirection squelette pages uniques]
    <BOUCLE_redirection_squelette(ARTICLES) {id_article}>
    
    [(#REM) Squelette de la page ? ]
    [(#CHEMIN{uni-#PAGE.html}|oui)<INCLURE{fond=uni-#PAGE}{id_article}>]
    
    [(#REM) Squelette par défaut des pages uniques ]
    [(#CHEMIN{uni-#PAGE.html}|non)<INCLURE{fond=unique}{id_article}>]
    </BOUCLE_redirection_squelette>
    
    [(#REM) On supprime les espaces indésirable avant le doctype]
    #FILTRE{trim}

    au niveau des squelettes, spip chargera soit unique.html soit uni-PAGE.html (PAGE étant le nom saisit dans le champs éponyme du plugin)

    Et merci pour ce plugin indispensable.

    Répondre à ce message

  • 3

    Merci pour ce plugin juste indispensable.

    ne remarque toutefois : j’ai intuitivement tenté d’utiliser la balise #URL_PAGE{nom_de_ma_page} qui ne fonctionne pas. #URL_ARTICLE{xx} suffit cependant.

    • Valéry, pour l’URL, il faut comprendre ce qu’appelle SPIP avec les balises dont vous parlez.

      • #URL_ARTICLE appelle classiquement le squelette « article.html » avec en paramètre l’identifiant d’un article (qui est possiblement une page unique).
      • #URL_PAGE{truc} appelle quand à elle le squelette « truc.html ». Donc il faut que vous ayez un squelette de ce nom pour que cela marche. Par ailleurs, sans additif cette balise n’ajoute aucun paramètre.

      Ainsi il y a deux options :

      • Si votre page unique ne nécessite qu’un affichage classique comme les autres articles. Utilisez #URL_ARTICLE.
      • Mais si vous avez besoin d’un squelette, d’une présentation précise, pour une page unique particulière, alors utilisez #URL_PAGE{nom_de_votre_page} puis construisez un squelette « nom_de_votre_page.html ». À l’intérieur vous n’aurez alors plus qu’à faire <BOUCLE_ma_page(ARTICLES){page}> pour sortir la page unique qui aura comme champ « page » le nom « nom_de_votre_page ».

      Dans la majorité des cas, la présentation classique des articles suffit. Mais ça permet plus de personnalisation si on en a besoin.

    • Bonjour,

      un détail m’a peut-être échappé : même après avoir épluché tous les commentaires et tenté diverses combinaisons, et en spécifiant bien la balise #URL_PAGEpage, l’article s’affiche toujours dans le squelette standard.

      Mettons un article en page unique, par exemple le n°68, avec pour champ de page « reglement », et auquel il s’agit appliquer un squelette spécial.

      Je crée donc, d’une part, un squelette « article-68.html », avec :

      #URL_PAGEreglement

      et d’autre part, un squelette spécifique « reglement.html », avec :

      #TITRE
      #TEXTE

      C’est bien ça ?

      Le problème encore une fois, c’est que c’est bien toujours le squelette de base du site qui s’affiche, et non pas celui de « reglement.html » : je crains donc d’avoir fait un gros contresens quelque part...

    • Absolument rien de tout ce que tu as dis n’existe hein. :)

      « article-68.html » ça a toujours été pour désigner les articles de la branche 68 (rubrique 68 et ses rubriques filles).

      Et #URL_PAGE, depuis toujours, sert à générer une URL spip.php?page=reglement, qui correspond à ton squelette, donc.

    Répondre à ce message

  • 2

    J’aimerais plus d’explication quant à la dernière phrase de la documentation :

    Et mieux encore, avoir un squelette « legal.html » dédié, dans lequel on n’a plus qu’à faire < BOUCLE_legal(ARTICLES) page> (La copier/coller n’est pas parfait, je n’ai pas trouvé de moyen de mettre du code SPIP correctement en commentaire)

    J’ai créé une page "contact", avec le champ page = contact.
    J’ai également créé un squelette "contact.html" à la racine du répertoire squelettes, mais il ne semble pas pris en compte automatiquement : quoi que je fasse, ma page appelle toujours le squelette "article.html".
    Est-ce l’exemple que j’ai mal compris, ou est-ce ma manière de procéder qui est fausse ?

    • Non il n’y a pour l’instant pas d’appel à un squelette depuis le lien #URL_ARTICLE. C’est forcément « page=contact » dans l’URL. Mais cela permet déjà d’appeler toujours le bon article dans ce squelette, sans considération d’identifiant en base de données (qui n’est pas toujours le même suivant le site). Là peu importe l’identifiant, ça appellera toujours le bon truc.

      Il est envisagé que le plugin sache chercher automatiquement un plugin du même nom que l’identifiant de la page s’il existe, sinon celui par défaut. Mais ce n’est pas encore fait.

    • Ok, merci !
      Je vais trouver autre chose pour ne pas avoir à changer mes urls.

    Répondre à ce message

  • 7

    Excellent, et du coup avec le plugin Zpip, il suffit d’avoir un contenu avec ceci

    <BOUCLE_mots(ARTICLES){page=#COMPOSITION}>
    #TITRE
    </BOUCLE_mots>

    merci

    • Bonjour,
      Est-ce que vous pourriez détailler un peu votre commentaire : où faut-il mettre la boucle dont vous parlez ? faut-il créer un fichier à part ? À quoi renvoie le #COMPOSITION, est-ce que ça a avoir avec le plugin du même nom ?
      Je voudrais en effet pouvoir faire une page différente avec zpip (une page d’accueil qui n’aurait pas le même format que les autres) mais je ne vois pas comment faire.
      Merci par avance.

    • Une page d’accueil c’est sommaire.html et qui n’a pas le même format que les autres c’est en faisant un body-sommaire.html (ou body-page-sommaire.html en Zpip1 peut-être) afin de faire un layout personnalisé pour cette page.

      Dans Zpip, il me semble que la balise #COMPOSITION indique la composition pour un objet, ou le type de page pour une page. Donc donc page=article sur un article qui utilise la composition « article-galerie.html » donnera « galerie », tandis que page=sommaire donnera « sommaire ».

    • J’avoue que c’est un peu compliqué pour pas grand chose à vrai dire !

      Le plugin pages uniques permet de mettre dans le squelette de son choix

      <BOUCLE_xx(ARTICLES){page=nom_champ_page}>#TEXTE</BOUCLE_xx>

      pour afficher le texte de l’article correspondant.

      Avec

      <BOUCLE_yy(ARTICLES){page=#COMPOSITION}>#TEXTE</BOUCLE_yy>

      dans un squelette personnel (avec le plugin Zpip1), comme contenu/page-moncompte
      L’appel de /?page=moncompte affichera le texte de l’article SPIP dont le champ page est “moncompte”, rien de plus.

      Aucune correspondance directe avec le plugin composition, l’idée était simplement d’appeler une variable.

    • Bonjour,
      Merci pour vos contributions mais ça ne résout pas mon problème (sans doute parce que j’interprète mal vos propositions).
      Avec zpip, le noizetier et un thème, je ne parviens pas à faire une mise en page différente pour ma page d’accueil ou ma page portfolio puisque je voudrais que la div de contenu principal prenne toute la largeur. Or, je n’ai pas moyen de me débarrasser des div sur le côté droit (sidebar et extra) puisqu’elles sont comprises dans cette partie « contenu ». Je suis sûre qu’il doit y avoir un moyen mais je n’y arrive pas.
      Peut-être n’est-ce pas du recours du plugin de pages uniques d’ailleurs.
      Merci dans tous les cas

    • Absolument pas ! sidebar et extra sont définis dans « body.html » du thème, et donc si tu crées un « body-sommaire.html » (ou « body-page-sommaire.html » je ne sais plus) et bien ça crée une structure uniquement pour cette pas là précise.

      http://zone.spip.org/trac/spip-zone/browser/_squelettes_/zpip-dist/branches/zpip_v1/body.html

    • Bon, ça ne marche pas, ou alors je ne fais pas ce qu’il faut. Mais tant pis, je vais bien trouver un moyen. Merci quand même.

    • Sans voir le code et sans voir le site, difficile d’aider... Cf : Les choses à faire avant de poser une question :)

    Répondre à ce message

  • 1

    Bonjour,

    Comment avoir une version compatible SPIP 3 zippée ? Je vois que le plugin est dispo ici http://zone.spip.org/trac/spip-zone/browser/_plugins_/pages/trunk mais je ne sais pas comment le télécharger.

    Merci.

    Répondre à ce message

Ajouter un commentaire

Qui êtes-vous ?
  • [Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom