[SPIP Zone] polyhiérarchie -> retour d'expérience

Bonjour,

je viens de terminer une grosse étape de conversion de mon site qui utilise maintenant intensivement polyhiérarchie.
Je confirme que ce plugin est excellent et permet de faire des choses qui demandaient des acrobaties incroyables à base de mots-clés avant.

Je précise avant tout que je suis en spip 2.0.8 avec polyhiérarchie en v0.1 [29866]
J'ai aussi dû appliquer un correctif pour supprimer un message d'erreur qui apparaissait partout : remplacement des &$var par des $var dans les paramètres des déclaration de critères de public/polyhier_criteres.php (correctif [29874] proposé par Gilles Vincent, merci !).
Je ne sais pas s'il est possible ou pas que certains des problèmes décrits ci-dessous proviennent du report de ce correctif (et uniquement celui-ci, pas ceux entre 29866 et 29874 car je ne suis pas en svn).

Cependant, quelques points peuvent être encore améliorés / débuggés, voici mes impressions :

- Le message "également dans les rubriques" indiqué dans la doc est absent du fil d'Ariane, est-ce un bug ou est-ce que vous n'avez pas encore eu le temps de l'intégrer ?

- Si on a beaucoup de secteurs et que la pagination entre donc en jeu dans le sélecteur de rubrique d'un objet, un bug d'affichage oblige à cliquer deux fois pour sélectionner la dernière page (premier clic => apparition d'un ascenseur, deuxième clic change la page)

- impossible de faire fonctionner l'ajout rapide de rubrique

- une <boucle(ARTICLES){branche_complete}{!id_mot IN (array)}> génère une erreur SQL car le tri final de la requête générée se fait sur FIELD(id_mot) qui n'existe pas dans la table articles => contourné en mettant un autre critère de tri explicite, mais c'est un bug

- l'affichage des rubriques liées serait peut-être plus clair en partie centrale, après un intertitre ou dans un cadre pour les différencier des rubriques enfants directes

- ça serait aussi très utile d'avoir les rubriques liées dans le menu de navigation rapide (icône "tout le site"), avec une couleur différente quand elles sont enfant indirect

- Un truc optionnel mais qui pourrait être bien utile : une boucle (HIERARCHIE_COMPLETE) retournant par défaut la hiérarchie normale, mais à laquelle on puisse forcer un critère id_secteur pour retrouver un chemin indirect menant à ce secteur s'il existe. Peut-être que je me trompe, mais il me semble que l'essentiel de l'utilisation de ce plugin sur un site bien structuré revient à faire apparaître le contenu dans des secteurs différents (c'est en tout cas ce que je fais), dans ce cas, cette boucle serait très utile pour afficher un fil d'Ariane correct sans faire de la gymnastique avec des boucles récursives.

- Enfin, le point le plus important à mon avis car il a impacté les performances de mon site, serait la possibilité de passer un #ARRAY en paramètre des critères enfants, parents, branche, et leurs variantes.
Avant polyhiérarchie, j'avais optimisé mon site en n'utilisant plus {branche} mais une récursion utilisant des array pour ne parcourir qu'une seule fois la profondeur de l'arbre quand je voulais fusionner plusieurs branches (au lieu de n fois, où n est le nombre de branches), ce n'est plus possible aujourd'hui du fait de la limitation de syntaxe de ces nouveaux critères.
Alors je sais que certains d'entre-vous vont dire "c'est mal de fusionner des branches", mais il y a des cas où on ne peut pas faire autrement (ou alors on est obligé de sortir du système pur de rubriques et ajouter des traitements en plus par mot clé => inconvénient : une opération de plus pour les rédacteurs à chaque article).

Voilà, dans tous les cas, même s'il reste en l'état, le passage à ce plugin représente un énorme pas en avant pour mon site : la structure de l'espace privé correspond maintenant en tout point à celle de l'espace public, ce qui est un énorme plus car les contributeurs y perdaient leur latin et n'arrivaient parfois plus à retrouver leurs articles.

Donc merci beaucoup aux auteurs, j'espère que ce retour vous servira.

A bientôt
    Simon

Bonjour,

Le 31 juil. 09 à 09:23, Simon Camerlo a écrit :

Bonjour,

