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

  • Petite remarque : attention à avoir au moins une rubrique de créer dans votre SPIP. Si ce n’est pas le cas, il sera impossible d’ajouter une seconde page. Il n’y aura pas d’erreur, la validation se fait mais rien n’apparaitra.

    Répondre à ce message

  • 1

    Salut,

    Je crois que personne n’a posé la question mais je me demandais comment on pouvait restreindre l’accès à une page unique en utilisant le plugin accès restreint ?

    Merci...

    • Le plugin accès restreint est basé sur les zones qui contiennent des rubriques, donc là simplement je ne vois pas comment faire pour restreindre uniquement ces articles un par un.

      Faudrait essayer d’utiliser les pipelines de AR pour voir si on peut jouer là-dessus.

    Répondre à ce message

  • 2
    Philippe G.

    Je vais prendre un exemple pour faire simple : je veux reproduire le plan du site dans une page unique (exemple volontairement scolaire pour que je comprenne, j’ai le cerveau lent...) et pour cela je voudrais me servir du squelette déjà existant plan.html (pourquoi pas) avec un squelette que j’appelle volontairement inc-plan.html.

    Quelques autres questions...
    -  D’abord, est-ce possible sur le principe ?
    -  Dans mon cas inc-plan.html est-il un fichier indépendant ou bien autre chose ?
    -  Si, oui, dans le squelette appelé par la page unique, je peux donc utiliser du code SPIP ?
    -  si oui, si on compare au squelette fournit par la distribution, que dois-je mettre (de façon simplifié, pas utilise récupérer le code !) mettre dans inc-plan.html ?

    Si ça te pose trop de problème, contacte moi par mail, pas la peine de polluer ce forum. Mais je bute...

    • Mais une « page unique » ce n’est pas un squelette, c’est un *article* SPIP, mais qui n’a aucune rubrique.

      Je ne comprends pas pourquoi tu voudrais utiliser une page unique pour ton plan alors que c’est un squelette uniquement, et pas un article. Donc dans tous les cas tu vas appeler « page=plan ».

      Si : ça a un sens si tu utilises le plugin Compositions. Dans ce cas là il peut y avoir une composition « article-plan.html » et qu’ensuite tu choisisses cette Composition pour l’article « page unique » que tu veux faire. Dans ces cas là ça permet à la fois d’avoir les URL propre de l’article, mais d’avoir le bon squelette du plan qui sera dans la composition.

      Mais sinon, ça ne sert à rien, tu utilises juste « page=plan ».

    • Philippe G.

      VU, je crois que j’ai compris ! Merci :-)

    Répondre à ce message

  • 4
    Philippe G.

    Bonjour,
    Je suis en SPIP 2.0.10, avec le dernier plugin Pages 0.3.0 [35098].
    -  J’ai créé un squelette « inc-plan.html » qui reprend le squelette de plan.html de la distribution entre <BOUCLE_secteurs(RUBRIQUES) {racine} {par titre}> et </BOUCLE_secteurs>
    -  J’ai créé une page unique, ai placé inc-plan dans le champ page et l’ai enregistré, avec le titre « Plan du site » (Ca double la page « plan.html »)
    -  Sur les conseils de la page du plugin dans SPIP-Contrib, j’ai remplacé la première ligne du contenu de inc-plan.html par <BOUCLE_inc-plan(RUBRIQUES) {racine} {par titre}{page}> et la dernière évidement par </BOUCLE_inc-plan>
    -  J’ai mis en ligne ma page
    -  Total : rien ne se passe. C’est visible là si on clique sur le lien

    Où me suis-trompé ?
    Merci de vos lumières.

    • Les pages uniques sont des articles. (RUBRIQUE){page} ne donne donc évidemment rien.

    • Philippe G.

      Oui, je sais bien que ce sont des articles. Mais j’avais compris que le squelette de page était inclus dans une page html appelée page unique parce que rattachée à aucune rubrique. Moi, ce qui commence par rubrique, c’est le code de « page.html », qui est inclus dans une « page unique ». Ce n’est pas bon ?

    • Philippe G.

      Moi, ce qui commence par rubrique, c’est le code de « page.html », qui est inclus dans une « page unique »

      Autant pour moi. Il faut lite Moi, ce qui commence par (RUBRIQUES), c’est le code de « page.html », qui est inclus dans une « page unique ».

    • Philippe G.

      Je reviens sur tout ce que j’ai dis. je crois que je me trompe., et je vais essayer autre chose. A suivre.

    Répondre à ce message

  • 9

    Même problème pour moi : les articles sont créés, id_rubrique -1, mais le champ page n’existe pas dans la table articles !

    • Ah bah au moins on a ciblé le problème : cela veut dire qu’à l’installation du plugin ce champ n’est pas créé dans la base de données, alors qu’il devrait. Il faut donc voir depuis quand ça fait ça (j’ai cru voir un commit passer sur le fichier d’install).

    • pour ceux qui ont des problèmes de pages non crées, vous pouvez tenter de :

      • mettre à jour le plugin
      • désinstaller le plugin (via l’icone de désinstallation exprès)
      • réactiver le plugin.

      Si ça ne fonctionne toujours pas, il faudra regarder tmp/*.log mais il n’y a pas de raison !

    • Bon ben voilà, il manquait un petit morceau dans le dernier envoi de Marcimat, ça arrive à tout le monde. :)

      Il a corrigé ça tout à l’heure, donc en réinstallant complètement le plugin ça devrait désormais marcher.

    • bonsoir,

      c’est peut être moi, mais il semblerais que cela ne fonctionne pas.

      j’ai bien pu créer ma page, cela la bien garder en mémoire (pas comme précédemment) le titre apparais bien dans le menu de navigation mais lorsque je veut y accéder depuis l’espace publique la page est introuvable.

      ceci étant je débute donc...

      si quelqu’un à une solution je suis preneur.

      merci

    • Ça veut dire quoi page introuvable ? Ça fait une erreur 404 ? Ya une URL où on peut voir ?

    • Tu as du oublier de lui mettre le statut « publier » à tout les coups

      Vérifie aussi ton lien, il pointe vers quoi ?

      Ce plugin est aussi simple que génial. Manque juste une option pour choisir d’exclure de la recherche les pages uniques sans rajouter de critère dans la boucle de recherche.

    • bonjours,

      alors le site à bien le statu publié. mais par contra je n’ai pas le cadre en au à droite de l’article indiquant habituellement (voir image jointe).

      et voici le lien de la page :
      http://collection.spip.free.fr/spip.php?article6

    • Apparemment il s’agit bien d’une erreur 404.

      Comment sais-tu que l’article est bien publié puisque justement tu ne vois pas le bloc indiquant le statut de l’article ? Est-ce en ayant regardé dans la base de données ?

      Sinon c’est la première fois que je vois ce bloc de statut qui disparait, donc je ne sais pas du tout d’où ça peut venir pour l’instant.

    • et bien en fait quand je suis dans l’espace privé onglet « à suivre » il y à la liste des article, et la à gauche du titre un carrer indique la situation de l’article, et permet aussi de modifier cette situation. c’est d’ailleurs par la que je suis passé pour modifier celle-ci.
      de plus un lien dans le menu de navigation n’apparait que lorsque l’article est publier. une rubrique même plein n’apparaitra pas si aucun article n’est publié.
      pour la base de donné non je ne l’ai pas regardé. en fait j’ignore comment faire.

    Répondre à ce message

  • 2

    Bonjour

    J’ai un problème lorsque j’installe ce plugin : dès que j’essaye de créer une page unique celle ci ne s’enregistre pas. Quand je valide la page, je tombe directement sur un article à créer (comme si j’avais fait créer un article). le site est vide pour le moment, pas de squelettes non plus. Comme plugins activés : couteau suisse, bonux et porte plume

    une idée pour nous aider ?

    Merci d’avance !

    • j’ai parfois le même genre de comportement avec des articles standards, apparement uniquement sous FF 3.6.

      Pouvez vous dire votre navigateur ? Parceque page unique fonctionne à merveille chez moi.

    • Et en regardant dans la base de données ? Est-ce que dans la table spip_articles il y a des articles qui s’enregistrent ? Et si oui quel est leur numéro de rubrique ? Et est-ce que leur champ « page » est bien rempli ?

    Répondre à ce message

  • Bonjour,
    Je viens d’installer le plugin « Pages Uniques » et je fais face à un problème de taille : les pages ne s’enregistrent pas. A la création d’une nouvelle page il y a bien incrémentation de l’article et apparition sur la page d’accueil d’un lien vers une page vide.
    Elle ne contient aucun texte et les pages n’apparaissent pas dans la liste des pages uniques.

    J’ai parcouru les messages précédents et j’ai vu que le problème était déjà apparu. J’utilise Spip 2.0.10 et Ahuntsic. Auriez-vous une idée ?
    Merci.

    Répondre à ce message

  • 4
    Tropicaloo

    Bonjour,
    Existe-t-il une possibilité simple (à part le .htaccess) de gérer les URL propres lorsqu’on utilise l’affichage de l’article avec le champ « page » ?
    Merci pour vos conseils.

    • Je ne comprends pas bien la question. Si vous n’utilisez pas un squelette différent de celui par défaut pour les articles, alors vous faites #URL_ARTICLE, tout simplement, non ?

    • Tropicaloo

      Désolé, je me suis mal exprimé. Je cherche justement à ne pas utiliser la page article par défaut mais la page déclarée dans le champs « page ».

      J’obtiens dans ce cas une URL du type : spip.php ?page=notice

      Je cherche à obtenir : /-Notice-.html ou quelque chose de ce genre.

    • Dans ce cas, non alors. Rien à voir avec ce plugin en particulier évidemment, c’est un problème plus vaste qui concerne les URLs en général.

      Quoiqu’il y aurait une idée possible, ce serait d’ajouter une option « utiliser le squelette déclaré dans le champ page pour cet article ». Et ensuite d’utiliser le pipeline « styliser » pour rediriger vers le bon squelette lorsque l’option est choisi.

      Mais c’est donc un développement supplémentaire à ajouter au plugin. Et en ce qui me concerne, je n’ai pas trop le temps pour l’instant. Désolé.

    • Tropicaloo

      Merci pour ces infos. Je vais potasser ça de plus près.

    Répondre à ce message

  • 2

    Je rencontre le meme probleme que Arnaud au sujet du multilingue. J’ai trouve une solution dégueu et temporaire mais qui a le merite de fonctionner en attendant. J’ai changé la langue directement dans la bdd. un coup de phpmyadmin :

    UPDATE spip_mabase.spip_articles SET lang = ’en’ WHERE spip_articles.id_article =148 LIMIT 1 ;

    (on peut le faire via l’interface bien sur) et ca fonctionne. En attendant mieux

    • Bonsoir à tous !

      Avant toute chose, bonne année à tous et merci encore pour tout ce partage :)

      Un plugin vu par le passé permet d’associer un article à une rubrique. Cela permet d’avoir l’article XXX ouvert automatiquement lorsque l’on clique sur la rubrique YYY. Mais impossible de retrouver ce plugin.

      L’un de vous peut-il m’aider ?

    • Tropicaloo

      Si ce n’est pas trop tard, ici : http://www.spip-contrib.net/Afficher-directement-l-article-si

      (Ce n’est pas un plugin mais des boucles)

    Répondre à ce message

  • 8
    Matthieu Marcillaud

    Hop,

    Me voici pour utiliser à mon tour ton plugin RastaPopulos, et j’ai comme une petite appréhension :
    -  dans un squelette, mettre <BOUCLE_legal(ARTICLES){page=legal}>#TEXTE</BOUCLE_legal> fait quand absence du plugin, SPIP retournera une erreur SQL. C’est assez dommage si on veut proposer des squelettes qui ont des « pages » optionnelles sans nécessiter ce plugin.

    • RastaPopoulos

      Bonne remarque. Je n’ai encore jamais eu ce problème, car la très grande majorité du temps, les pages uniques utilisent tout simplement le squelette par défaut article.html. Je n’ai d’ailleurs jamais utilisé que ça, n’ayant jamais eu à faire un squelette ultra-différent pour une page unique.

      Mais c’est effectivement un problème. Je vais y réfléchir.

    • Et bien oui, l’erreur se produit bien :

      ========================

      ()
      Erreur SQL
      rubriques.id_rubrique, 0+rubriques.titre AS num, rubriques.titre, rubriques.lang FROM spip_rubriques AS rubriques WHERE (rubriques.statut = ’publie’) AND NOT((rubriques.id_rubrique IN ( SELECT L1.id_rubrique FROM npds.spip_mots_rubriques AS L1 INNER JOIN npds.spip_mots AS L2 ON ( L2.id_mot = L1.id_mot ) WHERE (L2.titre = ’Pas_dans_le_menu’)))) AND (rubriques.id_parent = 0) GROUP BY rubriques.id_rubrique ORDER BY num, rubriques.titre
      You have an error in your SQL syntax near ’SELECT L1.id_rubrique FROM npds.spip_mots_rubriques AS L1 INNER JOIN `npds’ at line 6

      ========================

      quelqu’un à réussi à le résoudre ?

    • Version il te faut une version de mysql plus récente (4.1 minimum).
      http://dev.mysql.com/doc/refman/5.0/fr/subqueries.html

    • merci,

      donc je ne peux pas utiliser le pug-in puisque je n’ai pas les droits pour en changer...

      est-il possible de transférer les articles produits en articles normaux ?

      si je me contente de désactiver le plugin la base de donnée sera nettoyée ?

      Vraiment dommage... c’était quelque chose qui manquait à spip depuis trèèèès longtemps (^_^)

    • Le plugin ne demande rien de particulier en terme de requête SQL. Pas plus que le SPIP de base je veux dire.

      Autrement dit, même sans ce plugin là, tu risques d’avoir de nouveau des problèmes un jour ou l’autre si tu ne mets pas ton SPIP sur un serveur MySQL plus récent.

      La très très grande majorité des hébergeurs ont une version supérieure à 4.1, sachant qu’actuellement la version stable est la 5.1 !!

    • J’ai pas l’impression que l’erreur vienne de ce plugin, mais plutot d’une boucle qui aurait une jointure {!mots.titre=Pas_dans_le_menu} . C’est l’expression {!xxx=yyy} qui nécessite MySQL 4.1 je crois plutôt dans ce cas précis. Cependant, la plupart des hébergements proposent des versions de mysql plus à jour que la 4.0.xx que tu as certainement (ecrire/ ?exec=info) pour vérifier.

    • Un grand merci pour la réponse.

      Tu as effectivement raison en transformant cette boucle l’erreur ne parait plus. Ce que je ne comprends pas, c’est pourquoi l’erreur n’est parue qu’a partir du moment où j’ai installé le plug-in...

      Pour la version mysql, c’est bien juste, je n’est pas la 4.1... pourtant je suis pas chez un gratuit... loin s’en faut...

      Mais je me vois mal déménager car j’ai des dizaines de listes et de comptes mail pour des personnes étant vraiment débutante en informatique... je crois qu’un tel déménagement serait scabreux... lol

    • Quel est ton hébergement ? Parce que c’est VRAIMENT pas normal de pas pouvoir avoir une version de MySQL à jour avec un service payant ! C’est quand même une question de sécurité et de compatibilité avec ce qui se fait actuellement en logiciel.

    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