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

104 discussions

  • 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

  • 2

    Hello

    Je souhaiterais pouvoir utiliser ce plugin avec selection d’articles et donc afficher dans la page exec=pages_tous, le bloc listant les articles sélectionnés et permettant d’en rajouter.

    Si je passe par le pipeline « affiche_milieu » de Selection d’articles, tout ce qu’il y a dans le flux est
    vars Array ( [args] => Array ( [exec] => articles_page ) [data] => )

    Le test sur exec=articles_page est-il suffisant pour s’assurer de bien etre dans la page exec=pages_tous ? A mon avis non... Mais si tu peux me donner une piste...

    Merci

    • C’est un bug, cf le code de l’exec, les autres pipelines sont bien renseignés.

      En fait il faudrait surtout mettre l’exec en squelette dans prive/exec plutôt. M’enfin c’est pas essentiel, faut juste corrigé l’appel du pipeline pour ton besoin.

      Pour SPIP 3 ça a déjà été mis en squelette dans le trunk.

    • Ok, j’ai corrigé. Merci

    Répondre à ce message

  • Bonjour,

    après installation du Plugin,

    dans la partie privée tout fonctionne correctement, j’ai su rédiger ma page et la valider.
    Mais rien n’apparaît dans la partie public (même via le lien voir en ligne à côté de l’article).
    J’ai bien plusieurs rubriques de crées et j’utilise la dernière version de Spip avec les plugins suivants :
    -  CFG - Compositions - Formulaires&Tables - Google Analytics - Spip Bonux et pages bien évidement.

    Si quelqu’un pouvait m’éclairer je serais le plus heureux car j’ai vraiment besoin de pouvoir utiliser ce Plugin.

    Merci à tous.

    MikL

    Répondre à ce message

  • Bonjour, et merci pour ce plugin simple et efficace. J’ai une suggestion à faire : je trouve que les pages uniques gagneraient à être affichées dans l’espace privé dans la page « édition ». Ce serait plus clair pour les rédacteurs.

    Merci encore !

    Répondre à ce message

  • 1

    Bonjour,

    merci pour ce plugin.
    je n’ai pas réussi à créer un évènement sur une page unique... est-ce possible ?
    merci d’avance pour les réponses.

    Ben

    • Aucune idée, je n’ai jamais essayé. Mais c’est bizarre que ça n’y soit pas, les pages étant des articles comme les autres. Tu n’as pas bloqué la création d’évènement à une rubrique précise ?

    Répondre à ce message

  • Et mieux encore, avoir un squelette « legal.html » dédié, dans lequel on n’a plus qu’à faire <BOUCLE_legal(ARTICLES){page}>

    Le 30 septembre à 09:20, par RastaPopoulos

    Ce plugin ne permet pas de faire ça ( un article <-> un squelette), ce n’est pas prévu pour l’instant. Pour utiliser un autre squelette que article.html pour tel ou tel article, on peut installer Compositions, qui est fait pour ça.

    Contradiction ou évolution du plugin ?
    ou faut-il, quoi qu’il en soit, styliser ou installer Composition ?

    je pose cette question car j’ai suivi simplement l’exemple du squelette legal.html et rien ne se passe ...

    Ceci dit, [(#PAGE|=={contact}|oui)#FORMULAIRE_TESTOU] dans article.hml suffit et fonctionne, dans ce cas-là (assez simple) du moins.

    Répondre à ce message

  • Très utile, hyper simple, il fallait l’inventer !

    Nickel ! merci :)


    Tout roule sur ma config :
    spip 2.1.2 tout frais, sur Linux ovh.net, PHP 4.4.9
    plugins :

    • cfg
    • Corbeille
    • Couteau KISS
    • Crayons
    • Enluminures typographiques pour SPIP 2 & Porte plume
    • Lecteur Multimédia en Flash
    • NoSPAM
    • Pages
    • Social tags
    • Thickbox v2

    Répondre à ce message

  • 8

    Bonjour et merci pour ce plugin

    installé sur spip 2.1. en version 0.3.2.
    Les trois pages crées s’affichent bien en frontoffice et en backoffice. Mais je rencontre une erreur dès que je veux modifier l’une des trois pages crées dans « Pages uniques » :


    Erreur SQL 1054
    Unknown column ’page’ in ’field list’ SELECT page FROM nomdemabase.spip_articles WHERE id_article=11
    SELECT page FROM spip_articles WHERE id_article=11


    Et si je modifie la page en ignorant l’erreur, il déplace la page dans une autre rubrique.

    Comment puis-je corriger ce pb ?

    • S’il ne reconnait pas le champ « page » c’est qu’il n’est pas dans la base de données, donc que le plugin n’a pas dû bien s’installer. Il faudrait vérifier dans la base si ce champ « page » existe bien dans la table spip_articles. Et sinon désinstaller complètement le plugin et le réinstaller.

    • merci !
      J’ai désinstallé et réinstallé le plugin.
      Désormais, plus de message d’erreur mysql quand je modifie une page, par contre, dès que j’enregistre la modif la page change toujours de rubrique (elle n’est plus accessible par « Pages uniques » mais par la rubrique 2).
      Dans phpmyadmin il y a bien un champ « Page » dans la table spip_articles mais il est vide. Que faudrait-il y ajouter ?

    • Ben rien, c’est au plugin de s’occuper de ça, pas à vous, donc il y a un bug, ou un conflit, en tout cas chez vous. Avez-vous bien désactiver tous les autres plugins que vous pourriez avoir lors de vos tests ? Il ne faut bien tester QUE le plugin Pages. Cf : Les choses à faire avant de poser une question.

    • j’ai désactivé tous les autres plugins (agenda, bonux, cfg, titre de logo, couteau suisse).
      désinstallé et réinstallé pages unique.
      vidé le cache.
      et re-testé la modif des pages uniques : le pb est le même : une fois modifiée la page unique change de rubrique.
      Config : spip 2.1.2, pages uniques 0.3.2, PHP Version 4.4.8, Version de MySQL : 4.1.22 .

      je vais tester le site sur un autre serveur pour voir...

    • À tester avec PHP 5 surtout, car la compatibilité PHP 4 n’est pas du tout assurée.

    • ok, merci beaucoup, pb résolu !

      après activation de php5 chez l’hébergeur, la création de nouvelles « pages uniques » et leur modification fonctionne. Par contre la modification des anciennes « pages uniques » ne fonctionnant toujours pas je suis allée renseigner le champ « page » de la table spip_articles directement dans phpmyadmin pour ces articles là.
      Et maintenant ça marche pour toutes les pages, anciennes ou nouvelles.

    • Pour les anciennes pages qui sont redevenues des articles normaux, normalement il y a un bouton « transformer en page » sur le côté (et inversement, on peut repasser une page dans une rubrique).

    • ok, merci !

    Répondre à ce message

  • 3

    Bonjour,

    Je suis en SPIP 2.0.9 et page V0.2.2.
    Quand je veux créer une traduction d’une page il me crée bien un nouvel article mais impossible de changer la langue, alors que tout fonctionne quand il s’agit d’article standard créé dans une rubrique.

    Est ce que quelqu’un rencontre le même problème ?

    Est ce qu’il est possible de régler le problème ?

    Merci Arnaud

    • Pour moi c’est un problème car je n’ai encore jamais eu à l’utiliser dans un cadre multi-lingue, du coup je n’ai pas testé ces possibilités.

      Il faudrait que quelqu’un ayant des aptitudes à développer et travaillant sur un site multilingue fasse quelques investigations dans le code pour voir ce qui bloque.

      En ce moment je n’ai pas trop le temps désolé. Mais pour rassurer, je ne pense pas que ce soit un problème très compliqué. :)

    • Bah j’ai regardé un peu..
      Coté symptômes : le champ (en base) spip_articles.lang ne se modifie pas, par contre, le champ spip_articles.id_trad passe à 0.
      Je pense qu’il faut partir de ecrire/action/referencer_traduction.php .
      La fonction instituer_langue_article() ne devrait pas poser de problème. Ça doit venir de action_referencer_traduction_dist().
      Je connais pas mal le PHP, mais pas les rouages de SPIP.
      Comment faire des modif sans toucher au core ?

    • nicofrand

      En attendant de trouver une solution au problème, vous pouvez passer la page en article, effectuer les modifications voulues sur la langue, et enfin repasser l’article en page. Il gardera les modifications effectuées.

    Répondre à ce message

  • 3

    Merci pour cet astucieux plugin. Mais j’ai sans doute raté qqch... j’ai fait une page unique de contact qui fonctionne. Je voudrais que cette page s’ouvre avec un squelette mofifié. Dans squelettes/ et je crée un doc « page_mail.html » et aussi, pour tester, un « article7.html » mais je ne réussis pas à las appeler... Quelle est la formule magique. Dans mon menu d’appel j’ai ceci :

    BOUCLE_contact(ARTICLES)id_article=7
    li
    a href=« #URL_ARTICLE »[ class=« (#EXPOSE) »] [(#TITRE|couper80)] /a
    /li
    /BOUCLE_contact

    • Ce plugin ne permet pas de faire ça, ce n’est pas prévu pour l’instant. Pour utiliser un autre squelette que article.html pour tel ou tel article, on peut installer Compositions, qui est fait pour ça.

    • Merci aussi pour ce plugin mais j’aimerais vraiment le faire fonctionner avec un squelette spécifique dédié à mon article en page unique. Et cela, sans utiliser Compositions qui ne me paraît pas judicieux pour ne gérer que 1 ou 2 article particulier.
      Depuis la disparition du plugin Squelette par mot clé que reste-t-il pour gérer cette fonctionnalité dans Spip 2 ?
      La méthode ancienne pour un squelette spécifique pour un article grâce aux filtres de test est-elle valable avec ce plugin ?

    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