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

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

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

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

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

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

    Répondre à ce message

  • 2

    Bonjour

    Merci beaucoup pour ce plugin très pratique !

    Je voulais savoir s’il était possible de modifier les url d’appel des pages uniques pour avec de belles urls avec le titre de la page plutôt qu’une variable ?page=legal (par exemple)

    Avec les urls qs lorsque j’appelle monsite.fr/ ?mentions-legales je tombe sur une erreur 404 alors que c’est bien le nom de mon article (et que pour les autres articles cela marche).
    Doit-on forcément appeler le squelette via l’url même si on l’appelle dans la boucle de l’article ?

    Bonne continuation

    • Les pages sont des articles, dont ils ont déjà des URL propres. D’ailleurs tu dois forcément le voir dans l’interface d’admin, à priori. Après tu peux utiliser Compositions pour leur affecter un squelette précis autre que article.html. Une fonctionnalité à rajouter (en option sûrement) serait de permettre comme Compositions mais simplifié, juste pour les pages, en leur affectant optionnellement directement le squelette du nom de l’identifiant.

    • Ah d’accord ! Parce que oui j’ai accès à la page unique via son url (je sais pas pourquoi il m’avait fait une erreur précédemment) mais il prend le squelette article et non le squelette spécial legal.html

      On ne peut donc pas combiner un squelette dédié (comme dans le dernier exemple de boucle) et une belle URL via ce plugin seul mais il faut passer par Composition, c’est bien ça ?

      Merci pour cette réponse rapide !

    Répondre à ce message

  • Bonjour

    Merci beaucoup pour ce plugin très pratique !

    Je voulais savoir s’il était possible de modifier les url d’appel des pages uniques pour avec de belles urls avec le titre de la page plutôt qu’une variable ?page=legal (par exemple)

    Avec les urls qs lorsque j’appelle monsite.fr/ ?mentions-legales je tombe sur une erreur 404 alors que c’est bien le nom de mon article (et que pour les autres articles cela marche).
    Doit-on forcément appeler le squelette via l’url même si on l’appelle dans la boucle de l’article ?

    Bonne continuation

    Répondre à ce message

  • 2

    Les pages uniques n’apparaissent pas dans le sitemap.xml généré automatiquement par spip et que l’on trouve par http://mondomaine/sitemap.xml

    Le sitemap.xml étant important pour le SEO depuis les Google Webmasters Tools, l’absences des pages uniques est franchement gênant.

    Une idée de comment améliorer les choses et notamment en sachant quel(s) fichier(s) modifier pour que le sitemap généré soit complet ?

    Merci d’avance,

    Hervé

    • Bah en surchargeant le squelette du sitemap.

    • Merci de ta réponse.

      en fait, j’ai trouvé tout seul qu’il fallait modifier /squelettes/sitemap.xml.html, mais je n’avais pas eu l’indiquer en répondant à ma propre réponse.

    Répondre à ce message

  • 2
    stefdn

    Bonjour,

    Les contenus des pages uniques ne sont pas indexés par le plugin Fulltext :
    -  2 articles identiques, l’un en Page , l’autre « normal » dans une rubrique ;
    -  recherche Fulltext sur un bout de phrase entre guillemets ;
    -  seul l’article « normal » ressort.

    Comme je n’ai pas trouvé grand chose sur le sujet :o/ je me demande si c’est normal ? Y a-t-il un moyen de les indexer ?

    Merci pour vos lumières


    -  Apache/2.2.22 (Debian)
    -  MySQL : 5.5.47-0+deb7u1-log
    -  Extension PHP : mysqli
    -  PHP Version 5.4.45-0+deb7u2

    -  SPIP 3.1.1 [22913]
    -  Fulltext 1.1.11
    - - /.../.../pdftotext
    -  Pages 1.3.0

    • Fulltext n’indexe rien du tout, enfin pas comme tu le penses là, c’est une recherche direct dans les tables demandées.

      Ya pas de « boucle Fulltext » quoi , ce sont des boucles (ARTICLES) ou autres habituelles.

      Par contre par défaut les boucles d’articles ne sortent PAS les pages uniques, tant que tu n’as pas de critère {tout}, {page} ou {id_rubrique}. Mais pour « page » par exemple, tu peux mettre le «  ? » pour que ce ne soit pas appliqué par défaut, ça fera quand même faire apparaitre les pages à priori.

    • stefdn

      Merci !

      Sur une boucle ARTICLES {recherche}, sortie de la dist, le critère {page?} ne retourne rien

      Par contre, {tout} passe :o)

    Répondre à ce message

  • Pour info : deux notices sous SPIP 3.1.1 lorsque l’on est en edition d’article dans le B.O.

    Notice : Undefined index : champ_page in plugins/auto/pages/v1.3.0/pages_pipelines.php on line 187

    Notice : Undefined index : champ_page in plugins/auto/pages/v1.3.0/pages_pipelines.php on line 192

    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