Court-circuit 1

Accès direct aux articles et reset des squelettes par défaut pour éviter les diffusions intempestives.

Ceci n’est pas un jeu de squelettes à utiliser tel quel : c’est un reset qui permet de faire table rase, avant d’ajouter vos squelettes. Ce plugin peut donc être nécessité par d’autres, spécifiquement par des squelettes distribués.

Il court-circuite deux choses :
-  les squelettes par défaut de SPIP, qui renvoient en 404,
-  les rubriques, qui affichent directement leur premier article.

Reset des squelettes par défaut

Dans SPIP, vous bénéficiez constamment des squelettes par défaut, ceux de la « dist », qui affichent les contenus de chacun des objets éditoriaux de SPIP. Ces squelettes sont rarement utilisés en l’état, puisque vous les personnalisez en les copiant dans votre propre répertoire « squelettes » afin de construire votre site bien à vous.

Ce faisant, il est rare que vous ayez besoin de la totalité des squelettes par défaut de SPIP. Vous personnalisez article.html et rubrique.html, bien sûr, mais vous ne copiez jamais la totalité des fichiers de la dist. Quelle erreur ! Car ils fonctionnent tout de même, diffusant les contenus, alors que vous ne le souhaitez peut-être pas.

Pour empêcher cela, ce plugin surcharge les squelettes par défaut, qui renvoient alors une page d’erreur 404 :

-  agenda.html
-  agenda_jour.html
-  agenda_mois.html
-  agenda_periode.html
-  agenda_semaine.html
-  auteur.html
-  backend-breves.html
-  breve.html
-  nouveautes.html
-  plan.html
-  site.html

Tous les squelettes ne sont pas surchargés, car l’objectif est tout de même de publier, pas tout ni par mégarde, mais bien de publier, en particulier des articles. Ce plugin est moins radical que « SPIP reset
 », car il préserve l’objectif de publication. Notez donc que ces squelettes sont préservés dans leur fonctionnement natif :

-  sommaire.html, car il faut bien une page d’accueil
-  article.html, car c’est l’entité minimale d’affichage de contenu dans SPIP
-  404.html, sans quoi ce plugin ne fonctionnerait pas
-  ainsi que les pages de diffusion : backend.html et sitemap.html
-  et les noisettes (inclures et modèles) qui peuvent être utilisées comme briques élémentaires pour construire vos squelettes.
-  sauf rubrique.html, dont le comportement particulier est expliqué ci-dessous.

Le site reste donc fonctionnel et navigable lorsque ce plugin est activé.

La personnalisation du site se poursuit comme d’habitude : en installant un jeu de squelettes et en plaçant vos fichiers squelettes personnalisés dans votre dossier « squelettes ». Pour mémoire, relire : « Où placer les fichiers de squelettes ? ».

Accès direct aux articles

Le squelette rubrique.html de ce plugin a un comportement un peu particulier, qui pourra vous sembler déroutant de prime abord, mais dont vous ne pourrez bientôt plus vous passer. Il n’affiche pas une « rubrique » traditionnelle, mais directement un article, plus précisément :
-  le seul article de la rubrique,
-  ou l’« article d’accueil » de la rubrique défini via le plugin homonyme,
-  ou celui numéroté comme étant le premier (cf. : « Classer selon la date ou selon un ordre imposé »),
-  ou le dernier en date.

Exemple 1 : la rubrique « Présentation » qui s’affiche en onglet dans la barre de navigation, ne contient qu’un seul article, intitulé « Notre association », qui contient le texte de présentation de l’association. Lorsqu’on clique l’onglet, ce texte s’affiche aussitôt.

Ce court-circuit se fait par une inclusion de l’article, dans le squelette rubrique.html, ce qui permet de bénéficier de l’environnement approprié : le fil d’Ariane et les #EXPOSE fonctionnent donc de façon cohérente.

