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. Avec un lien 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 identifiant de page.

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>
  • 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}>
  • Depuis la version 1.5.1, il est possible d’avoir un squelette dédié « article=legal.html » qui sera utilisé automatiquement avec la vraie URL de l’article. Ainsi vous pouvez avoir des belles adresses propres tout en ayant un squelette dédié, et sans avoir à utiliser Compositions pour juste un article. Cela fonction aussi avec Z-core pour le squelette du bloc principal.

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 uniques 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.

Discussion

103 discussions

  • 1

    Bonjour,

    est il possible de lier les pages uniques à l’agenda ?

    apparemment pour le moment non, mais cette option sera t’elle bientôt disponible ?

    merci

    • Mmmh que veut dire lier les pages uniques à l’agenda ? Tu veux dire ajouter des événements d’un article de page unique ?

      Il me semblait qu’il n’y avait rien à faire normalement, à partir du moment où tu n’as pas activé l’option qui impose l’agenda seulement sur certaines rubriques.

    Répondre à ce message

  • 9
    pm2036

    Bonjour,

    A priori,il y a un souci si on utilise les urls arborescentes et le plugin pages.
    Les liens semblent incorrects.

    Exemple : dans l’admin c’est bien défini en « http://www.example.org/spip3/accueil » et dans les squelettes générés le lien se transforme en « http://www.example.org/accueil » et sont invalides.

    Merci

    • Chez-moi-ça-marche. ©

      Attention, si ton site est dans un sous dossier, il y a normalement un truc à déclarer dans le .htaccess (le RewriteBase, un truc comme ça).

    • pm2036

      Chez-moi-ça-marche pas. © ;)
      Mon rewrite base dans mon htaccess est ok je pense ;
      Par contre, ce sont les liens directement générés qui sont incorrects
      J’essaye d’expliquer différement.
      En « gros », ça me génère ça :

      			<h3 class="h2 entry-title"><a href="rubrique1/test1" rel="bookmark">Test1</a></h3>
      			<h3 class="h2 entry-title"><a href="/accueil" rel="bookmark">Accueil</a>

      Pour rubrique1/test1, pas de souci, mais pour accueil, ça génère /accueil, j’ai aussi testé l’url directe sans le / ça ne passe pas non plus :(

    • Chez moi aussi ça génère un /contact.html par exemple. Ça marche pour un site qui n’est pas dans un sous-dossier, mais ça ne marche plus quand il y a un sous-dossier.

      Mais avant (quand ?) ça marchait !

      Il y a donc eu : soit une modif de la gestion de la base, soit une modif de la génération de l’URL. Et je ne sais plus si auparavant l’URL générée contenait un / devant ou pas.

      En tout cas je ne crois pas que ce soit dû au plugin, vu qu’il ne touche pas du tout aux URLs (les pages uniques étant des articles classiques).

    • Timestamp

      Bonjour,

      pour palier à ce problème, j’ai modifié le plugin pour qu’il donne 0 plutôt que -1 comme id_rubrique. Je ne sais pas si ça pose un problème par ailleurs, en tout cas ça évite les urls qui commencent par un slash et tout à l’air de fonctionner correctement.

      Les fichiers modifiés sont : pages_pipeline.php, prive/squelettes/contenu/page_tous.html, prive/squelettes/navigation/page_tous.html

      Qu’en penses-tu ?

    • Avant SPIP 3, SPIP supprimait les articles étant dans des rubriques inexistantes ou si id_rubrique était « false » (et 0 est false). De nos jours, SPIP 3 a été corrigé et la branche 2.1 aussi par la même occasion. On pourrait donc revoir ce « -1 ».

      Mais en fait peu importe cette valeur, car on est pas censé l’utiliser, on met une valeur inexistante juste parce qu’il faut bien mettre quelque chose. Ce n’est pas pour autant que ça devrait faire planter des choses ensuite.

      Le problème vient donc plutôt du fait que d’autres parties du code (ici les URLs arbo) ne gèrent pas correctement le fait d’avoir un article n’ayant PAS de rubrique (ou ayant un numéro un peu débile). Il faudrait donc plutôt tenter de corriger le code des URLs arbo.

      C’est ici :
      http://zone.spip.org/trac/spip-zone/browser/_core_/branches/spip-3.0/plugins/urls_etendues/urls/arbo.php#L203

      Et en fait dans le « else » il faudrait tester que rtrim($url_parent,'/') soit non-vide avant de concaténer l’ensemble avec le slash au milieu. Car s’il est totalement vide, alors on devrait renvoyer pareil que lorsque parent=0.

    • Timestamp

      Merci pour l’éclairage historique.

      Effectivement j’avais d’abord pensé modifier le code qui génère les urls arbo. En même temps, si il n’est pas possible par défaut de créer des articles sans rubrique (ce qui me semble dommage) c’est parce que pour l’instant, SPIP est conçu dans l’idée qu’un article dépend toujours d’une rubrique, d’où le fait que ça ne soit pas pris en compte dans la génération des URLs, j’imagine. D’un kludge à l’autre, on s’y retrouve...

      Bref, pour l’instant je conserverais ce plugin patché, et si j’ai le temps, je me pencherais sur ce qui me semble mieux : que SPIP permette les articles sans rubrique.

    • Timestamp

      Bon, en fait gros bug, si id_rubrique est à zéro on ne peut plus modifier les articles... Je patcherais donc le fichier qui génère les urls arbo...

    • Timestamp

      Et merci beaucoup pour le patch !

    Répondre à ce message

  • 5

    Fait étrange : lorsque j’essaie d’afficher la page que j’ai créée (A-propos), spip utilise le squelette par défaut (article.html).

    Le seul moyen d’afficher le squelette dédié semble être de l’appeler dans l’URL (spip.php ?id_article=3&page=a-propos&var_mode=recalcul).

    SPIP 3.0.4 [19781] est installé dans un sous répertoire, sur un serveur mutualisé OVH. Dans l’HTACCESS, j’ai laissé la valeur par défaut de rewrite base. Je peux afficher d’autres articles avec urls réécrites sans souci.

    J’ai raté un truc ?

    • Je précise que j’ai bien renseigné le champ page dans le back office : a-propos.

    • Il n’a jamais été question de ça dans la doc. Ce n’est qu’un identifiant, pas le nom d’un squelette. Si on fait un squelette « a-propos » faut l’appeler avec page=a-propos, et dedans on peut appeler l’article ayant cet identifiant. Dans la todo je dois changer le champ « page » en « identifiant » (comme dans Menus, Formidable, etc) pour moins de confusion.

      Pour avoir un squelette différent pour un article précis, il y a déjà le plugin Compositions, et donc je préfère ne pas mélanger les genres, ya déjà un truc qui fait ça.

    • Ah ok, aux temps pour moi.
      Je vais installer compositions pour voir s’il est possible d’appeler la page unique avec une URL réécrite et un squelette donné.

      Merci,
      Julien

    • Bon visiblement on ne peut pas utiliser le plugin compositions sur une page. Ca me donne une page 404 (alors que ça fonctionne pour les articles auxquels j’ai attaché une composition).

    • Mmmh bizarre, parce que ce sont vraiment des articles comme les autres. Ya que id_rubrique=-1. Peut-être que ce dernier truc plante la recherche de compositions.

    Répondre à ce message

  • 4

    les urls ne se modifient pas automatiquement en fonction du titre ?
    par exemple j’ai une page avec un article « Mentions Légales ». Si je change le titre et la page en « Mentions Légalesss », l’url reste toujours en monsite.fr/mentions-legales.html (url arbo, spip 3.0.5 et c’est le seul plugin que j’ai pour l’instant)

    • Nin plus ni moins que les autres articles, les pages uniques sont des articles comme les autres gérés de la même manière sauf qu’ils n’ont pas de rubrique. Après avoir modifier l’article il faut cliquer sur le bouton « voir en ligne » pour générer une nouvelle URL.Sinon il faut activer la gestion avancée des URLs pour pouvoir voir le bloc de modif des URLs d’un objet éditorial, et dans ce bloc on peut supprimer/ajouter des URLs à un objet (ici un article).

    • Effectivement, le fait de cliquer sur « voir en ligne » modifie bien l’url, par contre j’ai bien la gestion avancée de l’url et le bloc de modif affiche toutes les anciennes url et je n’arrive pas à les supprimer, est-ce que ça ne vient pas du fait que le #parent est indiqué comme -1 ?

      par exemple dans pour mon exemple des mentions légale j’ai dans le bloc de modif des url :

      2 URLs
      URL N°  #parent Date
      mentions-legalesss 14 -1 21 octobre
      mentions-legales 14 -1 16 octobre

      et impossible d’en supprimer une des deux

    • Normalement il y a un bouton avec une petite croix rouge à la fin de chaque ligne d’URL. Dans tous les cas c’est la plus récente qui est générée, mais toutes les anciennes redirigent proprement vers la plus récente. Ça permet de changer d’URL sans casser les liens vers tes pages.

    • Oui j’ai bien vu la petite croix rouge lol mais justement en cliquant dessus ça ne supprime pas l’url.
      Les redirections fonctionnent bien c’est juste que ça ne se comporte pas exactement de la même manière qu’un article « classique » classée dans une rubrique où là si je change le titre et que je supprime l’url il ne m’affiche bien plus qu’une seule url, la plus récente.
      En tout cas merci pour ta disponibilité.

    Répondre à ce message

  • 2

    Bonjour à tous !

    Pour ne pas afficher les pages uniques sur le sommaire d’un site avec Zpip, dans squelettes/contenu/page-contenu j’ai mis :
    <<

    <BOUCLE_articles(ARTICLES) {!par date} {pagination 5}{id_rubrique>0}>

    Ca a l’air de marcher...
    Est ce une bonne solution ?
    Sinon, quelle est LA solution !?

    Merci d’avance !

    • Oui oui, pour l’instant je pense que c’est le mieux (et ça ne casse pas en plus quand on désactive vu que ça teste avec un champ présent de toute façon, ce qui n’est pas le cas si on utilise « page »).

    • Oui oui, pour l’instant je pense que c’est le mieux

      Merci, ça flatte mon ego !!!

      En espérant que ça en aide d’autres !

    Répondre à ce message

  • 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

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

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