je viens de terminer une grosse étape de conversion de mon site qui utilise maintenant intensivement polyhiérarchie.
Je confirme que ce plugin est excellent et permet de faire des choses qui demandaient des acrobaties incroyables à base de mots-clés avant.

Je précise avant tout que je suis en spip 2.0.8 avec polyhiérarchie en v0.1 [29866]
J'ai aussi dû appliquer un correctif pour supprimer un message d'erreur qui apparaissait partout : remplacement des &$var par des $var dans les paramètres des déclaration de critères de public/polyhier_criteres.php (correctif [29874] proposé par Gilles Vincent, merci !).
Je ne sais pas s'il est possible ou pas que certains des problèmes décrits ci-dessous proviennent du report de ce correctif (et uniquement celui-ci, pas ceux entre 29866 et 29874 car je ne suis pas en svn).

Cependant, quelques points peuvent être encore améliorés / débuggés, voici mes impressions :

- Le message "également dans les rubriques" indiqué dans la doc est absent du fil d'Ariane, est-ce un bug ou est-ce que vous n'avez pas encore eu le temps de l'intégrer ?

Ah, ça utilise un pipeline ajouté qui sera dans la 2.0.9 en attente de sortie. J'avais oublié de le préciser dans la doc.

- Si on a beaucoup de secteurs et que la pagination entre donc en jeu dans le sélecteur de rubrique d'un objet, un bug d'affichage oblige à cliquer deux fois pour sélectionner la dernière page (premier clic => apparition d'un ascenseur, deuxième clic change la page)

- impossible de faire fonctionner l'ajout rapide de rubrique

peut etre l'ergonomie qui est pas claire ?

- une <boucle(ARTICLES){branche_complete}{!id_mot IN (array)}> génère une erreur SQL car le tri final de la requête générée se fait sur FIELD(id_mot) qui n'existe pas dans la table articles => contourné en mettant un autre critère de tri explicite, mais c'est un bug

je vais regarder

- l'affichage des rubriques liées serait peut-être plus clair en partie centrale, après un intertitre ou dans un cadre pour les différencier des rubriques enfants directes

oui, il semble que ce soit mieux

- ça serait aussi très utile d'avoir les rubriques liées dans le menu de navigation rapide (icône "tout le site"), avec une couleur différente quand elles sont enfant indirect

bof, cette page est vouée à mourir, trop compliquée et loudre.

- Un truc optionnel mais qui pourrait être bien utile : une boucle (HIERARCHIE_COMPLETE) retournant par défaut la hiérarchie normale, mais à laquelle on puisse forcer un critère id_secteur pour retrouver un chemin indirect menant à ce secteur s'il existe. Peut-être que je me trompe, mais il me semble que l'essentiel de l'utilisation de ce plugin sur un site bien structuré revient à faire apparaître le contenu dans des secteurs différents (c'est en tout cas ce que je fais), dans ce cas, cette boucle serait très utile pour afficher un fil d'Ariane correct sans faire de la gymnastique avec des boucles récursives.

Normalement, je ne pense pas que ce soit nécessaire ni souhaitable : la boucle hierarchie necessite d'etre dans une boucle rubrique. Il suffit de selectionner la bonne rubrique avec les criteres parents et id_secteur voulus, non ?

- Enfin, le point le plus important à mon avis car il a impacté les performances de mon site, serait la possibilité de passer un #ARRAY en paramètre des critères enfants, parents, branche, et leurs variantes.

