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

  • 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

  • 1

    En SPIP 2.1.12 j’ai un soucis sur le multilinguisme. L’interface de langue est active sur l’article mais aucun changement de la langue, ni les liens de traduction ne sont enregistrés.

    • Il me semble avoir déjà vu passer un report de bug similaire, mais en fait je n’ai jamais utilisé ce plugin dans un contexte multilingue (ou alors petit, donc j’utilisais multi dedans). Du coup je n’ai jamais pu tester quel était le problème.

    Répondre à ce message

  • 5
    Tropicaloo

    Bonsoir, un petit retour de test sur 3.0 beta.

    Sur un SPIP 3.0.0-beta [18576] et Pages 0.3.7 [53442] : une fois téléchargé depuis la page « Ajouter des plugins », il est impossible d’activer le plugin dans la page "Liste des plugins. Celui-ci reste grisé et la case à cocher pour l’activation est absente. De plus le titre < multi > du plugin affiche toutes les traductions disponibles.
    Cordialement.

    • En fait il y a une incohérence entre la page de doc et le plugin.xml du plugin. Dernièrement tous les XML décrivant les plugins ont été revu pour vérifier la compatibilité à SPIP, et dans le doute on ne laissait que jusqu’à la stable (puisque peu de plugins ont été testés pour 3.0).

      Pour tester il suffit de modifier le XML et changer la compatibilité à SPIP pour mettre [2.0.0 ;3.0.*] par exemple.

      Et si ça marche il faut changer pour de bon le XML.

    • -  Le passage en [2.0.0 ;3.0.*] pour le fichier plugin.xml est OK. Le plugin s’installe correctement.

      -  la balise <multi> ne semble pas exploitée dans le <nom> du plugin. Seul le <slogan> prend en compte le paramètre multi.

      -  Malheureusement le plugin ne fonctionne pas ensuite. Lors de la création d’une page unique ou de la conversion d’une page déjà existante, on obtient le message d’erreur : Fichier articles_edit introuvable (test effectué en local sur un wampserver)

    • Donc il n’est pas compatible SPIP 3. En effet le nom de tous les exec ont changé.

    • Ah mais non je raconte n’importe quoi !

      Le plugin marche très bien sur SPIP 3, mais c’est un autre paquet (qui n’a pas encore de ZIP) !

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

    • Super tip top, ce paquet marche nickel !
      Merci beaucoup.

    Répondre à ce message

  • Bonjour,

    d’abord merci pour ce plugin bien utile.
    J’aimerai savoir comment enlever l’auteur qui apparait lorsque la page est créée.
    Lorsque je clique sur ma page Contact, Dans la même rubrique apparaît avec toutes mes pages uniques alors que j’ai enlevé cet affichage de ma page article.
    Pourriez-vous me comment modifier ces paramètres ?
    Merci

    Répondre à ce message

  • 1

    J’ai l’impression que les articles créés sous forme de Page avec le plugin posent problème lors de la mise en place des URL arborescentes.

    Alors que celles-ci fonctionnent pour les autres articles du site sous la forme monsite/repertoire/marubrique/article/monarticle elles sont tronquées pour les articles de type Page unique : monsite/article/monarticle seulement, sans prendre en compte le sous-répertoire déclaré dans RewriteBase le htaccess

    Je suis en SPIP 2.1 avec la version : 0.3.7 [49315] du plugin.

    • Je me répond à moi-même. Il semble que le problème vienne plutôt des URL arborescentes qui peuvent poser problème quand le site est dans un sous-répertoire, et non pas du plugin Pages uniques.

    Répondre à ce message

  • 4
    Valéry

    La rubrique en question n’apparaît pas dans les boucles rubriques en effet mais quand je suis sur l’un des articles de type « Page unique » dans un squelette qui prévoit d’afficher tous les articles de la même rubrique (boucle ARTICLES avec le critère id_article), SPIP m’affiche la liste des pages unique (normal a priori car ils partagent tous le même identifiant de rubrique -1). Mais du coup c’est peu pertinent ces pages n’ayant rien à voir entre elles.

    Est-ce un comportement conforme à celui prévu par le plugin ? Ya-t-il un moyen pour l’éviter (j’ai pour l’instant exclu la rubrique -1 par un critère).

    Je suis en SPIP 2.1.8 [16966] avec la Pages 0.3.2

    • Je n’ai pas d’avis précis là-dessus. On pourrait dire que dès qu’il y a un critère « id_rubrique » dans une boucle article, alors on exclu les pages. Après si on veut avoir toutes les pages uniques, pour un plan par exemple, on peut utiliser {page != ""}.

    • je voudrais exclure les pages uniques de la navigation mais je n’arrive pas à réutiliser ton exemple ci-dessous :
      {page !=""}

      pourrais-tu dépanner mes neurones ?

      merci

    • Relisons la phrase : l’exemple que tu cites est pour faire l’inverse de ce que tu demandes.

    • Oui mais lorsque je mets {page=""} je n’ai plus aucun article dans la navigation.

      qu’elle est la bonne syntaxe ?
      merci

    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