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.

Convertir un article en page ou une page en article

Il est possible à tout moment de convertir un article existant en page unique, et inversement. Dans le premier cas il faudra fournir un identifiant unique conformément à la présente documentation, et dans le second cas il faudra spécifier une rubrique pour l’article.

Capture d'écran du lien de conversion d'un article en page unique

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

107 discussions

  • 4
    Marcel Dugenoux

    Bonjour,

    Ce plugin est super et très utile. Mais existerait-il un moyen simple (peut-être une boucle) qui permette aisément de faire en sorte que ces pages uniques, quand on les utilise à des fins non-rédactionnelles proprement dites, ne soient pas indexée par les moteurs de recherche, voire même pour certaines pas accessibles en tant que telles à l’affichage en tant “qu’article”?
    Bonne continuation et tous les encouragements possibles à l’équipe de Spip!

    • Hello, les pages uniques ne sont déjà pas listées par défaut dans les boucles, donc n’apparaissent absolument pas dans les listes d’articles.

      L’indexation dans les moteurs n’a pas de rapport avec le plugin, ça c’est propre aux templates HTML de chacun⋅e.

    • Marcel Dugenoux

      Je me répond à moi-même pour dire ce que j’ai fait en attendant commentaires si c’est pas bon et/ou si il y a mieux

      -  pour l’affichage en tant que page j’ai ajouté des restrictions

      page!=nompage

      dans la boucle principale du squelette

      article.html

      et qui font que les-dites pages une fois appelées retournent une erreur 404 plutôt que leurs contenus

      -  pour les moteurs j’ai ajouté des lignes dans un fichier

      robots.txt.html

      personnalisé de type

      Disallow: /spip.php?article16

      ....

      bon dimanche

    • Marcel Dugenoux

      RastaPopoulos, merci pour ton retour! Mon problème n’était pas qu’elles apparaissent dans les listes d’articles mais pour certaines qu’on puisse les afficher comme s’il s’agissait d’articles à part entière en appelant leur url quand certaines sont simplement utilisées pour pouvoir éditer facilement des coordonnées ou informations intégrées à l’interface publique.

    • Marcel Dugenoux

      RastaPopoulos merci pour ton retour. Mon problème n’était pas qu’elles n’apparaissent pas dans les liste mais que leur contenu n’apparaisse pas quand on appelle leur url spip car il s’agit de pages contenant des informations affichées dans l’interface publique et pouvant ainsi être éditées et modifiées facilement. (j’ai posté une première réponse mais elle a disparu - si elle réapparaît désolé pour le doublon)

    Reply to this message

  • 1

    Bonjour,

    Le plugin affiche très correctement un fond “content/article=mapage.html”, mais semble ignorer tous les autres dossiers Z_blocs comme “aside/” ou "head/", est-ce un comportement prévu, ou une partie de code restée inachevée ?

    Visiblement, le fond “aside/article=mapage.html” n’est pas pris en compte, c’est plutôt gênant.

    La fonction pages_styliser($flux) ne semble traiter que le dossier principal “content/” . :
    https://git.spip.net/spip-contrib-e...

    Merci pour vos retours !

    Reply to this message

  • 2

    Bonjour,
    mini glitch, mais sans conséquence.
    Avec le plugin Pages 2.0.1, si on met un mot-clé sur une page unique, il est bien pris en compte dans les boucles ARTICLES (en prenant en compte ce qui est indiqué à la fin de cet article).
    Les pages uniques sont comptabilisées sur la page de mot-clé (du type monsite.com/ecrire/?exec=mot&id_mot=7), mais ne sont pas affichées contrairement à des articles classiques.
    Merci pour ce plugin super pratique !

    Reply to this message

  • 2
    Pierrot

    Petite question potentiellement déjà traitée mais je ne trouve pas ... Existe-t-il un moyen pour transformer des articles en page (genre Mentions Légales qui ont été traités comme des articles normaux dans la fameuse rubrique fourre-tout évoquée) ?
    Je me doute que copier-coller le contenu fonctionne mais je me disais qu’il serait pas mal d’avoir par ex. dans le menu déroulant des rubriques d’un article une espèce de pseudo-rubrique “Page unique” qui permettrait cette bascule ...

    • Hello, as-tu installé le plugin ? Parce que ça fait partie des fonctionnalités de base depuis la toute toute première version :)

      Il y a des liens pour basculer de l’un à l’autre dans les deux sens.

    • Pierrot

      Euh oui, et j’ai lu toute la doc mais j’ai pas pensé à juste vérifier dans les articles eux-mêmes ... pour ma défense c’est pas écrit gros et même en le sachant j’ai mis une bonne minute à voir le “Convertir en page” sous “Voir en ligne à gauche” ... et maintenant que j’ai le mot “Convertir” une recherche me montre qu’une question du genre avait été posée sauf que j’ai recherché “Transformer”.

      Pour me faire pardonner je veux bien le rajouter dans la doc ici, j’avais un login je vais regarder comment faire ça.
      Merci !

    Reply to this message

  • 1

    Bonjour
    Je viens de configurer ce plugin avec Spip 4.2.5, pour mes besoins de pages “contact”, “mentions légales”, et “inscription liste de diffusion”. Tout fonctionne parfaitement.
    Mais dans le pipeline “boite_infos”, je ne souhaiterais pas l’insertion automatique du choix “convertir en page/convertir en article” : cela peut générer des erreurs selon les compétences des rédactrices et rédacteurs.
    Est-ce que l’affichage de ce choix ne pourrait pas être une option dans la configuration du plugin ?

    Merci.

    Reply to this message

  • 3

    Bonjour,

    Tout d’abord merci pour ce plugin très pratique.

    Je rencontre cependant un souci avec l’utilisation de l’url de l’article qui me renvoie systématiquement vers le squelette générique «article.html»
    au lieu du squelette spécifique «contact.html»

    url article : https://www.cartepostaleoloron.fr/contact (=> article.html)

    Page forcée : https://www.cartepostaleoloron.fr/?page=contact (=> contact.html)

    Je pensais me retrouver le même squelette contact.html pour ces deux urls.

    Je suis en:
    SPIP 4.2.3
    plugin Pages : 2.0.0

    J’ai peut-être un raté dans mon paramétrage ou bien une mauvaise compréhension de cette fonctionnalité ?

    Merci de votre aide.

    • La doc juste ci dessus indique bien “Cela utilisera donc le squelette normal « article.html »” :)

      Par contre ya un truc qui a été ajoutée ya 3 ans et pas mis dans la doc ensuite, c’est faire un squelette “article=identifiantdelapage.html”. Là ça l’utilisera au lieu de “article.html”.
      https://git.spip.net/spip-contrib-extensions/pages/src/branch/master/pages_pipelines.php#L444

    • Je raconte n’importe quoi en plus, ça a bien été ajouté dans la doc !

      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.

    • Merci RastaPopoulos pour ce retour rapide.
      J’ai bien créé un squelette «contact.html» mais je comprends que je dois l’appeler «article=contact.html» pour qu’il soit pris en compte par l’url de l’article.
      Ma presbytie me perdra... Merci encore !

    Reply to this message

  • 5

    Bonjour,

    Je suis en train de migrer un site en 4.2 et j’active systématiquement l’affichage des erreurs avec les directives SPIP_ERREUR_REPORT (en phase de développement ...)

    Dans l’espace privé, la création d’une nouvelle page fait ressortir une erreur bloquante dans la fonction pages_affiche_milieu_ajouter_page() :

    Deprecated: preg_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated in /home/vero/www/enviroboite4.jdc/spip-v4.2.2/plugins/auto/pages/v2.0.0/pages_pipelines.php on line 51

    Par ailleurs, l’accès en édition d’une page existante est impossible : le bloc affiche_milieu est vide, mais sans message d’erreur.

    Question subsidiaire : comment ne pas tout bloquer en conservant define('SPIP_ERREUR_REPORT', E_ALL^E_NOTICE); ?

    Merci pour ce plugin que j’exploite depuis bien longtemps !

    • Bonjour,

      je ne reproduit pas.

      Du reste normalement cette erreur n’a rien de bloquante.

      Je pense, au vue de l’analyse du code, que vous avez quelque chose EN amont qui renvoie un affiche_milieu vide, et c’est ce qui provoque cette erreur, et non l’inverse.

      Avez vous testé en désactivant les autres plugins ?

    • Merci pour cette réponse rapide !

      J’ai désactivé tous les plugins, vider les caches (vider les dossiers /tmp, /local) : pas de changement ?

      Lorsque je supprime la directives PHP error_reporting(E_ALL^E_NOTICE); une chaîne de caractère s’affiche en édition.

      Ci-joint captures d’écran.

    • Capture d’écran en édition sans directive error_reporting

    • C’est très étrang.

      Quelle est la configuration PHP ? Quelle est l’url qui produit cela ? Est-ce en ajax ?

    • Je viens de tester le plugin sur une nouvelle installation (même configuration : php 8.2.5) et effectivement, il n’y a ps de soucis.

      Le projet en question est une migration que je prépare ... tout se passait bien, jusque là !
      En examinant la table articles, j’ai constaté que les identifiants de page avaient sauté ... mais même en les rétablissant à la mano, j’ai toujours le même problème.
      J’ai scruté la table metas, pas simple à nettoyer ....

      Je vais repartir sur une nouvelle installation.

      Désolée pour le dérangement et encore merci.

    Reply to this message

  • Testé avec succès sur un Spip 4.2.2 en ayant activé la compatibilité 4.1

    Reply to this message

  • Bonjour,

    je voudrais soulever un bug avec le plugin et l’url canonique. Pour 2 pages, tout se passe bien. Par contre, j’ai un soucis d’url canonique pour deux autres qui indiquent :

    https://monsite.fr/spip.php?page=rubrique&id_rubrique=-1

    D’où cela peut-il venir ? J’ai beau changer l’url ça ne change rien.

    Reply to this message

  • 2

    Bonsoir,
    Je suis en SPIP 4.1.2
    J’ai un problème d’affichage de la liste des pages : un message me dit que “Il n’y a aucune page pour l’instant.” alors que je sais qu’il y en a !
    Une fenêtre d’erreur SQL 1054 s’affiche aussi (en PJ)
    Quelqu’une ou quelqu’un peut-il m’aider
    Merci
    Patrice

    • Ok oui le SQL généré est fautif là, “0+titretitre” ça ne peut pas exister. Donc il faudrait comprendre qu’est-ce qui génère ça.

      Est-ce que tu as testé d’abord sans aucun autre plugin ? C’est toujours comme ça qu’on teste, pour ne pas confondre avec un conflit venant d’un autre plugin.

    • Bonjour et merci beaucoup RastaPopoulos.
      Effectivement, c’est le “Tri des articles” dans le “Couteau Suisse” qui bogue !
      Je garde bien ce conseil de désactiver les plugins avant toute autre piste de recherche.
      Ce soir je dormirais moins bête !
      Bonne journée,
      Patrice

    Reply to this message

Add a comment

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.

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