Exemple 2 : vous ajoutez ensuite un article « Statuts de l’association » dans cette rubrique, dont vous numérotez les articles ainsi : « 1. Notre association » et « 2. Statuts de l’association ». Lorsqu’on clique l’onglet, c’est toujours le texte de présentation qui s’affiche. Le menu de sous-navigation latérale, marque bien la page « Notre association » comme étant celle visitée et propose un lien vers les « Statuts de l’association ». Notez qu’aucune intervention de webmestre n’a été nécessaire jusque là.

Mais comment afficher une rubrique quand même ? Comme d’habitude ! En créant un squelette dédié. En effet, ce court-circuit n’altère pas le fonctionnement natif de SPIP sur ce point : on bénéficie toujours des mêmes règles. Pour mémoire relire : « Les variantes de squelette ».

Exemple 3 : vous avez besoin d’une rubrique d’actus. Il suffit de programmer un squelette « rubrique-2.html » et de le déposer dans votre dossier « squelettes », pour afficher une liste d’actus. Vous auriez pu préférer ne pas afficher cette liste, mais directement la dernière actu : dans ce cas, n’ajoutez pas de squelette et laissez le court-circuit opérer.

Pour annuler complétement ce court-circuit des rubriques, il suffit de placer un squelette rubrique.html dans votre dossier « squelettes ».

Compatibilités et perspectives

Ce plugin est une contribution simple, à base de squelettes, donc stable et robuste, qui ne fait que proposer une approche, tout en continuant de tirer profit du merveilleux fonctionnement des squelettes de SPIP (voir aussi : « La notion de chemin »).

Ce plugin fonctionne très bien avec les squelettes par mot-clef et devrait être agréablement complété par des plugins comme « Squelette par mot clef » ou « Compositions », ou n’importe quel jeu de squelettes.

Evolutions possibles
-  Ce pourrait être géré en amont, comme le suggère Valéry, plus radicalement, par un paramètre dans mes_options (ou via panneau de config) qui indiquerait à SPIP de ne pas tenir compte des squelettes par défaut.
-  Mieux vaudrait effectuer une redirection plutôt qu’une inclusion. Hmm, vraiment ?
-  Il faudrait prévoir Le nouveau plugin « Articles d’accueil » propose un mécanisme autre que l’attribution de mot-clé ou la numérotation des titres, pour désigner un « article d’accueil de rubrique ».
-  Il n’est pas compatible avec Z-SPIP (même avec Compositions), dont l’approche cloisonnée ne permet pas de rediriger les rubriques vers les articles.
-  Pour compléter la série des réglages préalables à la composition de squelettes, ce plugin pourrait intégrer un court-circuit de secteur, un peu comme les plugins « Masquer » ou « Exclure secteur ».

Pour en savoir plus, lire aussi : Zapper les squelettes par défaut de SPIP et Court-circuiter les rubriques de SPIP. Pour celles et ceux qui connaissent, ce court-circuit était initialement distribué dans la « trousse à têtue », actuellement utilisée sur une trentaine de sites.

Discussion

