Court-circuit 2

Court-circuit 2 permet de rediriger certaines rubriques vers un article particulier. Vous pouvez configurer, dans l’espace privé, les règles de redirection à appliquer.

Historique

Court-circuit 2 est une évolution de Court-circuit 1, reprenant le principe du court-circuitage des rubriques.

À la différence de la précédente, cette seconde version ne gère que le court-circuitage des rubriques. La fonctionnalité de reset des squelettes par défaut de SPIP, proposée par la première version du plugin, n’est donc plus présente. Vous pouvez néanmoins retrouver cette fonctionnalité avec les squelettes SPIP Reset ou la trousse à tetue.

Concernant le court-circuitage des rubriques, Court-circuit 2 utilise le pipeline styliser pour procéder, le cas échéant, à une redirection HTML (status 301), à la différence de Court-circuit 1 qui surchargeait le squelette rubrique.html. De fait, votre squelette rubrique.html reste donc utilisable pour les rubriques qui ne seraient pas redirigées. Cela permet également à Court-circuit d’être compatible avec tout squelette, y compris Zpip.

Une fois installé et activé, Court-circuit 2 ne nécessite aucune adaptation de vos squelettes.

Pour en savoir plus sur le court-circuitage des rubriques, voir court-circuiter les rubriques de SPIP pour accéder directement aux articles.

Fonctionnement par défaut

Lorsque le visiteur demande à voir une rubrique, Court-circuit 2 essaie de déterminer s’il doit rediriger le visiteur vers un article précis. Il redirigera dans l’ordre :

  1. vers le seul article de la rubrique si cette dernière n’en contient qu’un,
  2. sinon, vers l’article d’accueil de la rubrique si la rubrique en a un et que le plugin Article d’accueil est installé et activé,
  3. sinon vers le premier article numéroté de la rubrique [1]
  4. sinon, si la rubrique ne contient pas d’article numéroté, Court-circuit 2 redirigera vers l’article le plus récent de la rubrique,
  5. si la rubrique ne contient aucun article, Court-circuit 2 sélectionnera la première sous-rubrique de la rubrique (tri croissant par numéro du titre et décroissant par date) et appliquera l’ensemble de ces règles à cette sous-rubrique.

Enfin, si la rubrique ne contient ni article ni sous-rubrique (cas d’une rubrique ne contenant que des brèves et/ou des sites web), alors le squelette rubrique.html sera chargé (absence de redirection).

Par défaut, Court-circuit 2 ne s’applique pas aux rubriques auxquelles s’applique une variante de squelette (du type rubrique-3.html ou rubrique=5.html) ou bien aux rubriques ayant une composition (si le plugin homonyme est activé).

Personnaliser les règles de redirection

Si le plugin CFG et/ou le plugin SPIP Bonux est/sont actifs, vous pouvez sélectionner les règles de redirection à appliquer via un formulaire de configuration accessible vis le menu Configuration si vous utilisez l’ancien bandeau ou le menu Squelettes si vous utilisez le nouveau bandeau.

Vous pouvez activer/désactiver chaque règle séparément. Court-circuit 2 teste chaque règle active dans l’ordre dans lesquelles elles sont affichées sur le formulaire. Court-circuit 2 regarde tout d’abord si la première règle active fournit une redirection. Si c’est le cas, Court-circuit 2 s’arrête et effectue la redirection. Sinon, Court-circuit 2 regarde la seconde règle active, et ainsi de suite.

Si aucune des règles actives ne produit une redirection, alors le squelette rubrique.html est chargé de manière classique. Vous pouvez ainsi avoir choisir de ne rediriger que certaines rubriques, par exemple en utilisant le plugin Article d’Accueil et en n’activant que les deux premières règles.

Vous pouvez également décider d’appliquer les redirections d’articles y compris aux rubriques ayant une variante de squelette ou une composition.

Note : les options concernant les articles d’accueil et les compositions ne seront affichées dans le formulaire que si les plugins homonymes sont actifs.

Balise #URL_RUBRIQUE

Vous pouvez aussi demander à Court-circuit 2 d’agir également sur la balise #URL_RUBRIQUE, cette dernière renvoyant alors, le cas échéant, directement l’URL de la redirection.

Évolutions possibles

D’autres règles de redirection pourront éventuellement être ajoutées en fonction des besoins. Le forum est là pour en discuter.

Notes

