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

    Répondre à ce 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 !

    Répondre à ce 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.

    Répondre à ce message

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

    Répondre à ce 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.

    Répondre à ce 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

    Répondre à ce message

  • 4

    Bonjour,
    J’ai une question simple quant à la gestion des pages uniques.
    Lorsqu’on mets une page à la poubelle, celle-ci reste visible dans le backoffice alors que lorsque on supprime un article celui-ci disparait de l’interface.
    Il y a t’il une raison à cela ? Ou est-ce une erreur ?
    Merci,
    JuL

    • La liste est construire comme ça :
      https://git.spip.net/spip-contrib-extensions/pages/src/branch/master/prive/squelettes/contenu/pages.html#L4

      Donc normalement ça doit montrer ce que ton statut utilisateur a le droit de voir, si je comprends l’idée (c’est po moi qui ai ajouté ça).

    • Bonjour RastaPopoulos,
      Dans ce cas la subtilité se place peut-être du coté des articles. Mon constat repose sur la différence d’affichage entre les pages et articles qui sont au fond la même chose (si on laisse le concept de rubrique de coté). Ce serait plus cohérent, je pense, si les pages supprimées n’apparaissaient pas, comme c’est le cas pour les articles.

    • Ah tiens c’est moi qui avait amendé ce squelette il y a 9 ans : https://git.spip.net/spip-contrib-extensions/pages/commit/286abf08ed6486029b7aa7b557036bc151219cfc

      De mémoire l’objectif était d’obtenir ce que tu décris Jul : que la page  ?exec=pages se comporte de la même façon que  ?exec=articles pour les statuts.

      La partie du code concernant le statut a donc été repris tel quel de la page  ?exec=articles :

      #SET{statuts,#SESSION{statut}|statuts_articles_visibles}
      [(#ENV{id_auteur,''}|=={#SESSION{id_auteur}}|oui)
      	#SET{statuts,#GET{statuts}|array_merge{#LISTE{prepa}}}
      ]
      <INCLURE{fond=prive/objets/liste/articles,statut=#GET{statuts},par=date,id_auteur=#ENV{id_auteur,''},nb=30,env,ajax}>

      Mais par contre je reproduis pas ton problème Jul :

      lorsque on supprime un article celui-ci disparait de l’interface.

      Moi j’ai pas ça : quand je mets un article à la poubelle je le vois toujours dans la liste sur ?exec=articles
      Après ça dépend de son propre statut d’admin ou pas, mais en principe il devrait y avoir parité entre les 2 pages.
      Tu aurais plus d’infos pour reproduire ?

    • Bonjour,
      Ok, je comprends mieux mon « problème ».
      Quand je suis dans le contexte d’une rubrique, les articles supprimés sont invisible mais ils sont visibles dans la page /ecrire/ ?exec=articles.
      Je m’attendais à ce que les pages soient également invisibilisés.
      Autres points, vous prévoyez la prise en charge par Corbeille ?
      Merci

    Répondre à ce message

  • 4

    Bonjour,

    Je souhaiterais supprimer l’affichage des aside/extra depuis une structure en Z avec une page unique que je trouve bien pratique.
    J’ai essayé avec un squelette article=legal.html
    en mettant des fichiers vides pour aside/article=legal.html et extra/article=legal.html
    Mais ces squelettes aside/extra sont ignorés.
    Y-a-t’il un moyen d’y arriver ?

    Merci

    Mikel

    • le plus propre ça reste d’utiliser les Compositions (plugin) qui elles sont bien pris en compte par le mécanisme Z

    • Merci RastaPopoulos,

      Je vais donc voir avec Compositions.
      Mais, j’aurais aimé garder les avantages et la simplicité des pages uniques.

    • tu peux appliquer des compositions sur une page unique par contre (c’est un article comme un autre) pour ne pas l’avoir dans l’arbo

    • Ah, très bien. C’est une bonne nouvelle.
      Merci !

    Répondre à ce message

  • 1

    Pages Uniques et Multilinguïsme

    Bonjour,

    configuraion : Spip 3.2.8 avec (entre autres) les plugins
    -  Pages 1.5.2
    -  Secteur par langue
    -  Site multilingue facile
    -  Traduction entre les rubriques

    Quand je crée une page unique, j’ai bien les liens de traduction, par conte impossible de changer la langue. Le menu fonctionne, le lien de traduction aussi mais la langue reste affichée en français après avoir validé l’anglais comme langue de la traduction (voir image jointe).

    D’où deux questions :
    -  s’agit il d’un bug (connu) ?
    -  des suggestions pour gérér le multilinguisme pour les pages uniques (j’envisage de gérer avec des blocs multilingues l’intégralité de la traduction et un affichage en fonction du contexte = langue du secteur depuis lequel elle est appelée).

    Merci d’avance

    • Bonjour,

      J’ai exactement le même symptôme lors de la création de pages uniques. J’ai pu contourner le problème e créant d’abord un article, en créant sa traduction, puis en passant ces 2 articles en pages uniques ( « convertir en page unique » ).
      De cette manière la langue est bien conservée.

      En revanche, j’ai l’impression que la variable #LANG utilisée dans mon squelette article ne fonctionne pas sur ces pages uniques.

      Je vais essayer de creuser un peu plus loin...

      Si quelqu’un à plus d’info sur le sujet je suis intéressé.

      Merci.

    Répondre à ce message

  • 3

    Bonjour,

    Avec SPIP 3.2.8, la recherche dans l’espace privé (ecrire) de SPIP ne permet pas de trouver une page unique, que ce soit par un mot de son titre ou par son identifiant numérique.

    Ça fait donc des pages uniques un des rares objet de SPIP que la recherche intégrée à l’admin ne trouve pas.

    Un moyen de corriger ça ? (genre un filtre via le pipeline pre_boucle pour que ça ne soit plus exclus) ?

    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