7 discussions

  • 3

    Hello,

    J’ai un petit bug quand je l’utilise dans un site multilingue c-à-d avec <multi>[fr] [nl] </multi>

    En effet la mécanique fonctionne parfaitement en FR si j’ai qu’un et un seul article j’ai bien dans mon ariane => Home>rubrique1>article1 lors du clic dans mon menu sur rubrique1

    Par contre si je passe en NL j’ai dans mon ariane => Home>rubrique1, je suis donc sur rubrique1 et pas sur article1 et cela quel que soit mon point de départ du site... depuis l’accueil, la rubriques 2 avec plusieurs articles, ...

    Comme si le plugin ne fonctionnait pas lors du passage à une autre langue ?

    Merci d’avance

    • il manque un petit bout à la première ligne

      <multi>[fr]titre [nl]titel</multi>

    • Salut,

      Vérification faite (via #spip), ton site utilise bien la version 2 de ce plugin et non la version 1 ici présentée. Quoiqu’il en soit, tu devrais vérifier en ?var_mode=debug quelle est la langue qui est présente dans l’environnement lors de l’appel de la page. En principe, SPIP tient toujours compte d’une langue, celle du site dans le cas d’un site intégralement en <multi>, à moins qu’un cookie de langue ne force une autre langue. Du coup, il est probablement nécessaire de préciser {lang_select=non} sur la boucle qui appelle l’article, histoire d’éviter qu’un cookie « nl » n’empêche la sélection d’un article vu par spip comme « fr »...

      Suske

    • Bug corrigé merci Joseph :-)

    Répondre à ce message

  • Y’a t-il un moyen dans le système de gestion de plugins de Spip d’empêcher l’activation lorsque Zpip est présent ? Je viens de perdre une demi-heure à tenter de comprendre pourquoi mes compositions ne marchaient plus (sans aucune notification ni alerte).

    Répondre à ce message

  • 8

    Ce plugin ne mériterait-il pas d’être découpé en deux ?

    • le reset des squelettes SPIP d’un côté
    • la redirection des rubriques vers un article particulier de l’autre
    • Si, pourquoi pas !
      -  la dist de SPIP devrait être telle que ce reset ne soit pas nécessaire : elle ne contiendrait que le strict nécessaire, le reste pouvant être apporté par des plugins (comme je le suggère à la fin de l’article d’origine)
      -  mais pour ce court-circuit des rubriques, pour que cela mérite un plugin dédié, il faudrait procéder de façon plus sérieuse : redirection générale (via panneau de config du site ?) ou au cas par cas (via affectation d’une composition dédiée ??). Le squelette a le mérite d’être facilement personnalisable et surchargeable.

    • Bonjour Romy,

      où en es-tu dans ta réflexion concernant le court-circuitage des rubriques ? Peut-on envisager un plugin générique pour cela, configurable (pour permettre de choisir entre plusieurs règles de redirection), compatible Zpip et non Zpip ?

      Bien amicalement

    • Oui, c’est souhaitable !!!

      Qu’entends-tu par « plusieurs règles de redirection » ?

    • En termes de nom, tu penses que court-circuit doit être réservé pour le court-circuitage des rubriques avec SPIP-reset pour le reset des squlettes SPIP ? Ou bien tu penses à un autre nom ?

      Par plusieurs règles de redirection, je pensais par exemple : si la rubrique n’a pas d’article d’accueil : souhaitez-vous ne pas redirigez la rubrique ? la rediriger vers l’article le plus récent ? vers le premier article (numéro de titre) ? ...

      À voir le niveau d’options/paramètres souhaitables.

    • La notion de « court-circuit » me semble suffisamment claire (d’ailleurs reprise pour décrire le plugin équivalent compatible Z réalisé récemment) pour que le terme soit maintenu.

      Les squelettes de reset ne me semblent vraiment pas gênants : qui utilise encore ces squelettes au point d’en être privé par ce reset ? mais s’ils gênent, ils peuvent être déportés sur une autre contrib.

      Sinon, pourquoi pas un panneau de config, mais bon, le choix parmi les « redirections » que tu évoques (soit article d’accueil, soit par date, soit par numéro, soit pas de redirection) est déjà possible sans ça.

    • La notion de « court-circuit » me semble suffisamment claire (d’ailleurs reprise pour décrire le plugin équivalent compatible Z réalisé récemment) pour que le terme soit maintenu.

      Tu parles de quel plugin ? Le présent plugin ou squeeze_rubrique qui est apparu quelques jours sur la zone avant de disparaître ?

      Les squelettes de reset ne me semblent vraiment pas gênants : qui utilise encore ces squelettes au point d’en être privé par ce reset ? mais s’ils gênent, ils peuvent être déportés sur une autre contrib.

      En l’espèce, si on prend le présent plugin et qu’on l’utilise avec Zpip (par exemple) il vient surcharger les fichiers de Zpip. Donc il met en place le court-circuit des rubriques, mais également un reset de certaines pages. Normal car ces squelettes sont prioritaires sur les fichiers de la dist mais également sur ceux de Zpip. Or, on peut souhaiter mettre en place le court-circuit des rubriques sans pour autant faire un reset des pages en question. En effet, le plugin peut être utilisé sans avoir de squelettes perso mais avec un squelette généraliste distribué sous forme de plugin. D’où la proposition de coupure en deux plugins.

      Sinon, pourquoi pas un panneau de config, mais bon, le choix parmi les « redirections » que tu évoques (soit article d’accueil, soit par date, soit par numéro, soit pas de redirection) est déjà possible sans ça.

      Actuellement, il y a systématiquement un court-circuitage. Personnellement, sur certains de mes sites, je suis intéressé pour ne court-circuités que certaines rubriques. Autrement dit, si j’ai défini un article d’accueil, je souhaite y accéder directement, si je n’ai qu’un article dans la rubrique aussi, mais si aucun article d’accueil défini et plusieurs articles dans la rubrique, je souhaite charger ma page rubrique. Une telle option est facile à mettre en place en contexte Z. Cela a peut-être moins de sens en contexte non Z (en effet, en contexte Z, on sait quoi inclure).

      Par ailleurs, le formulaire pourrait aussi permettre de choisir si on prend le premier par numéro, le premier par titre alphabétique, le plus récent ou le plus ancien.

    • Le fonctionnement que tu décrit/souhaite est déjà celui de ce plugin, dans SPIP, mais effectivement pas avec Z, qui pose problème.

      Go go go pour la compat ! Mais attention à rester fonctionnel dans SPIP, simplement et prioritairement ;)

    • Pour une compat Zpip, il faudrait supprimer le reset du plugins. Cela te convient-il ? Si oui, faut-il faire un autre plugin avec ce reset « light » ou bien on peut considérer que SPIP-reset est suffisant ?

    Répondre à ce message

  • 8

    Deux propositions.

    Je n’ai pas encore regardé le code mais si je comprends bien, tu fais une inclusion d’article dans le squelette de rubrique. Ce faisant, ce même article d’accueil, ce même contenu, est donc accessible par deux URLs différentes : l’URL de la rubrique et l’URL normal de l’article. C’est mal non ?

    Il faudrait donc plutôt prévoir une redirection PHP avec le numéro qui va bien (301 à priori).


    Ensuite pour la sélection, il pourrait être intéressant d’utiliser le mécanisme déjà présent de la notion d’article d’accueil qui est dans Compositions. En effet ce plugin permet déjà de sélectionner explicitement cela. Du coup, sans obligation de l’avoir, on pourrait faire :

    • si Compositions n’est pas là OU s’il est là mais qu’on a rien choisi : comportement actuel, cad soit le premier en numéro soit le dernier en date ;
    • si Compositions est là et qu’on a sélectionné explicitement : on l’utilise.

    Et du coup on peut alors aussi bien avoir le dernier en date sans rien avoir à sélectionner. Mais on peut aussi en prendre un précis, sans changer de numéro fastidieusement, et c’est beaucoup plus clair car marqué comme tel dans l’interface « article d’accueil ».

    • Oui, c’est de la grosse inclusion bien robuste :)

      Que les URLs pointent au même endroit, c’est aussi le but, notamment pour que les rédacteurs puissent atterrir « au bon endroit » lorsqu’ils cliquent sur « voir en ligne » depuis l’espace privé. Mais oui, ça pourrait être traité en PHP (ou par #HTTP_HEADER{Location: #URL_ARTICLE} ?), à condition de pouvoir désactiver/surcharger au cas par cas, comme le permet les squelettes. Mais oui, toute amélioration est bienvenue :)

      Par contre, le plugin Composition est très contraignant et très insatisfaisant : mieux vaut un bon vieux squelette par mot-clés. Le concept d’article d’accueil peut très bien être traité par un autre plugin, car c’est indépendant de la « composition » en elle-même, même si ça peut être nécessité pour ce faire.

    • Le concept d’article d’accueil peut très bien être traité par un autre plugin, car c’est indépendant de la « composition » en elle-même, même si ça peut être nécessité pour ce faire.

      Ah par contre pour ça je suis tout à fait d’accord avec toi. Je n’ai jamais compris le rapport. Pour moi ça devrait être un plugin à part qui ne fait que ça. Après on peut l’utiliser aussi bien avec des squelettes classiques qu’avec des Compositions, Z ou pas Z, etc, bref n’importe où.

      Faudrait enlever cette fonctionnalité de Compositions et la déplacer autre part, en gardant le même nom de champ SQL, comme ça pas de coupure.

    • Bande de trolleurs ! Faites un plugin « article d’accueil » si vous voulez, mais je ne vois aucune raison de d’enlever cette fonctionnalité de Compositions, puisqu’elle y est désactivable.

    • Juste pour pouvoir l’utiliser sans Composition :)

    • Ben la raison c’est qu’on ne voit pas la relation entre le fait de vouloir un article d’accueil et celui d’utiliser telle ou telle composition. :)

      Mais un plugin pourrait ne faire que ça et essayer de ne pas être incompatible avec Compositions en utilisant le même champ et en ne s’insérant que si Compositions ne le fait pas déjà... mais ça ajoute quand même du code de test inutile pour rien alors que ça devrait être séparé. :)

    • Je suis bien d’accord, la notion d’article d’accueil, que je n’aime pas du tout, devrait être dans un plugin à part, ni dans Composition, ni dans Court-circuit.

    • Ah, et comme le signale Rastapopoulos, il faudrait que cet article d’accueil soit obtenu par redirection, et non inclusion.

      Sinon, outre le risque de duplicate content incompréhensible, ce n’est pas un « article » d’accueil, c’est un contenu d’article inclu dans une carcasse de rubrique, ça peut vite devenir bancal...

    • Attention, il ne faut pas confondre : oui, ce court-circuit devrait faire une redirection plutôt qu’une inclusion, mais pas l’article d’accueil (qui est désormais géré par un plugin dédié, grâce à Joseph), qui ne sert pas à remplacer le texte de rubrique : ce serait bien trop restreindre son utilité !

    Répondre à ce message

  • audwill

    merci pour ce plugin ! très utile !

    Répondre à ce message

  • 2
    vero lapierre

    C’est étrange,
    je n’utilise pratiquement jamais les squelettes d’articles dans spip, sauf pour « contact ».
    Sans squelette de rubrique , je suis perdue :)
    comme quoi , à chacun son truc et sa façon d’organiser l’info , mais j’aime ce plug-in court-circuit que j’avais déjà piqué en partie dans la trousse à Tétue , et adapté allègrement à mes besoin !

    Merci Romy

    • Salut belle Véro :)

      Oui, quand on cherche des exemples, on pense toujours à des pages annexes, de type « contact » ou « à propos ». Et pourtant, y’en a tout le temps besoin... J’ai encore eu un cas type, à l’instant :
      -  On a un site avec, disons, 6 rubriques à la racine.
      -  La première contient 5 articles, listés en menu de sous-navigation (numéroté, avec filtre |supprimer_numero, toussa).
      -  La seconde contient 4 sous-rubriques, listées tout pareillement, en menu de sous-navigation (mêmes critères, mais sur une BOUCLE RUBRIQUES).
      -  etc. Jusque là tout va bien.
      -  En cours de route, le 3e article évolue, et nécessite d’être traité en 2 pages. Et là... c’est le début des emmerdes.
      -  Pour pouvoir arborer, il faut transformer cet article en rubrique, pour pouvoir « contenir » ces 2 pages. SPIP ne permet pas de « transformer un article en rubrique ». Le rédacteur doit supprimer l’article, et créer une rubrique du même nom, dans laquelle il crée 2 articles, où il recopie-colle son contenu. Bien.
      -  MAIS, mais, mais... cette sous-rubrique n’apparaît pas dans la sous-navigation à la place de l’article !!
      -  Parce que ce menu ne liste pas tous les éléments de second niveau, mais seulement les articles ou seulement les rubriques — difficile de faire une navigation hétérogène dans SPIP : les boucles hétérogènes, c’est compliqué à programmer et à trier.

      Qui n’a jamais rencontré ce cas ?

      La solution la plus simple, — c’est-à-dire ne nécessitant pas d’intervenir dans les squelettes, ni donc de devoir re-faire appel au webmestre, — consiste à transformer tous ces 5 articles en rubriques. Ces rubriques ne contiennent alors qu’un article, qui doit être affiché directement, comme avant, sauf la troisième, qui apparaît bien dans le menu, en troisième position, comme avant, et branche bien sur nos deux nouveaux articles.

      Court-circuit permet cela. C’est-à-dire que :

      1. ça laisse la possibilité aux contenus d’évoluer,
      2. en laissant la main au rédacteur,
      3. en s’appuyant sur un usage naturel et cohérent SPIP :
        • une rubrique ça sert à contenir et arborer,
        • un article ça sert à afficher des contenus.
    • vero lapierre

      Je suis tout à fait d’accord avec l’utilité de court-circuit, surtout dans ce cas de figure.

      Je n’utilise peut-être pas spip pour ce, pourquoi il a été conçu, mais j’ utilise plutôt les rubriques et donc le squelette de rubrique, pour afficher les articles contenu dans cette rubrique par n° de titre ou par date, suivant … C’est aussi beaucoup plus simple de faire un menu de rubrique et sous-rubriques !

      Pour moi c’est assez logique de faire d’un site, un tiroir de bureau , avec des dossier, des sous-dossier et des fichiers que l’on peut lire dans l’ordre ou ils sont rangés dans le sous-dossier. Et il se trouve que généralement ça colle assez bien au type de site sur lesquels je travaille . J’ai rarement une arborescence très complexe à mettre en place.
      Et j’essaie toujours d’avoir la même arborescence sur toute les rubriques du site, surtout pour simplifier la navigation , quitte à avoir des sous-rubriques un peu inutiles .
      Comme dans l’exemple que tu viens de citer .
      En fait, je fais du court-circuit sans le savoir :)

      Quoi qu’il en soit court-circuit est adopté et déjà dans les plugins du site en cours… et hop !!

    Répondre à ce message

  • 2

    je suis assez d’accord : je ne vois pas pourquoi on mélange dans deux plugins (composition et court-circuit) une fonctionalité qui n’est pas en lien direct (en fait, pour court-circuit encore ca peut se comprendre, mais après c’est le concept d’article d’accueil que je trouve non pertinent)

    • Ah mais tu fais bien ce que tu veux avec tes articles et tes rubriques.

      Mais je suis scandalisé qu’on fasse un procès en sorcellerie a ceux qui utilisent des articles d’accueil et ont le toupet d’implémenter ça dans un plugin. Si ça vous plait pas, ne l’utilisez pas, ou forkez le pour enlever cette fonction.

      Mais arrêtez de critiquer à tout va ceux qui font quelque chose qui correspond à un usafe et partagent leurs plugins. C’est vraiment le monde à l’envers et un encouragement à aller jouer tout seul sur son gitHub pour avoir la paix.

    • a !

      mais attend … je suis très content que Romy et d’autres proposent des plugins.

      Simplement, je me dis que ces plugins auraient plus de chances d’être utilisés s’ils ne mélangeaient pas des fonctions qui ne sont pas directement liées. Points. Alors après, oui je peux faire un fork si je veux … mais je croyais que le but était de limiter autant que possible les forks. C’est pourquoi une discussion sur ce que doit contenir ou pas un plugin me semble pertinente. Après si dès qu’on discute on devient « fauteur de procès en sorcellerie » ou « ingrats » …

      ps : Et je ne fais pas un procès en sorcellerie à Romy --- on a déja discuté de ce concept d’article d’accueil, on est pas d’accord, on va pas y passer des heures.

    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