[1Voir la doc de SPIP concernant la numérotation des titres.

Discussion

21 discussions

  • 1
    Michel Suquet

    Bonjour,

    notre site a la version 4.1.5 de spip et on a forcé l’utilisation du plugin court-circuit : cela fonctionne sans problème.

    Pouvez-vous mettre à jour le plugin ?

    Cordialement,

    Michel Suquet

    Répondre à ce message

  • Pierrot

    Bonjour,

    Je constate qu’apparemment ce plugin n’est pas compatible avec « Rang », pas au sens ou ça fait planter, mais au sens que ça ne redirige pas vers l’article qui a été mis en premier grâce à Rang.
    J’avais dans les rubriques 4 articles classés grâce à la numérotation classique de Spip, le plugin fonctionnait parfaitement.

    Le client souhaitant classer à la mano ses articles, j’ai supprimé la numérotation des articles et ensuite ajouté Rang et la redirection amène au dernier article de la rubrique (c’est à la fois le dernier en ce qui concerne Rang mais aussi l’id le plus élevé et finalement le plus récemment publié), ça semble logique au vu des options de ce plugin, je pense qu’on est dans le cas « publié le plus récemment » puisque l’on n’utilise pas le plugin « article premier », qu’on n’a plus de numéros et qu’il y a plus d’un article dans cette rubrique.

    C’est mon collègue qui avait mis ce plugin (ce que je ne savais pas), j’ai mis du temps à découvrir que c’était ça qui transformait mes #URL_RUBRIQUE, pour ma part j’ai désactivé ce plugin je trouve plus simple de faire cet aiguillage au niveau de mes squelettes, c’est plus facile à débugguer (surtout quand on y revient 1 an plus tard).

    Bref tout ça pour signaler ce problème, pour ma part j’ai pris une solution de contournement qui me satisfait pleinement. « Article d’accueil » serait une solution intermédiaire mais nécessiterait une seconde manip quand on change le Rang pour re-désigner l’article vers lequel rediriger ce qui casse un peu l’intérêt de Rang.

    Répondre à ce message

  • 3

    Problème cour-circuit v2.5.1 rencontré sur Contrib (ex : ->rub700 et article500-fr/501-en et 537-en : lang=fr).
    l’affichage « rubrique » est court-circuité en ’article’ malgré l’existence d’articles de traductions /cela parait normal, bien que non explicite au survol de la doc ),
    mais aussi de nombreuses sous-rubriques :
    La règle 1 me semble appliquée trop directement : une solution serait de rajouter une option de configuration pour limiter le court-circuit aux seules rubriques terminales...
    => voir : \courtcircuit\v2.5.1\courtcircuit_fonctions.php : line 4 ?

    • Je ne suis pas sûr de comprendre le problème rencontré entre le comportement actuel et celui désiré.

      Dans la configuration actuelle sur contrib, un paramètre du plugin est activé pour ne prendre.en considération que les articles de la langue en cours pour calculer la redirection.

      Note. Ce paramètre introduit dans des versions ultérieures du plugin n’est pas documenté ici, la page de doc n’ayant pas été actualisée.

    • Bonjour,

      Oui, la configuration Config est bonne sur la prise en compte des seuls articles dans la langue : je peux rajouter dans la documentation : d’acc ?.

      Je reformule différement le souci découvert hier soir :
      meme si une rubrique possède des sous-rubriques publiées, mais un seul article, le court-circuit renvoie automatiquement vers le squelette article pour l’article unique (dans la langue) publié dans cette rubrique.
      De ce fait, l’accès aux sous-rubriques de Contrib (situées « à coté » de l’article) n’est pas directement possible, dans de squelette d’article affiché.

      Je peux imaginer deux modifications correctrices :
      -  un palliatif : modifier le squelette d’article pour introduire un bloc optionnel des sous-rubriques (comme sur la dist)
      -  un paramétrage supplémentaire de config (débranchant le court-circuit sur les Rubriques non -terminales.

    • Ok je comprends mieux.

      Le mieux serait probablement une règle d exception dans la config pour ne pas appliquer court circuit à une rubrique ayant des sous rubriques

    Répondre à ce message

  • 13

    Bonjour Joseph,
    je tombe sur un os. Souhaitant qu’une rubrique « x »n e soit pas l’objet d’une redirection, dans le premier bloc d’option « Rubrique avec variante de squelettes » de la page de configuration de court-circuit, j’ai coché l’option « ne pas rediriger ».
    Ensuite, dans squelettes/content (j’utilise z-core), j’ai un squelette rubrique=x.html.
    Malgré cela, le squelette rubrique=x.html n’est pas pris en compte lors de l’appel d’une url du type mondomaine.tld/ ?rubriquex : la page est redirigée vers un article.
    Parce que parfois, c’est nécessaire, j’ai mis un fichier rubrique.html.au même niveau que la variante rubrique=x.html.
    Il y a quelque chose que je ne fais pas bien ?

    • Précision : SPIP 3.1.6 et plugin à jour...

    • Bonjour Manu,

      je t’avoue que je ne code plus depuis quelque temps (du moins dans Spip) faute de temps.

      Et je connais mal z-core.

      A priori, il faut aller regarder du côté de https://zone.spip.org/trac/spip-zone/browser/_plugins_/court-circuit/trunk/inc/courtcircuit.php

      Je suppose (pas testé) que la fonction squelettes_par_rubrique_styliser_par_rubrique ne tient pas compte du sous-répertoire « content » et que, en contexte Z, il faudrait un autre test pour vérifier la présence d’une variante de rubrique.

    • En l’absence de modification de court-circuit, il faudrait tester si le hack suivant pourrait marcher :

      Faire un squelette rubrique=x.html à la racine du répertoire squelettes et y mettre le même contenu que le squelette structure.html fourni par Z-core.

      Ceci-dit, le mieux serait de faire évoluer la fonction courtcircuit_url_redirection pour être compatible avec Z-core.

    • J’avais testé le « hack » . Ça marche dans le sens où le squelette prend bien la main, mais le hic c’est qu’il prend la main sur l’ensemble de la page.
      Le comportement attendu pour une variante contenue dans content/, c’est que la surcharge ne concerne que la zone du contenu et pas les autres zones (header, aside, footer etc...). La piste du hack ne parait pas donc pas très bonne.
      Je vais voir du côté de ce qu’il y a dans courtcircuit.php

    • est-ce que ça peut être la fonction find_in_path présente dans la ligne 13 de inc/courtcircuit.php qui pourrait être la fautive ? Peut-être ne connait-elle pas le répertoire content/ ?

    • En effet, ca ne tient pas compte du contexte Z.

      Il faudrait dès lors tester la présence de Z-core, le cas échéant vérifier le répertoire principal Z (qui n’est pas toujours content) et chercher dans ce sous-répertoire là

    • ... et,aïe, ouille, ça se fait comment ? (au passage, j’ai bien aimé la phrase « vérifier le répertoire principal Z (qui n’est pas toujours content) »,
      content ou content/ ? hi, hi, hi

    • En PHP il y a la fonction test_plugin_actif selon https://contrib.spip.net/Astuces-courtes-pour-SPIP#plugins pour vérifier la présence d’un plugin.

      Le bloc central de la page est défini par $GLOBALS['z_blocs'] (plus précisément c’est le premier élément du tableau renvoyé). En effet, si c’est le répertoire content/ par défaut, cela peut être modifié par l’utilisateur.

      A priori, Z-core propose une fonction zcore_blocs pour récupérer ce paramètre cf. https://zone.spip.org/trac/spip-zone/browser/_plugins_/z-core/trunk/public/_styliser_par_z.php#L156

    • Du coup, il faudrait explorer un code du genre (non testé car je n’ai pas d’environnement de dev sous la main) :

      if (test_plugin_actif("zcore")) {
          charger_fonction('styliser_par_z', 'public');
          blocs = zcore_blocs();
          f = blocs[0] . "/rubrique.html" ;
      }
      else {
          f = "rubrique.html";
      }
      $squelette_rubrique = substr(find_in_path(f), 0, -5);
    • Désolé, j’ai dû m’absenter...
      Il faudrait placer dans quel fichier le code que tu as envoyé ?

    • Ah, oui, dans inc/courtcircuit.php

    • Aucune garantie que ça marche hein !!

      Juste une idée mais pas testé

       ;-)

    • Aille, ouille, j’ai recopié ton code dans inc/courtcircuit.php mais j’ai en retour des parse errors en pagaille dont j’ai du mal à me sortir
      =>http://spip.pastebin.fr/50275

    Répondre à ce message

  • 6

    Salut Joseph & tetue, j’ai dernièrement eu besoin d’exclure certaines rubriques du traitement de court-circuit en fonction de leur composition. Du coup, je viens d’ajouter la possibilité de le faire à l’aide d’une constante (pour l’instant).

    Exemple de code à coller dans mes_options.php pour ne pas court-circuiter les rubriques qui portent les composition annonces_emploi et annonces_logement :

    <?php 
    
    if (!defined('_ECRIRE_INC_VERSION')) return;
    
    // Exclure les rubriques des annonces du traitement du plugin court-circuit
    // Ref https://zone.spip.org/trac/spip-zone/changeset/101803
    define('_COURTCIRCUIT_EXCLURE_COMPOSITIONS', array('annonces_emploi','annonces_logement'));

    Est-ce que l’ajout et le nommage de la constante vous semble convenables ? Si oui, je peux l’ajouter à la documentation et monter la version du plugin en 2.5.0, sinon je revert :)

    • Hello b_b,
      C’est top ! Mais en php 5.6.14 j’ai un « Constants may only evaluate to scalar values in... » lorsque j’essaye

      Passer par un serialize / unserialize ?

      define('_COURTCIRCUIT_EXCLURE_COMPOSITIONS', serialize(array('agenda')));

      et

      in_array($composition,  unserialize(_COURTCIRCUIT_EXCLURE_COMPOSITIONS));
    • Arf oui, bien vu Guytarr, du coup je propose d’utiliser une liste de compositions séparées par des virgules et un simple explode. D’un autre côté, serailizer l’array aurait l’avantage de brancher tout ça sur une valeur de config plus facilement.

      Tu en penses quoi ?

    • Coucou, pas de soucis avec les évolutions du plugin. Mais vu que tout le reste du plugin est configuré via un formulaire et non via des constantes, est-ce que ça ne serait pas mieux de rajouter une option dans la section Exceptions du formulaire ?

      A défaut, si maintien d’une constante, il me semble qu’il faudrait au mois ajouter un message (lorsque la constante est définie) et indiquant la valeur de cette dernière.

      Cdlt

    • Tant qu’à faire, je le mettrai bien dans la config directement, que ça s’affiche lorsque « Appliquer les règles de redirection » sur compositions est sélectionné.

      En tout cas j’ai eu le même besoin que toi pas plus tard que ce matin, merci :)
      Vous en pensez quoi Joseph et tetue ?

      edit : je viens de voir la réponse de Joseph ^^

    • Ok, j’ajoute une entrée de config qui s’affiche ou se masque suivant la conf appliquée aux traitement de rubrique. Pour l’instant je fais simple, en proposant un simple input dans lequel on peut entrer une liste de compos séparées par des virgules. On aura tout le temps de brancher ça sur un select qui listerait automagiquement les compos de rubriques dispos par la suite si quelqu’un veut faire ça mieux ;)

    • Et hop, c’est en place dans la version 2.5.0 cf :

      https://zone.spip.org/trac/spip-zone/changeset/102442

      (j’ai supprimé l’usage du define au passage)

    Répondre à ce message

  • 3
    blonchk

    Problèmes critiques chez moi avec Spip3 et CourtCircuit 2 (unique plugin additionnel)
    But : Afficher premier ou seul article de n’importe quelle rubrique de l’arbre.
    Mes réglages : 1, 2 et 5 à oui´ ourrediriger´, le reste par défaut.

    Comportement


    -  Le plugin traverse l’arborescence descendante sans s’arrêter jusqu’à la rubrique terminale.
    -  Désactiver le plugin ou le désinstaller rend le site inopérant (plus du tout d’espace publique, juste le logo et le nom du site qui me narguent).

    Dépannage rapide et sale

    Après plusieurs essais empiriques je suis arrivé au comportement voulu de la manière suivante :
    1. Invalider tous les règlages de CourtCircuit (tout à « Non »)
    2. Désinstaller CourtCircuit 2. Mais surtout, ne pas toucher spip_meta au niveau de la config CourtCircuit après cette étape. Ces défauts négatifs sont essentiels.
    3. Mon cache Spip étant désactivé, je l’ai tout de même vidé
    4. Quitter la session admin, vider les caches du navigateur.
    5. réinstaller CourtCircuit. A ce statde tous les défaut sont à Non (voir remarque en 2)
    6. Activer (Oui) pour article unique, premier article et subsection (1, 2 et 5).

    Cordialement

    • Juste pour comprendre :

      • Après ton « dépannage rapide et sale », la redirection des rubriques fonctionne-t-elle comme attendue ?
      • Quand tu as désinstallé le plugin, était-ce via l’interface de gestion des plugins ou via une suppression manuelle des fichiers ? Dans le second cas, étais-tu repassé par exec=admin_plugin afin que les fichiers de chargement des pipelines soient mis à jour ?
      • Aucun message d’erreur PHP ?
      • Après la première désinstallation du plugin, y a t il eu vidage du cache (même si cache désactivé) ?
    • Merci blonchk,
      je me suis retrouvé dans la même situation que toi et ta technique m’a sauvé !

    • Hé bien , même galère (SPIP 3.1.1, avec squelette scola spip)

      -  Court circuit s’arrêtait au premier article partout, même là où il y avait plusieurs article (redirection 1 seule pourtant),
      -  la désactivation du plugin n’a rien changer,
      -  après vidage du cache un gros site vide,
      -  après une suppression du plugin + de nouveau vidage du cache SPIP je récupère le site mais les règles de court-circuit (pourtant désinstallé) sont toujours actives sur les pages où je l’avait testé, ailleurs non.
      -  a cette minute le site est bancal (règles du court circuit fantôme à moitié en place),
      -  je vais tester ta technique ! en commençant par vider le cache du naviguateur (ça mange pas de pain ;))

      ++

    Répondre à ce message

  • Bonjour,
    est-ce qu’il y a une technique pour appliquer une règle différente à une rubrique ?

    Merci par avance.

    Répondre à ce message

  • 5

    Bonjour Joseph,

    Ce plugin fonctionne très bien, sur mon site « desktop », tout du moins.
    Par contre, sur les mobiles (via l’utilisation du plugin « Pages pour mobiles »), là il ne fait plus son boulot... penses-tu qu’il y aurait quelque chose à faire ?

    En te remerciant

    • Bonjour Joseph,

      Je note 2 petites choses :
      1) Le plugin peut se désactiver mais non se désinstaller.
      2) sur le plugin activé, j’ai tout passé à « non », puis désactivé, puis vidé le cache manuellement, puis effacé le plugin, puis vidé le navigateur... mais j’ai toujours un comportement anormal de mon site...

      Sous SPIP 3.0.20, plugins mis à jour.

    • 1) Il ne modifie pas la base de données. Il y a juste une config dans les paramètres.

      2) quel est le comportement anormal ? le comportement attendu ? quels sont les autres plugins installés ? Le site est-il en ligne quelque part ?

    • Bonjour Joseph,

      Je ne sais plus quel était le comportement anormal, et tout est revenu dans l’ordre finalement (par quel miracle ?). Par contre, et puisque j’utilise Mobile, j’ai dû trouver une autre solution en passant par des tests et boucles. C’est bien dommage, mais il m’est avis que c’est dû à Mobile et non à Court-Circuit...

    • Les deux plugins agissent sur le même pipeline je pense.

      Ceci dit, plutot que d’avoir des squelettes différents pour les pages mobiles, il est préférable d’avoir un seul et unique squelette mais un design CSS responsive

    • Bonsoir Joseph,

      Oui, j’ai bien essayé de composer un CSS responsive, mais beaucoup de problèmes se sont posés : et notamment un sommaire qui doit être radicalement différent sur mobile par rapport au desktop, l’affichage des cartes GIS qui doivent être de tailles différentes selon les versions, etc.
      Car je n’ai pas trouvé d’autre solution permettant, par SPIP, de dégager des informations sur l’écran et sa résolution et de permettre donc certains affichages (notamment de photos) de s’adapter selon. Je me trompe ?

      Sinon, oui, tu as parfaitement raison, le mieux (pour la maintenance notamment), est de composer un seul squelette, et plusieurs CSS !

    Répondre à ce message

  • 1

    spip dernière version avec SpipR.
    Lors de l’activation du plugin : tout marche bien !
    Lors de la désactivation de celui-ci… les pages publiques ne sont calculées que jusqu’au < / h e a d > !!
    bug ?

    Répondre à ce message

  • Benoît Labourdette

    Polyhiérarchie : quand on sélectionne la fonctionnalité « Seul article de la rubrique », s’il y a un seul article dans la rubrique et que les autres sont en polyhiérarchie, alors ça redirige vers l’article. Ce qui est dommage, car en fait il y en a plusieurs à afficher !
    Serait-il possible de faire que ton plugin prenne en compte la polyhiérarchie dans sa comptabilisation du nombre d’articles ?
    Merci !!!

    Répondre à ce message

  • 2
    Alexandra

    Bonjour Joseph, je suis en z-core avec composition. Le court-circuit passe dans ma composition même quand j’exclue ma composition dans mes fichiers de surcharges :
    -  courtcircuit_selection_rubrique.html
    -  courtcircuit_selection_article.html
    J’imagine que c’est dans le pipeline courtcircuit_pipelines.php qu’il faut agir ?
    Quelle serait la syntaxe pour exclure une composition dans la fonction courtcircuit_styliser ?
    Merci

    • Alexandra

      oups c’était ma composition qui ne passait pas dans les branches. J’ai corrigé. Désolée pour le bruit, le court-circuitage ne s’applique effectivement pas aux compositions.

    • Ravi que tu aies trouvé la solution.

      Cordialement

    Répondre à ce message

  • 4

    Bonjour,

    Merci bien, il est top ce plugin, il permet de faire des chose plus propre que de mettre des url n dur dans les pages :-)

    Petite question... Est-il possible de court-circuiter court-circuit ?
    Je m’explique, j’ai activé le plugin pour qu’il gère bien la redirection dans pratiquement tous les cas (variante de rubrique, composition, 1 seul article, 1er article et balise #URL_RUBRIQUE et ça marche à merveille. Par contre dans mon footer je fais un lien vers une rubrique que j’utilise pour les actualités #URL_RUBRIQUE2 et du coup le lien généré correspond à mon actu la plus récente alors que je souhaite vraiment afficher ma rubrique pour voir toutes mes actus.
    J’ai essayer au pif URL_RUBRIQUE**2 mais ça ne change rien.
    Quelqu’un connait-il un moyen de désactiver court-circuit dans ce cas précis et pouvoir récupérer le lien de ma rubrique ?

    Merci et bonne soirée.

    • Court-Circuit agit directement sur le chargement de la rubrique. On peut le désactiver pour une rubrique mais pas pour un lien spécifique.

      Si je comprends, le comportement souhaité c’est de renvoyer sur l’actu la plus récente sur le lien situé dans le menu mais de renvoyer sur toutes les actus avec le lien dans le pied de page ?

      Une manière de procéder consiste à créer un squelette personnalisé (appelé actus par exemple, et qui peut être un copier/coller du squelette rubrique), le lien dans le pied de page pointant alors vers ce squelette particulier.

    • Bonjour Joseph,

      Merci pour la réponse.
      En fait, ce que je souhaite faire, c’est pointer directement sur ma rubrique 2 (et uniquement celle là) afin d’utiliser son squelette pour lister un résumé de tous ses articles (mes actus). Mais avec le plugin je suis redirigé vers son article le plus récent.

      Tu parles d’un moyen pour désactiver la redirection pour une rubrique, ça peut m’intéresser, tu fais comment stp ?

      Car pour l’instant, j’ai fait ça un peu à la barbare en modifiant directement la fonction : courtcircuit_calculer_balise_URL_RUBRIQUE en ajoutant une condition du genre :
      if ($id_rubrique !=2)

      A bientôt,
      Berty

    • Mais pour les autres rubriques tu veux pointer vers l’article le plus récent ?

      Pour court-circuiter court-circuit tu dois soit faire un squelette spécifique (rubrique=2.html) soit une composition spécifique (rubrique-actus.html et l’appliquer à la rubrique). Il n’y a pas encore de système pour activer/désactiver court-circuit rubrique par rubrique.

      Cordialement

    • Exactement, les autres rubriques pointent vers l’article le plus récent.

      Le souci c’est que j’utilise déjà des squelettes spécifiques et des déclinaisons dans d’autres rubriques qui ont besoin de la redirection.

      Tu pointes du doigt la solution ... l’idéal serait en effet de pouvoir activer/désactiver court-circuit par rubrique :-)
      Du coup j’ai rechangé un peu la structure de mon site et en utilisant le plugin Article d’accueil je suis arrivé à faire ce que je voulais.

      Merci pour tes réponse et bonne continuation,
      Berty

    Répondre à ce message

  • 3

    Vous pouvez aussi demander à Court-circuit 2 d’agir également sur la balise #URL_RUBRIQUE, cette dernière renvoyant alors, le cas échéant, directement l’URL de la redirection.

    GE-NIAL ! Ce plugin a vraiment tout compris du moins en ce qui concerne sa problématique.

    J’ai cherché à travailler sur une solution sensiblement similaire mais traitant plus de cas. Jusqu’ici je ne suis parvenu qu’à une suite de boucle scabreuses et de tests sur l’existence de champs extras dédiés renvoyant vers des URL « en dur ».

    Perso, si je me base sur ce que moi je cherchais à atteindre, des évolutions possibles j’en vois plusieurs :

    • proposer ce panel sur chaque rubrique afin de vraiment pouvoir traiter ses redirections au cas par cas et de manière plus fine
    • traiter autre chose que des articles ou rubrique
      on peut immaginer un procédé similaire sur les mot-clés.
    • prévoir les cas où, rares néanmoins réels, ca n’est pas vers un objet SPIP que l’on veut rediriger (cas des objets créés « à la volée » avec un plugin)
    • ainsi que ceux où la redirection doit avoir lieu vers un autre domaine ou URL

    Par exemple, en ce moment je reprend un vieux site que je dois nettoyer un peu au sens vraiment propre selon Google si tu vois ce que je veux dire, et je me prends la tête sur un cas bien tordu :

    SI un champ extra "mon-objet_url_301"  existe et est rempli (avec une bonne vieille url en http:// ), alors on redirige vers celle là
    SINON SI le mot-clé n'a qu'un seul article qui lui soit lié (cas de 95% des pages mot du projet en question),
        ALORS on redirige dessus
        SINON on refait un test similaire sur les rubrique et on redirige vers l'éventuelle rubrique unique
    SINON (enfin) on affiche la page

    C’est pas les idées qui manquent, si t’en veux je t’en file plein d’autres. Mais en php je suis une burne et niveau temps libre en ce moment, c’est pas mieux que le cours du dollars donc j’avance vraiment avec peine ...

    • Côté temps libre, je ne suis pas vraiment mieux loti. Donc faudra pas trop en attendre de moi.

      Je vois que là il y a bp d’idées. A priori, on se dirigerait plus vers un Court-Circuit 3. Cependant, il ne faudra pas tomber dans une véritable usine à gaz.

      Dans ce que j’ai compris, il y aurait deux chantiers :

      • étendre le court-cicuitage aux mots-clés / groupes de mots-clés (y a-t-il vraiment d’autres objets à court-circuiter ??)
      • pouvoir spécifier plus finement le court-circuitage à travers un champ dédié de la rubrique (et/ou du mot-clé).

      Pour la seconde problématique (champ dédié), il me semble inutile de passer par des champs extras (car trop de dépendances) surtout qu’il est facile de rajouter un champs à une table via des pipelines. Par contre, cela signifie prévoir un formulaire de saisie à afficher sur les rubriques si on a activer l’option. Le plus simple est dans ce cas d’avoir un champ texte dans lequel on peut saisir soit une URL complète, soit ’article123’, soit ’breve45’ (bref même syntaxe que pour les liens internes). En effet, si on veut personnaliser seulement sur les articles de la rubrique on peut déjà passer par article d’accueil.

      Je peux voir l’intérêt de court-circuiter des mots-clés pour afficher directement un article associé à un mot-clé (mais avec moins d’options que pour la rubrique car le rang ici n’a pas de sens). De même, on peut vouloir court-circuiter un groupe de mots clés pour aller directement à un des mots-clés du groupe.

      Par contre, je ne vois pas quels autres objets pourraient être concernés. Si on peut envisager un mécanisme général de court-circuitage d’un objet à partir d’un champs url_redirect, pour les autres options se n’est pas forcément généralisable.

      Enfin, j’ai encore un doute sur le fait de rediriger vers n’importe quelle URL (y compris externe). En effet, cela sort de la problématique initiale. Pour les articles, il y a déjà les articles virtuels. En quoi les articles virtuels ne peuvent permettre cela.

      Bref, il ne s’agit pas de rejeter les propositions. Juste de laisser murir un peu tout cela avant de coder une usine à gaz.

      Cordialement

    • Hé hé je te comprends ! Ya de quoi se vriller quelques neuronnes ^^

      (y a-t-il vraiment d’autres objets à court-circuiter ??)

      Vu comme ca, non effectivement. Disons que le principe même du court-circuitage ne peut s’appliquer réellement qu’à des objets qui ont un rôle de conteneur hiérarchique (rubrique, groupe de mots, eventuellement grappes (cf plugin du même nom) ...

      Après ma réflexion sur les objets concerne surtout les objets vers lesquels le court-circuit doit rediriger.

      Le plus simple est dans ce cas d’avoir un champ texte dans lequel on peut saisir soit une URL complète, soit ’article123’, soit ’breve45’ (bref même syntaxe que pour les liens internes)

      Bah déjà rien que ça, si tu trouves plus pérenne qu’un champ extra je prends !

      Enfin, j’ai encore un doute sur le fait de rediriger vers n’importe quelle URL (y compris externe).

      Les articles virtuels, je vais être honnête et sincère, j’ai jeté aux ordures ! Cette redirection n’en est pas une au sens ou cela doit s’entendre.
      En matière de redirection il n’y a qu’un seul standard propre, c’est la 301, et article virtuel est complètement à côté de la plaque sur ce coup là. (A part foutre sa SEO en l’air et pour ceux qui me connaissent, ça n’est pas une option !)

      Article d’accueil : pas mal mais pareil, pour moi il a quelques limitations qui ne justifie pas le temps passé à le mettre en oeuvre.

      En général, quand je publie, mes rubriques ne sont pas des entités thématiques mais conditionnent surtout la méthode de publication :

      • Rubrique A, c’est un blog, je publie des ARTICLES
      • Rubriques B, c’est un agenda : Je publie des Evenements
      • Rubrique C, c’est un annuaire de sites, je ne publie donc QUE des sites syndiqués et des flux RSS

      etc... Le court-circuit dans le cas de la rubrique C, il peut rediriger vers quoi aujourd’hui ?

      Cas typique : sur chacun de mes sites, j’ai une rubrique que je créé, qui contient des articles et/ou brèves dont le seul but est de servir d’éléments que j’appelle depuis une boucle sur la page sommaire. En ce cas, clairement, la rubrique et ses articles n’ont rien à foutre dans le flux de contenu et doivent être redirigés en 301 vers la home pour éviter une indexation de pages parasites (un gros point noir de SPIP si tu ne sait pas comment gérer correctement tes objets éditoriaux)

      Autre cas de figure : sur un de mes sites je fais un billet (voire un secteur complet) pour me positionner sur un mot-clé que je travaille par ailleurs sur un autre site (le site principal) pour lui faire de la pub et booster un peu sa visibilité sur ce mot-clé. Peu de temps après, pas de bol ! Google indexe les 2 sites et par hasard, me voila premier sur son principal mot clé et lui derrière moi. Bon bah là ya même pas à chercher à comprendre, c’est redirection de toutes les pages vers l’url du site en question.

      En fait, tel que je l’immagine aujourd’hui, cet éventuel court-circuit 3 ne serait peut être même plus tant que ça un court-circuit systématique mais plutôt un panel complet de gestion des redirections pour SPIP .

      Bon après, je suis pas non plus un champion de l’algorythmique hein donc c’est encore un peu brouillon dans ma tête mais au moins si on peut être 2 à y réfléchir, déjà, je me sentirais moins seul ^^

      Bon week end à toi :)

    • Concernant les articles virtuels de SPIP, peut-être ouvrir un ticjet pour que ce soit proprement un 301.

      Ceci étant dit :

      En fait, tel que je l’immagine aujourd’hui, cet éventuel court-circuit 3 ne serait peut être même plus tant que ça un court-circuit systématique mais plutôt un panel complet de gestion des redirections pour SPIP .

      Il faudrait voir dès lors ce qui serait vraiment du ressort de Court-Circuit (dont la finalité première est des redirections internes suite à certaines structures de site) et un éventuel autre plugin qui permettrait de gérer des redirections sur n’importe quelle page pour des utilisateurs avancés. Dans ce second cas de figure il faudrait voir les contraintes/besoins. Doit-il être basé sur les objets SPIP (définir des redirections pour un objet donné) ou bien être basé sur des URLs (auquel cas, on pourrait aussi définir une redirection pour spip.php ?page=sommaire ou spip.php ?page=plan etc., mais cela aurait-il du sens, car autant faire la redirection dans le squelette). Quelles seraient les différentes redirections à devoir gérer ? vers une URL fixe (interne ou externe) là c’est facile. Vers un autre objet SPIP (premier article en tri alphabétique, dernière brève publiée, premier site web, dernier article syndiqué...) là c’est un peu plus compliqué. Tout de suite ça devient plus compliqué. Il faudrait dès lors concevoir un système plus générique qui soit extensible. De plus, faut-il prévoir à la fois : des règles spécifiques pour un objet donné, une règle générale pour tous les objets d’un même type, des régles qui s’héritent par banche, etc..... Bref, rien de très simple. Une grosse réflexion à mener en amont.

    Répondre à ce message

  • 8

    Bonjour,

    Avant de découvrir ce plugin, j’ai utilisé du code « trouvé » ici pour faire la même chose. Tout allait bien, mais impossible de faire fonctionner, correctement la balise EXPOSE. Comme je trouve cette fonction plutôt utile d’un point de vue ergonomique, je me suis dit que le plugin Court-circuit pourrait apporter la solution et en effet, ça le fait, merci ! Et en plus c’est bien plus facile à mettre en place.

    Mais il y a un petit problème qui n’avait pas cours avant, dans ma version en « code » : quand il y a un article unique dans la rubrique, cela affiche mon menu des articles de rubrique avec un seul item. Ça a l’air un peu ridicule ce truc isolé. Je n’arrive pas à faire disparaitre ce menu quand il n’y a qu’un seul article. Si quelqu’un a une idée… c’est bien volontiers que je la testerai (je ne suis plus à cela près ;-)

    • Je me réponds à moi-même.

      Pour l’instant j’utilise un mot-clé pour exclure ce menu dans les articles qui le nécessitent :
      {!titre_mot=xxxyz}. Ça marche, mais c’est contraignant pour les rédacteurs. Et il s auront facilement tendance à « oublier », je les connais bien ! Un système automatique serait bien plus pratique...

      Donc je ne mets pas « Résolu » ;-)

    • Il est difficile de répondre sans avoir une idée plus précise du code générant le menu en question. Dois-je comprendre qu’il s’agit d’un menu des rubriques / sous-rubriques et articles ?

      Et pourquoi pas utiliser le plugin Menus, tout à fait compatible avec Court-Circuit. Il est possible de faire un menu avec Rubriques / Sous-rubriques et Articles avec des conditions sur le nombre d’articles dans la sous-rubriques pour afficher ou non les articles en question.

    • Il s’agit d’un menu tout simple qui répertorie les articles de la rubrique. Il n’y a pas de sous-rubriques. Je n’aime pas trop le plugin Menus qui souvent ne sert qu’à pallier certaines insuffisances et peut aussi semer le trouble dans la navigation. Je préfère l’arborescence « naturelle » d’un site.

      Si ça peut aider, voici le code de ce menu (utilisé avec Zpip dans un fichier /inclure) :

      <B_articles_racine>
      <ul>
      <BOUCLE_articles_racine(ARTICLES) {id_rubrique} {id_article !IN 11} {par num titre} {par date} {!titre_mot=exclumenu}>           
      <li>            
      <#EXPOSE{span,a href="#URL_ARTICLE"}[ class="(#EXPOSE)"]>
      [(#TITRE|supprimer_numero|couper{80})]
      </#EXPOSE{span,a}>
      </li>		           
      </BOUCLE_articles_racine>           
      </ul>            		             		
      </B_articles_racine>
    • Et avec un test : [(#TOTAL_BOUCLE|>{1}|oui)<li> ....... </li>] ?

    • Ah oui, ça marche, merci !

      Il y a juste un petit problème : l’espace qu’occuperait le menu reste là et décale la suite d’autant vers le bas. Alors qu’avec le mot-clé ça le fait pas. J’ai essayé d’y remédier en introduisant une div class, reprise en css, mais sans y arriver.

    • Quel est le code produit ? les parties avant et après boucle sont-elles exécutées ?

      Il est impératif que les crochets de #TOTAL_BOUCLE suivent et précèdent les balises de la boucle (pas d’espace ni saut de paragraphe) pour que la boucle ne renvoie absolument rien en cas de TOTAL_BOUCLE=1 (même pas un espace) ce qui fait que les parties options avant et après boucle ne seront pas générées (à savoir les ul).

    • J’utilise toujours le menu exposé plus haut dans ce fil. J’y introduis le test #TOTAL_BOUCLE comme montré ci-dessus avant et après li. Jusque-là ça marche, car j’ai modifié mes css pour cela. Quand il n’y a qu’un article, le code produit affiche les balises ul, avec rien dedans.

      Mais rien n’est simple, il y a d’autres contenus qui paraissent dans cette colonne. En fait ce que je voudrais, c’est qu’après le menu (quand il y a plus de 1 article) s’affiche un espace avant les autres contenus qui suivent. Et cet espace je ne le veux pas quand il n’y a qu’un article et donc pas de menu. (Je sais, je suis un mec un peu compliqué !)

      J’ai essayé d’introduire une div class avec cet espace à plusieurs endroits de la boucle (partie alternative ou conditionnelle), mais je n’arrive pas à faire paraitre cet espace uniquement avec l’affichage du menu. Ce n’est peut-être pas possible…

    • Un problème à la fois. Sachant que les questions CSS seront à discuter plutôt sur SPIP-User.

      Si les ul sont produits c’est donc que, dans le cas où il y a un article, le contenu de la boucle renvoie quelque chose et donc que les parties optionnelles sont affichées. Cf. message précédent.

    Répondre à ce message

  • 1

    Bonjour,

    Ce plugin ne semble pas compatible avec les fonctions multilingues de SPIP !
    En effet, le paramètre LANG se perd entre chaques pages lorsque j’utilise le plugin. ..C’est bien embettant car sinon ce plugin est une petite merveille :)

    Quelqun aurait il une idee ?

    Répondre à ce message

  • 3
    blonchk

    Plugin installé/désinstallé uniquement via le mécanisme « plugins/auto » de spip3.
    Après première désinstallation, je ne suis `probablement´ pas repassé par exec=admin_plugin. Une fois la désinstallation annoncée comme OK, je peux très bien avoir sauté ailleurs dans l’interface privée...
    Je n’ai pas forcé un vidage les caches après la première désinstallation. Cette idée ne m’est venue que dans le cadre de mon Dep R&S, après un passage sur le chat et sur conseil de b_b.

    Ignorant tout de php et de la galaxie Spip, je ne peux t’aider énormément pour le debug. Je n’ai eu aucun message et lors de cet incident, court-circuit était le seul plugin additionnel installé. Je vais évidemment essayer de combler mes lacunes au plus vite mais je suis actuellement plutôt dans l’urgence :(
    Pour les articles, j’ai actuellement le comportement souhaité. Je résume le comportement dans les deux cas

    Soit l’arborescence des rubriques/articles suivante :

    1
    1.1 a11-1, a11-2
    1.1.1 a111-1, a111-2
    1.1.2 a112

    2
    2.1 a21
    2.2 a22

    A - Comportement de l’installation par défaut
    Je me suis contenté de vérifier 1, 2 et 5 à « rediriger » ou « oui » (pas noté les autres défauts)
    Cliquer sur le noeud de rubrique « 1 » résulte en l’affichage de l’article « a111-1 » !!!
    Tous les noeuds intermédiaires sont court-cicuités. Impossible également d’accéder au rubriques intermédiaires.
    Ensuite, n’importe quels bidouillages de config ne change rien (mais ça, c’est probablement une histoire de cache)

    B - Comportement de l’installation du plugin sur ancienne config du plugin existant dans spip_meta avec tous les réglages à « non » ou équiv.
    En activant 1,2 et 5, j’ai le comportement recherché : cliquer sur le noeud 1 ou le noeud 11 affiche a11-1, cliquer 111 affiche a111-1

    Désolé de ne pouvoir en faire plus

    • blonchk

      P.S : A noter que lors de la création des article, je suis remonté dans l’arbre en commençant par créer les articles des noeuds terminaux 1.1.2 et 1.1.1, puis remontant d’un cran, et ainsi de suite jusqu’à la racine.

    • blonchk

      P.S’ : J’ai commencé par créer l’arborescence des rubriques à partir d’un croquis sans me préoccuper du moindre article.

    • La page admin_plugin recalcule tous les pipleines. Donc si on supprime manuellement un plugin, il faut toujours repasser par là.

      Après chaque grosse modif de config ou activation/désactivation de plugin il est recommandé de vider manuellement le cache.

      Si le comportement attendu est là après vidage de cache, alors, c’est que le plugin semble fonctionner correctement.

      Cordialement

    Répondre à ce message

  • 2
    lupitek

    Il y a un bug avec la réecriture d’URL visiblement.

    A voir sur mon site : http://www.khantora.com
    Les url reécrites sont correctes dans le menu de droite au survol mais quand on cliques dessus, l’url qui apparait dans le navigateur est du style : spip.php ?page=article&id_article=135.

    Quand j’active les URL arbo ca fonctionne. Par contre avec URL propres et URL propres + html ca marche plus.

    Répondre à ce message

  • 2

    bonjour,

    un problème rencontré avec court circuit2 :
    si un article est numéroté 0 (zéro) ou 00 (par exemple 0. Le titre), alors la redirection ne fonctionnera pas vers cet article.

    je propose le patch suivant en ligne 7 du fichier
    court-circuit/courtcircuit_selection_article.html :

       
       
    <BOUCLE_rang_un(ARTICLES){id_rubrique}{lang}{par num titre}{0,1}>[(#ENV{rang_un,oui}|=={oui}|et{#RANG|!=={''}}|?{#ID_ARTICLE,''})]</BOUCLE_rang_un>
    • lrtrln

      Comme vu à l’instant avec denisb sur l’irc j’ai de mon coté contourné le problème en excluant les titre préfixés en 0 (ajout de titre !== ^[0] à la boucle rang_un).
      L’idée de est de pouvoir garder le comportement logique d’exclusion des article titrés en 0.
      Du coup, pourquoi ne pas imaginer ajouter une option de configuration qui permette d’exclure ou non tous les articles de la redirection. Il serait alors possible d’obtenir la séquence suivante dans un menu :
      RUB COURTCIRCUIT
      0. ARTICLE masqué
      0. ARTICLE masqué
      10. ARTICLE à afficher
      20. ARTICLE listé
      30. ARTICLE listé

    • Bonjour,

      je ne comprends pas pourquoi les articles numérotés 0 devraient être ignorés. Le numéro influe simplement sur l’ordre des articles, non sur leur affichage ou non (sauf en cas de bidouille personnelle mais il s’agit dès lors d’un détournement du numéro des titres). D’ailleurs, court-circuit ne gère nullement l’affichage ou non d’un article, mais simplement opère une redirection.

      Ce que soulève denisb est bel et bien un bug et sa correction me semble appropriée. Ajouter une option supplémentaire me semble compliqué encore plus un formulaire de configuration qui est déjà difficile à appréhender.

      Si l’on souhaite spécifier une redirection sur un article spécifique, il y a justement le plugin Article d’accueil pour cela.

      Je ne vois pas à quoi fait référence la notion de « article masqué ». S’il s’agit d’un article qui ne doit pas être visible sur le site public, il ne doit alors pas êre publié.

      Cordialement

    Répondre à ce message

  • 4

    Hello

    Le plugin pourrait-il aussi court-circuiter le sommaire ? Soit vers une sous-rubrique particulière, soit vers la première sous rubrique (tri par numéro du titre et date) avec application des règles pour les rubriques ?

    • Techniquement c’est faisable.

      Ensuite, est-ce opportun ? Il faudrait que le formulaire de court-circuitagede la page d’accueil soit clairement distinct de celui du court-circuitage des rubriques.

      Grosso modo, si j’ai bien compris, les règles seraient, au choix (et non cumulatives) ?

      • Une rubriquespécifique
      • Premier secteur du site (par num titre, titre)
      • Première rubrique du secteur de langue
      • Un article spécifique
      • Article le plus récent du site
    • Opportun ? Ben j’ai un cas ou ça peut me servir plutôt que de surcharger le sommaire.html de zpip : mes secteurs sont des années et je veux que le visiteur soit dirigé directement vers le sommaire de l’année courante, les autres années étant considérées comme des archives... Et comme je pense que ça peut servir à d’autres, je propose ;-)

      Sinon les règles que tu proposes me conviennent

    • Si je puis me permettre, ce que tu exposes @Yffic est typiquement un cas particulier, qui devrait donc se régler par surcharge. Ce plugin voulait proposer un fonctionnement générique par défaut (court-circuiter les rubriques), de façon à offrir davantage de possibilités qu’avec un SPIP natif (pouvoir faire un site avec ou sans rubrique ou les deux). Or ce que tu souhaites est déjà faisable sans Court-circuit.

    • @Romy : Tout ce que fait Court-circuit est faisable en surchargeant les squelettes ! C’est ce qu’on faisait avant... Et à un moment donné à force de faire et refaire les même manips, on se dit qu’il sera avantageux de faire un plugin. Donc, l’intérêt de passer par ce plugin est justement d’éviter de surcharger pour ne pas passer à côté des mises jour des squelettes.

    Répondre à ce message

  • 2

    Bonjour,
    je rencontre un problème avec la balise #EXPOSE. En effet lorsque un article (seul dans la rubrique) est affiché la balise #EXPOSE ne marche pas pour la rubrique.

    Merci, d’avance.

      • Quelle version du plugin ?
      • Quelle version de SPIP ?
      • Un exemple consultable en ligne ?
    • En fait ça marche. J’ai du vidé plusieurs fois le cache du site + le cache de mon navigateur. En tout cas merci pour ta proposition d’aide.

    Répondre à ce message

  • Pas un commentaire sur cette petite merveille ?
    Mince alors !
    Un grand merci aux auteurs !

    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