Normalement, branche le permet (c'etait deja le cas dans le core).
Pour enfants et parents je vais regarder, mais je me demande si ce n'est pas aussi le cas. Mais sinon, oui, bonne idée.

Avant polyhiérarchie, j'avais optimisé mon site en n'utilisant plus {branche} mais une récursion utilisant des array pour ne parcourir qu'une seule fois la profondeur de l'arbre quand je voulais fusionner plusieurs branches (au lieu de n fois, où n est le nombre de branches), ce n'est plus possible aujourd'hui du fait de la limitation de syntaxe de ces nouveaux critères.
Alors je sais que certains d'entre-vous vont dire "c'est mal de fusionner des branches", mais il y a des cas où on ne peut pas faire autrement (ou alors on est obligé de sortir du système pur de rubriques et ajouter des traitements en plus par mot clé => inconvénient : une opération de plus pour les rédacteurs à chaque article).

Voilà, dans tous les cas, même s'il reste en l'état, le passage à ce plugin représente un énorme pas en avant pour mon site : la structure de l'espace privé correspond maintenant en tout point à celle de l'espace public, ce qui est un énorme plus car les contributeurs y perdaient leur latin et n'arrivaient parfois plus à retrouver leurs articles.

Donc merci beaucoup aux auteurs, j'espère que ce retour vous servira.

Merci d'avoir testé !

Cédric

* cedric.morin@yterium.com tapuscrivait, le 31/07/2009 11:21:

- ça serait aussi très utile d'avoir les rubriques liées dans le menu de navigation rapide (icône "tout le site"), avec une couleur différente quand elles sont enfant indirect

bof, cette page est vouée à mourir, trop compliquée et loudre.

En la supprimant, il ne faudrait pas perdre sa fonctionnalité principale qui est de pouvoir chercher un article à la poubelle pour l'en sortir.

Le glisser/lâcher pour réorganiser le site est aussi parfois utile...

--
RealET

Le 31/07/2009 11:21, cedric.morin@yterium.com a écrit :

bof, cette page est vouée à mourir, trop compliquée et loudre.

J'ai un doute mais je crois qu'il ne parlait pas de la *page* quand on clique sur "tous le site", mais du *menu* de navigation rapide déroulant.

Pour que quand on est dans un sous-menu (rubriques d'une rubrique) on voit d'abord les sous-rubriques directes, puis d'une autre couleur les sous-rubriques liés.

--
RastaPopoulos

cedric.morin@yterium.com a écrit :

- impossible de faire fonctionner l'ajout rapide de rubrique

peut etre l'ergonomie qui est pas claire ?

non : je tape un numéro de rubrique valide et publiée, je clique sur ajouter, la page réagit car mon champ se vide, mais la rubrique n'est pas ajoutée dans les parents.

- ça serait aussi très utile d'avoir les rubriques liées dans le menu de navigation rapide (icône "tout le site"), avec une couleur différente quand elles sont enfant indirect

bof, cette page est vouée à mourir, trop compliquée et loudre.

Je parle du sélecteur rapide par survol en fait.

- Un truc optionnel mais qui pourrait être bien utile : une boucle (HIERARCHIE_COMPLETE) retournant par défaut la hiérarchie normale, mais à laquelle on puisse forcer un critère id_secteur pour retrouver un chemin indirect menant à ce secteur s'il existe. Peut-être que je me trompe, mais il me semble que l'essentiel de l'utilisation de ce plugin sur un site bien structuré revient à faire apparaître le contenu dans des secteurs différents (c'est en tout cas ce que je fais), dans ce cas, cette boucle serait très utile pour afficher un fil d'Ariane correct sans faire de la gymnastique avec des boucles récursives.

Normalement, je ne pense pas que ce soit nécessaire ni souhaitable : la boucle hierarchie necessite d'etre dans une boucle rubrique. Il suffit de selectionner la bonne rubrique avec les criteres parents et id_secteur voulus, non ?

oui, c'est ce que j'ai fait avec un appel récursif, mais à ce moment-là l'ordre est du plus profond au secteur, alors que hiérarchie fait l'inverse => nécessité de jouer avec un array pour avoir un beau chemin d'accès dans l'ordre.

- Enfin, le point le plus important à mon avis car il a impacté les performances de mon site, serait la possibilité de passer un #ARRAY en paramètre des critères enfants, parents, branche, et leurs variantes.

Normalement, branche le permet (c'etait deja le cas dans le core).
Pour enfants et parents je vais regarder, mais je me demande si ce n'est pas aussi le cas. Mais sinon, oui, bonne idée.

La syntaxe est {branche #ARRAY{x,y}} ?
J'avoue que, comme ce n'ets pas documenté, je n'ai pas essayé...

Simon

cedric.morin@yterium.com a écrit :

- Enfin, le point le plus important à mon avis car il a impacté les performances de mon site, serait la possibilité de passer un #ARRAY en paramètre des critères enfants, parents, branche, et leurs variantes.

Normalement, branche le permet (c'etait deja le cas dans le core).
Pour enfants et parents je vais regarder, mais je me demande si ce n'est pas aussi le cas. Mais sinon, oui, bonne idée.

branche et ses variantes le permettent en effet (allez, on repasse sur tous les squelettes ! mais c'est une super nouvelle)
j'avais essayé avec {branche IN #ARRAY}... :confused:

par contre enfants génère une erreur, et parents ne renvoie rien

Simon

En la supprimant, il ne faudrait pas perdre sa fonctionnalité principale qui
est de pouvoir chercher un article à la poubelle pour l'en sortir.

le moteur de recherche permet ça je crois

Le glisser/lâcher pour réorganiser le site est aussi parfois utile...

Chez moi il ne marche pas.

-- Fil

* Fil tapuscrivait, le 31/07/2009 12:25:

En la supprimant, il ne faudrait pas perdre sa fonctionnalité principale qui
est de pouvoir chercher un article à la poubelle pour l'en sortir.

le moteur de recherche permet ça je crois

Le glisser/lâcher pour réorganiser le site est aussi parfois utile...

Chez moi il ne marche pas.

Ah bon ?
Chez moi, ça marche, mais c'est vrai que c'est précis à quelques pixels.
Il faut glisser/lâcher sur les pictos des rubriques, au moment ou ça provoque un changement de couleur de fond quelque part.
Testé avec FireFox 3.

--
RealET

Testé avec FireFox 3.

Je précise. Sur un site avec peu de rubriques ça marche, mais ça
explose assez vite ; pourtant, son intérêt, c'est quand tu as un gros
site avec plein de rubriques. Autrement dit ça marche quand on n'en a
pas besoin, et ça ne marche pas quand on en a besoin.

-- Fil

cedric.morin@yterium.com a écrit :

- Un truc optionnel mais qui pourrait être bien utile : une boucle (HIERARCHIE_COMPLETE) retournant par défaut la hiérarchie normale, mais à laquelle on puisse forcer un critère id_secteur pour retrouver un chemin indirect menant à ce secteur s'il existe. Peut-être que je me trompe, mais il me semble que l'essentiel de l'utilisation de ce plugin sur un site bien structuré revient à faire apparaître le contenu dans des secteurs différents (c'est en tout cas ce que je fais), dans ce cas, cette boucle serait très utile pour afficher un fil d'Ariane correct sans faire de la gymnastique avec des boucles récursives.

Normalement, je ne pense pas que ce soit nécessaire ni souhaitable : la boucle hierarchie necessite d'etre dans une boucle rubrique. Il suffit de selectionner la bonne rubrique avec les criteres parents et id_secteur voulus, non ?

Ce week-end, j'ai pensé à un autre cas où il est difficile d'afficher un joli chemin.

Soit l'arborescence suivante :
    secteur1 -> rub1 -> rub2 -> art1
    secteur2 -> rub3 -> rub2(indirect) -> art1

Quand on est arrivé sur la page art1 en passant par rub3, il n'est pas simple de maintenir la continuité de navigation, dans le cas où on veut afficher tout le chemin utilisé, car le id_secteur de rub2 est et restera toujours secteur 1.

C'est possible au moyen de contorsions un peu complexes, mais pas simple.

La boucle que je propose (qui pourrait s'appeler autrement, comme CHEMIN_SECTEUR) permettrait de gérer en grande partie ce cas.

Evidemment ça ne corrige pas tous les souci de navigation potentiels qui peuvent découler d'un graphe complexe comme on peut en créer avec polyhiérarchie (à commencer par le cas où la rubrique est ajoutée à deux endroits dans le même secteur), mais dans le cadre d'un site bien structuré, ça éviterait de grosses prises de tête vu qu'on n'aurait plus qu'à passer l'id_secteur courant aux objets.

A bientôt
    Simon

Le 3 août 09 à 05:03, Simon Camerlo a écrit :

cedric.morin@yterium.com a écrit :

- Un truc optionnel mais qui pourrait être bien utile : une boucle (HIERARCHIE_COMPLETE) retournant par défaut la hiérarchie normale, mais à laquelle on puisse forcer un critère id_secteur pour retrouver un chemin indirect menant à ce secteur s'il existe. Peut-être que je me trompe, mais il me semble que l'essentiel de l'utilisation de ce plugin sur un site bien structuré revient à faire apparaître le contenu dans des secteurs différents (c'est en tout cas ce que je fais), dans ce cas, cette boucle serait très utile pour afficher un fil d'Ariane correct sans faire de la gymnastique avec des boucles récursives.

Normalement, je ne pense pas que ce soit nécessaire ni souhaitable : la boucle hierarchie necessite d'etre dans une boucle rubrique. Il suffit de selectionner la bonne rubrique avec les criteres parents et id_secteur voulus, non ?

Ce week-end, j'ai pensé à un autre cas où il est difficile d'afficher un joli chemin.

Soit l'arborescence suivante :
  secteur1 -> rub1 -> rub2 -> art1
  secteur2 -> rub3 -> rub2(indirect) -> art1

Quand on est arrivé sur la page art1 en passant par rub3, il n'est pas simple de maintenir la continuité de navigation, dans le cas où on veut afficher tout le chemin utilisé, car le id_secteur de rub2 est et restera toujours secteur 1.

C'est possible au moyen de contorsions un peu complexes, mais pas simple.

La boucle que je propose (qui pourrait s'appeler autrement, comme CHEMIN_SECTEUR) permettrait de gérer en grande partie ce cas.

Evidemment ça ne corrige pas tous les souci de navigation potentiels qui peuvent découler d'un graphe complexe comme on peut en créer avec polyhiérarchie (à commencer par le cas où la rubrique est ajoutée à deux endroits dans le même secteur), mais dans le cadre d'un site bien structuré, ça éviterait de grosses prises de tête vu qu'on n'aurait plus qu'à passer l'id_secteur courant aux objets.

Dans les hiérarchies à chemin multiples, il ne peut être définie de règle simple d'affichage du chemin, sauf à passer explicitement chaque rubrique qui le compose dans l'arborescence.

Ce que tu proposes répond à un cas, mais ne peut les couvrir tous.
Pour le moment, je ne pense pas pertinent de proposer une solution packagée complète par défaut dans le plugin, et je considère que c'est au webmestre d'adapter ses squelettes en fonction de l'usage qu'il fait de la polyhierarchie.

Tu peux sans doute deja faire un modele/cheminsecteur et le partager sur spip-contrib, pour voir si cela correspond au besoin courant.
Par contre, je n'ai pas compris pourquoi tu avais besoin d'une boucle recursive pour faire ton chemin...

Cédric

cedric.morin@yterium.com a écrit :

Dans les hiérarchies à chemin multiples, il ne peut être définie de règle simple d'affichage du chemin, sauf à passer explicitement chaque rubrique qui le compose dans l'arborescence.

oui

Ce que tu proposes répond à un cas, mais ne peut les couvrir tous.

En effet, je pense que c'est le cas le plus courant, mais je me trompe peut-être.

Pour le moment, je ne pense pas pertinent de proposer une solution packagée complète par défaut dans le plugin, et je considère que c'est au webmestre d'adapter ses squelettes en fonction de l'usage qu'il fait de la polyhierarchie.

ok

Tu peux sans doute deja faire un modele/cheminsecteur et le partager sur spip-contrib, pour voir si cela correspond au besoin courant.

Je vais voir ce que je peux faire.

Par contre, je n'ai pas compris pourquoi tu avais besoin d'une boucle recursive pour faire ton chemin...

Pour remonter de l'objet affiché jusqu'à la racine, et ce quelle que soit la profondeur dans l'arbre, y'a un autre moyen ?

A bientôt

    Simon

cedric.morin@yterium.com a écrit :

- Enfin, le point le plus important à mon avis car il a impacté les performances de mon site, serait la possibilité de passer un #ARRAY en paramètre des critères enfants, parents, branche, et leurs variantes.

Normalement, branche le permet (c'etait deja le cas dans le core).
Pour enfants et parents je vais regarder, mais je me demande si ce n'est pas aussi le cas. Mais sinon, oui, bonne idée.

Un petit bug sur les appels {branche_complete #GET{array}} : si l'array est vide, la boucle renvoie toutes les rubriques du site.

A bientôt
    Simon

cedric.morin@yterium.com a écrit :

Dans les hiérarchies à chemin multiples, il ne peut être définie de règle simple d'affichage du chemin, sauf à passer explicitement chaque rubrique qui le compose dans l'arborescence.

Ce que tu proposes répond à un cas, mais ne peut les couvrir tous.
Pour le moment, je ne pense pas pertinent de proposer une solution packagée complète par défaut dans le plugin, et je considère que c'est au webmestre d'adapter ses squelettes en fonction de l'usage qu'il fait de la polyhierarchie.

Tu peux sans doute deja faire un modele/cheminsecteur et le partager sur spip-contrib, pour voir si cela correspond au besoin courant.
Par contre, je n'ai pas compris pourquoi tu avais besoin d'une boucle recursive pour faire ton chemin...

Bonjour,

voilà le code brut de génération d'un chemin dans le bon ordre à l'intérieur un secteur donné pour une rubrique de profondeur quelconque en cas d'utilisation de polyhiérarchie (si pas de secteur dans l'environnement, on prend le secteur par défaut).
Testé sur mon site, ça fonctionne : la boucle affiche un chemin valide parmi tous ceux qui existent dans le secteur courant.
Si d'autres ont besoin de cette fonction, ben la voilà :slight_smile:

<BOUCLE_rubrique(RUBRIQUES){id_rubrique}>
    <BOUCLE_trace_racine(RUBRIQUES){id_parent!=0}{parents}{id_secteur=#ENV{id_secteur} |sinon{#ID_SECTEUR}}>
        #SET_PUSH{stock_ordre_inverse,#ID_RUBRIQUE}
        <BOUCLE_recursion(BOUCLE_trace_racine)></BOUCLE_recursion>
    </BOUCLE_trace_racine>

    <BOUCLE_remettre_ordre_amorce(RUBRIQUES){id_rubrique=#ENV{id_secteur}}{!lang_select}>
       <a href="#URL_RUBRIQUE>#TITRE</a> &rt;
        <BOUCLE_remettre_ordre(RUBRIQUES){enfants}{id_rubrique IN #GET{stock_ordre_inverse}}{par id_rubrique}{0,1}{!lang_select}>
           <a href="#URL_RUBRIQUE>#TITRE</a> &rt;
            <BOUCLE_recursion_ordre(BOUCLE_remettre_ordre)></BOUCLE_recursion_ordre>
        </BOUCLE_remettre_ordre>
    </BOUCLE_remettre_ordre_amorce>
</BOUCLE_rubrique>

A bientôt
    Simon

Le mieux serait de mettre cela directement sur la zone, dans un squelette inclure/chemin-polyherarchique pret a inclure, non ?
Mais sur le principe je vois ton idée. Pas sûr qu'on puisse faire générique sans boucle recursive, en effet.
Cédric

Le 6 août 09 à 06:21, Simon Camerlo a écrit :

cedric.morin@yterium.com a écrit :

Dans les hiérarchies à chemin multiples, il ne peut être définie de règle simple d'affichage du chemin, sauf à passer explicitement chaque rubrique qui le compose dans l'arborescence.

Ce que tu proposes répond à un cas, mais ne peut les couvrir tous.
Pour le moment, je ne pense pas pertinent de proposer une solution packagée complète par défaut dans le plugin, et je considère que c'est au webmestre d'adapter ses squelettes en fonction de l'usage qu'il fait de la polyhierarchie.

Tu peux sans doute deja faire un modele/cheminsecteur et le partager sur spip-contrib, pour voir si cela correspond au besoin courant.
Par contre, je n'ai pas compris pourquoi tu avais besoin d'une boucle recursive pour faire ton chemin...

Bonjour,

voilà le code brut de génération d'un chemin dans le bon ordre à l'intérieur un secteur donné pour une rubrique de profondeur quelconque en cas d'utilisation de polyhiérarchie (si pas de secteur dans l'environnement, on prend le secteur par défaut).
Testé sur mon site, ça fonctionne : la boucle affiche un chemin valide parmi tous ceux qui existent dans le secteur courant.
Si d'autres ont besoin de cette fonction, ben la voilà :slight_smile:

<BOUCLE_rubrique(RUBRIQUES){id_rubrique}>
  <BOUCLE_trace_racine(RUBRIQUES){id_parent!=0}{parents}{id_secteur=#ENV{id_secteur} |sinon{#ID_SECTEUR}}>
      #SET_PUSH{stock_ordre_inverse,#ID_RUBRIQUE}
      <BOUCLE_recursion(BOUCLE_trace_racine)></BOUCLE_recursion>
  </BOUCLE_trace_racine>

  <BOUCLE_remettre_ordre_amorce(RUBRIQUES){id_rubrique=#ENV{id_secteur}}{!lang_select}>
     <a href="#URL_RUBRIQUE>#TITRE</a> &rt;
      <BOUCLE_remettre_ordre(RUBRIQUES){enfants}{id_rubrique IN #GET{stock_ordre_inverse}}{par id_rubrique}{0,1}{!lang_select}>
         <a href="#URL_RUBRIQUE>#TITRE</a> &rt;
          <BOUCLE_recursion_ordre(BOUCLE_remettre_ordre)></BOUCLE_recursion_ordre>
      </BOUCLE_remettre_ordre>
  </BOUCLE_remettre_ordre_amorce>
</BOUCLE_rubrique>

A bientôt
  Simon
_______________________________________________
spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone

Ok pour mettre ça dans un squelette sur la zone, il me faudrait des identifiants et les infos sur la méthode de connexion et les bonnes pratiques à appliquer sur la zone.

D'autant que mes boucles étaient fausses, elles ne géraient pas les cas où une partie du chemin (différente de la rubrique cible seule) est extérieure au secteur visé (cas d'une sous-rubrique descendante d'une rubrique liée indirectement).
Voici la version corrigée pour les archives.

<BOUCLE_rubrique(RUBRIQUES){id_rubrique}>
  <BOUCLE_trace_racine(RUBRIQUES){id_parent!=0}{parents}>
      #SET_PUSH{noeuds_graphe,#ID_RUBRIQUE}
      <BOUCLE_recursion(BOUCLE_trace_racine)></BOUCLE_recursion>
  </BOUCLE_trace_racine>

  <BOUCLE_remettre_ordre_amorce(RUBRIQUES){id_rubrique=#ENV{id_secteur}}{!lang_select}>

     <a href="#URL_RUBRIQUE>#TITRE</a> &rt;
      <BOUCLE_remettre_ordre(RUBRIQUES){enfants}{id_rubrique IN #GET{noeuds_graphe}}{id_secteur=#ENV{id_secteur} |sinon{#ID_SECTEUR}}{par id_rubrique}{0,1}{!lang_select}>
         <a href="#URL_RUBRIQUE>#TITRE</a> &rt;
          <BOUCLE_recursion_ordre(BOUCLE_remettre_ordre)></BOUCLE_recursion_ordre>
      </BOUCLE_remettre_ordre>
            <BOUCLE_hors_secteur(RUBRIQUES){enfants}{id_rubrique IN #GET{noeuds_graphe}}{par id_rubrique}{0,1}{!lang_select}>
                 <a href="#URL_RUBRIQUE>#TITRE</a> &rt;
                <BOUCLE_recursion_hors_secteur(BOUCLE_remettre_ordre)></BOUCLE_recursion_hors_secteur>
            </BOUCLE_hors_secteur> <//B_remettre_ordre>
  </BOUCLE_remettre_ordre_amorce>
</BOUCLE_rubrique>

A bientôt

    Simon

cedric.morin@yterium.com a écrit :

Le mieux serait de mettre cela directement sur la zone, dans un squelette inclure/chemin-polyherarchique pret a inclure, non ?
Mais sur le principe je vois ton idée. Pas sûr qu'on puisse faire générique sans boucle recursive, en effet.
Cédric

Le 6 août 09 à 06:21, Simon Camerlo a écrit :

cedric.morin@yterium.com a écrit :

Dans les hiérarchies à chemin multiples, il ne peut être définie de règle simple d'affichage du chemin, sauf à passer explicitement chaque rubrique qui le compose dans l'arborescence.

Ce que tu proposes répond à un cas, mais ne peut les couvrir tous.
Pour le moment, je ne pense pas pertinent de proposer une solution packagée complète par défaut dans le plugin, et je considère que c'est au webmestre d'adapter ses squelettes en fonction de l'usage qu'il fait de la polyhierarchie.

Tu peux sans doute deja faire un modele/cheminsecteur et le partager sur spip-contrib, pour voir si cela correspond au besoin courant.
Par contre, je n'ai pas compris pourquoi tu avais besoin d'une boucle recursive pour faire ton chemin...

Bonjour,

voilà le code brut de génération d'un chemin dans le bon ordre à l'intérieur un secteur donné pour une rubrique de profondeur quelconque en cas d'utilisation de polyhiérarchie (si pas de secteur dans l'environnement, on prend le secteur par défaut).
Testé sur mon site, ça fonctionne : la boucle affiche un chemin valide parmi tous ceux qui existent dans le secteur courant.
Si d'autres ont besoin de cette fonction, ben la voilà :slight_smile:

<BOUCLE_rubrique(RUBRIQUES){id_rubrique}>
  <BOUCLE_trace_racine(RUBRIQUES){id_parent!=0}{parents}{id_secteur=#ENV{id_secteur} |sinon{#ID_SECTEUR}}>
      #SET_PUSH{stock_ordre_inverse,#ID_RUBRIQUE}
      <BOUCLE_recursion(BOUCLE_trace_racine)></BOUCLE_recursion>
  </BOUCLE_trace_racine>

  <BOUCLE_remettre_ordre_amorce(RUBRIQUES){id_rubrique=#ENV{id_secteur}}{!lang_select}>

     <a href="#URL_RUBRIQUE>#TITRE</a> &rt;
      <BOUCLE_remettre_ordre(RUBRIQUES){enfants}{id_rubrique IN #GET{stock_ordre_inverse}}{par id_rubrique}{0,1}{!lang_select}>
         <a href="#URL_RUBRIQUE>#TITRE</a> &rt;
          <BOUCLE_recursion_ordre(BOUCLE_remettre_ordre)></BOUCLE_recursion_ordre>
      </BOUCLE_remettre_ordre>
  </BOUCLE_remettre_ordre_amorce>
</BOUCLE_rubrique>

A bientôt
  Simon
_______________________________________________
spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone

Bonjour,

Encore un petit retour sur polyhiérarchie : mon spip.log est spammé par des "Erreur - 'polyhier_autoriser' non definie !" régulièrement.
Le souci est que ça arrive essentiellement quand j'envoie une newsletter au moyen du plugin spip-lettres de Artego (qui sauvegarde les lettres et les abonnés directement dans les rubriques concernées), et que ça crée des interférences aléatoires : une bonne partie des mails ne partent pas alors que tout semble bon dans les logs à part cette erreur.

Ma config :
spip 2.0.9
polyhiérarchie v0.1 rev 29866
spip-lettres 3.8

Une idée ?

A bientôt
    Simon

Le 24 août 09 à 11:20, Simon Camerlo a écrit :

Bonjour,

Encore un petit retour sur polyhiérarchie : mon spip.log est spammé par des "Erreur - 'polyhier_autoriser' non definie !" régulièrement.

Une fausse erreur, sans aucune incidence sur le fonctionnement de SPIP

Le souci est que ça arrive essentiellement quand j'envoie une newsletter au moyen du plugin spip-lettres de Artego (qui sauvegarde les lettres et les abonnés directement dans les rubriques concernées), et que ça crée des interférences aléatoires : une bonne partie des mails ne partent pas alors que tout semble bon dans les logs à part cette erreur.

Non, ça n'a vraiment rien à voir.
Tu as un autre problème en ce qui concerne l'envoi de tes mails.

Cédric

OK, je continue à chercher alors.
Merci.

Simon

Le 24 août 2009 18:46, cedric.morin@yterium.com <cedric.morin@yterium.com> a écrit :

Le 24 août 09 à 11:20, Simon Camerlo a écrit :

Bonjour,

Encore un petit retour sur polyhiérarchie : mon spip.log est spammé par des « Erreur - ‹ polyhier_autoriser › non definie ! » régulièrement.

Une fausse erreur, sans aucune incidence sur le fonctionnement de SPIP

Le souci est que ça arrive essentiellement quand j’envoie une newsletter au moyen du plugin spip-lettres de Artego (qui sauvegarde les lettres et les abonnés directement dans les rubriques concernées), et que ça crée des interférences aléatoires : une bonne partie des mails ne partent pas alors que tout semble bon dans les logs à part cette erreur.

Non, ça n’a vraiment rien à voir.
Tu as un autre problème en ce qui concerne l’envoi de tes mails.

Cédric

RealET et Fil wrote:

En la supprimant, il ne faudrait pas perdre sa fonctionnalité principale qui
est de pouvoir chercher un article à la poubelle pour l'en sortir.

Et surtout c'est le seul outil qui permet de retrouver facilement les articles « refusés » (ce qui chez moi joue le rôle de « archivé »).

Si on pourrait configurer la vue habituel des rubriques
(ecrire/?exec=naviguer&id_rubrique=nn) pour montrer aussi les articles refusés/poubelle, je ne craindrais plus une disparition.

Paolo