SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

286 Plugins, 197 contribs sur SPIP-Zone, 249 visiteurs en ce moment

Accueil > Navigation > Navigation transversale > Polyhierarchie > Polyhiérarchie

Polyhiérarchie

14 juillet 2009 – par Cerdic, tetue – 157 commentaires

64 votes

Ce plugin permet de rattacher un article ou une rubrique à plusieurs rubriques parentes.

Hiérarchie unique ou multiple ? les deux !

Une unique rubrique, sinon c’est le bazar !
Par défaut, SPIP ne permet qu’une hiérarchie simple, qui consiste à associer chaque élément éditorial à un unique parent. Ceci résulte d’une volonté de contraindre le webmestre à structurer son site sainement.

En effet, le besoin de faire apparaître un contenu à deux endroits du site relève souvent d’une classification pas aboutie et d’une navigation mal pensée. Contraindre le webmestre à choisir une unique rubrique l’oblige donc à un minimum de réflexion sur l’arborescence du site, et évite la tentation des liens transverses multiples qui conduisent rapidement au capharnaüm.

Ainsi par défaut, SPIP ne permet de fabriquer que des sites bien rangés, avec une arborescence dont la hiérarchie stricte permet de ne pas se perdre.

Mais la polyhierarchie, c’est bien utile...
On parle de polyhierarchie [1] dès lors qu’un contenu est rattaché à plusieurs parents.

Il est parfois impossible de classer certaines données en arborescence, tel que le propose SPIP, sans perdre beaucoup en terme de compréhension ou de navigation. Pour illustrer un tel besoin, on peut lire les discussions sur la catégorisation hiérarchique dans Wikipedia qui en arrive à la conclusion que les liens hiérarchiques n’ont pas leur place dans une encyclopédie digne de ce nom, ou apprécier le cas, plus trivial, du classement de recettes de cuisine qui sont liées chacune à plusieurs ingrédients, à plusieurs type de plat, etc.

Dans ces cas-là, l’arborescence stricte imposée par SPIP est une limite gênante et les contournements habituellement utilisés (article virtuel, alias d’article, recopie de l’article) sont plus ou moins adaptés, plus ou moins pratiques et souvent lourds à l’usage.

Principe du plugin polyhierarchie

Le plugin permet de créer des liens hiérarchiques transversaux en rattachant articles et rubriques à plusieurs rubriques.

Dans la base de données, chaque article et rubrique conserve son unique parent principal, ce qui permet de désinstaller le plugin sans dommages pour le site.

Les liens secondaires vers les autres rubriques sont stockés dans une table annexe. Ils sont utilisables via des critères de boucle spécifiques.

On peut donc parler, pour chaque objet

  • d’une arborescence principale, qui permet d’accéder le plus directement au contenu. On appellera "liens directs" les liens qui constituent cette arborescence principale. Ce sont les liens en trait continus sur l’exemple ci-dessus.
  • d’une ou plusieurs arborescences complémentaires ou secondaires qui permettent d’accéder au contenu de façon indirecte. On parlera de liens indirects. Ce sont les liens en traits pointillés sur l’exemple ci-dessus.

Les termes « direct » et « indirect » seront utilisés dans les critères pour distinguer les deux types de liens pour les parents et les enfants.

En résumé, on peut retenir que les liens directs constituent l’arborescence principale de SPIP, qui est maintenue, même en l’absence du plugin. Les chemins secondaires constitués des liens indirects sont des navigations complémentaires ou transversales, qui ne seront utilisables que si le plugin est actif.

Utilisation dans l’espace privé

Dans l’espace privé, l’arborescence principale reste la référence. Mais les liens indirects permettent des navigations transversales utiles pour l’organisation du site.

Édition d’un article ou une rubrique
Lors de l’édition d’un article ou d’une rubrique, le sélecteur de rubrique par défaut est remplacé par un système de sélection multiples.

La première rubrique de la liste est celle de l’arborescence principale. Les suivantes constituent l’arborescence secondaire. Il est possible de changer l’ordre des rubriques par simple glisser-déplacer pour modifier la rubrique parente directe.

Le lien « ajouter » permet de faire apparaitre le navigateur de rubrique pour sélectionner une rubrique supplémentaire.

Il suffit de cliquer sur le « + » en regard d’une rubrique pour l’ajouter aux parents sélectionnés.

Le champ « Ajout rapide » permet d’indiquer un id_rubrique pour l’ajouter sans chercher dans l’arborescence. Il suffit d’entrer rubX (où X est l’id_rubrique) dans le champ et de cliquer sur Ajouter.

Chemins secondaires
Lorsqu’un article a plusieurs parents, le chemin affiché en haut est celui qui constitue l’arborescence principale. Les parents indirects sont également listés après la mention « Egalement dans les rubriques ».

Les liens permettent d’aller vers ces rubriques parents secondaires.

Contenus secondaires d’une rubrique
Dans une rubrique qui contient des enfants indirects, ceux-ci sont listés dans la marge latérale.

Comme précédemment, les liens permettent de naviguer vers ces contenus secondaires pour les modifier.

Utilisation dans les squelettes

L’utilisation de la polyhierarchie suppose que les squelettes soient conçus pour gérer les possibilités de navigation transversales. Pour cela, le plugin mets à disposition du webmestre plusieurs critères permettant de naviguer dans les arborescences multiples.

La boucle HIERARCHIE
La boucle HIERARCHIE n’est pas modifiée. Elle permet donc de dérouler le chemin principal d’une rubrique.

Le critère {branche}
Le critère {branche} est étendu. Il englobe par défaut les éléments liés indirectement aux rubriques de la branche, mais sans parcourir les rubriques enfants indirectes.

Dans une boucle RUBRIQUES, les rubriques rattachées indirectement à la branche directe seront donc inclues, mais pas parcourues (leurs enfants ne seront donc pas inclus)

  1. <ul>
  2. <BOUCLE_branche2(RUBRIQUES){branche #ID_RUBRIQUE}>
  3. <li>#ID_RUBRIQUE-#TITRE</li>
  4. </BOUCLE_branche2>
  5. </ul>

Télécharger

branche

Appliqué à la rubrique d' du schéma ci-dessus, le critère {branche} donnerait donc la liste b, g', f', h, e

Dans une boucle ARTICLES, les articles rattachés indirectement sont inclus, mais pas les articles enfants d’une rubrique rattachée indirectement.

Par ailleurs, l’écriture {branche #ID_RUBRIQUE} est acceptée.

Le critère {branche_complete}
Le critère {branche} est donc complété par un critère {branche_complete} qui inclut cette fois tous les contenus trouvés en parcourant toutes les branches principales et secondaires.

  1. <ul>
  2. <BOUCLE_branche_complete3(ARTICLES){branche_complete #ID_RUBRIQUE}>
  3. <li>#ID_ARTICLE-#TITRE</li>
  4. </BOUCLE_branche_complete3>
  5. </ul>

Télécharger

branche complete

Appliqué à la rubrique d' du schema ci-dessus, le critère {branche_complete} donnerait donc la liste b, g',a, c, f', h, e

L’écriture {branche_complete #ID_RUBRIQUE} est acceptée.

Le critère {branche_principale}
Symétriquement, le critère {branche_principale} permet de réduire la sélection aux éléments de l’arborescence principale uniquement. Ce critère permet donc de retrouver les enfants de la branche principale classique de SPIP.
branche principale

Appliqué à la rubrique d' du schéma ci-dessus, le critère {branche_principale} donnerait donc la liste g', f', h, e

Le critère {enfants}
Il permet de sélectionner les enfants d’une rubrique. Il peut s’utiliser sur une boucle RUBRIQUES, ARTICLES, ou tout autre boucle contenant un champ id_rubrique, même si la polyhierarchie ne s’y applique pas.

Il peut s’écrire {enfants} et prendra alors l’#ID_RUBRIQUE dans le contexte ou dans la boucle englobante, ou explicitement {enfants #ID_RUBRIQUE}.
enfants

Appliqué à la rubrique d' du schéma ci-dessus, le critère {enfants} donnerait donc la liste b, g'

Le critère {enfants_directs}
Il fonctionne comme le critère {enfants}, mais permet de restreindre la sélection aux enfants directs.
enfants directs

Appliqué à la rubrique d' du schéma ci-dessus, le critère {enfants_directs} donnerait un seul résultat g'

Le critère {enfants_indirects}
Il fonctionne comme le critère {enfants}, mais permet de restreindre la sélection aux enfants indirects.
enfants indirects

Appliqué à la rubrique d' du schéma ci-dessus, le critère {enfants_indirects} donnerait un seul résultat b

Le critère {parents}
Il permet de sélectionner les parents d’une rubrique, d’un article, ou de tout autre contenu. Il ne peut s’utiliser que sur une boucle RUBRIQUES.

Il ne peut s’écrire que {parents} et fait référence à l’élément de la boucle englobante.
parents

Appliqué à la rubrique b du schéma ci-dessus, le critère {parents} donnerait donc la liste d, d'

Le critère {parents_directs}
Il fonctionne comme le critère {parents}, mais permet de restreindre la sélection aux parents directs (un seul dans la pratique !)
parents directs

Appliqué à la rubrique b du schéma ci-dessus, le critère {parents_directs} donnerait donc la liste d

Le critère {parents_indirects}
Il fonctionne comme le critère {parents}, mais permet de restreindre la sélection aux parents indirects.
parents indirects

Appliqué à la rubrique b du schéma ci-dessus, le critère {parents_indirects} donnerait donc la liste d'

Publication des rubriques

Par défaut, dans SPIP, une rubrique n’est visible dans l’espace public et dans les boucles que si elle contient des objets publiés.

Avec polyhiérarchie, à partir de la version 0.3.0 du plugin, si une rubrique ne contient aucun contenu direct, mais des articles ou rubriques indirects publiés, la rubrique sera alors publiée et visible dans l’espace public.

Pour résumer

Le plugin met a disposition tous les outils pour concevoir et développer avec SPIP des sites faisant appel à la polyhiérarchie.

Cela peut aller de simples cas où les articles sont ponctuellement présent dans une seconde rubrique, à des cas complexes faisant un usage avancé de la polyhierarchie.

Dans tous les cas, il convient de bien réfléchir préalablement à la classification des données du site, et de ne pas se précipiter dans une organisation approximative au prétexte que le plugin permet ensuite de faire des liens transversaux.

Le plugin met a disposition des outils et des possibilités, mais c’est au webmestre de veiller ensuite à l’usage qui en sera fait !

Et après ?

Cette première version du plugin a pour but d’évaluer le concept et les limites qu’il faudra lui poser éventuellement.

En fonction des usages il pourra être utile d’enrichir le plugin avec des possibilités de configuration (par exemple pour ne permettre la polyhierarchie que sur les articles), ou des contrôles de sécurité (par exemple ne pas mettre un contenu dans une rubrique et dans sa parente, ne pas créer de navigation circulaire ...).

Voir en ligne : http://plugins.spip.net/polyhier

P.-S.

Ce plugin nécessite SPIP Bonux

Notes

[1La définition du terme est disponible dans la version allemande de Wikipedia (polyhierarchie), tandis que ce terme brille par son absence dans la version française de l’encyclopédie malgré un usage certain dans la langue française !

Dernière modification de cette page le 4 mai 2016

Retour en haut de la page

Tout afficher

Vos commentaires

  • Le 12 septembre 2014 à 11:18, par com En réponse à : Polyhiérarchie

    Bonjour,

    Reprenant un site SPIP mais n’y connaissant pas grand chose, j’ai installé le plugin « polyhierarchie » pour pouvoir appliquer un article à plusieurs rubriques. L’objectif est d’avoir les dernières infos de ma rubrique « news » visible dans d’autres rubriques. Voir le site : www.agi-son.org
    Mes infos :
    Version SPIP : 2.1.16
    Version plugin Ployhierarchie : 1.0.1
    Version plugin SPIPBOnux : 2.3.0

    RAS concernant l’installation, l’ajout de rubrique à un article mais l’article en question n’apparait pas dans la nouvelle rubrique sélectionnée...

    Je n’ai pas touché au squelette....

    D’avance merci pour votre aide !

    • Le 12 avril 2015 à 12:38, par tetue En réponse à : Polyhiérarchie

      Il faut toucher aux squelettes :)
      C’est-à-dire : il faut donner, dans les squelettes, les instructions pour produire l’affichage souhaité. Sinon, cela ne change rien au site (et heureusement).

    • Le 11 novembre à 08:47, par Cassius En réponse à : Polyhiérarchie

      Bonjour,

      Je suis dans le même cas que Com et que Raphaailes (message de janvier 2011 resté lui aussi sans réponse) et peut-être quelques autres : nous avons installé Bonux et Polyhiérarchie, tout fonctionne bien en espace privé mais rien ne change en espace public.

      C’est bien gentil de nous indiquer qu’il faut « toucher aux squelettes » mais comme nous ne savons pas le faire, sur quel fichier le faire, quoi modifier dans le fichier, cela ne nous fait pas avancer d’un centimètre.

      Est-ce contraire aux valeurs de SPIP que les « sachants » expliquent aux béotiens qui débarquent, acceptent de les prendre un peu plus par la main ?
      S’ils veulent rester entre eux et n’accepter que les nouveaux ayant de fortes prédispositions à l’informatique, qu’ils continuent et restent entre eux mais s’ils veulent partager et répandre SPIP il faudrait qu’ils soient un peu plus indulgents et généreux dans les explications, dans l’attitude et en acceptant de « s’abaisser » au niveau de leurs interlocuteurs pour pouvoir les tirer ensuite vers le haut.
      Si l’on demande à un débutant cycliste de commencer par une randonnée de 200km avec trois cols on est å peu près certain de le voir tourner les talons avant même de commencer ou au bout de 30km. Si on commence au contraire par 30km, il sera partant pour en faire 40 à la sortie suivante.
      Je me sens dans cette position.

      Cordialement,
      Cassius

    Répondre à ce message

  • Le 3 avril à 20:10, par Lucky En réponse à : Polyhiérarchie

    Bonjour et merci pour ce plugins trés pratique.

    Depuis la mise à jour du plugins V2.2.0 vers la version 2.2.2, j’ai des fenêtres rouges qui s’ouvrent avec une message d’erreur SQL de ce genre :

    Erreur SQL 1241
    Operand should contain 1 column(s)
    SELECT mots.id_mot FROM spip_mots AS `mots` INNER JOIN spip_mots_liens AS L1 ON ( L1.id_mot = mots.id_mot ) WHERE (L1.objet = ’rubrique’) AND (((L1.id_objet IN (181))) OR (L1.id_mot,id_objet,objet IN (SELECT * FROM( SELECT rl.id_objet FROM spip_rubriques_liens as rl WHERE ((rl.id_parent IN (181))) AND rl.objet=’mots_lien’) AS subquery))) AND NOT((mots.type = ’squelette_habillage’)) GROUP BY mots.id_mot

    J’ai réussi à revenir à la version 2.2.0 et je n’ai plus ces messages.

    Une idée du problème ?

    Merci pour votre réponse.

    Répondre à ce message

  • Le 12 janvier à 18:25, par David En réponse à : Polyhiérarchie

    Bonjour, j’ai un soucis alors que j’utilise ce plugin depuis longtemps, très longtemps même …

    Si je mets une rubrique dans une autre branche avec ce plugin, tout est nickel. Si je mets une rubrique dans deux autres branches (donc trois en tout en comptant la principale, et bien tchao, plus moyen d’afficher la page publique. Pourtant, j’ai respecté la présentation dans les squelettes. Avez-vous déjà essayé de mettre plus d’une branche polyhierarchie pour une rubrique ?

    Cdt.

    Répondre à ce message

  • Le 16 octobre 2015 à 10:00, par Pierre KUHN En réponse à : Polyhiérarchie

    Bonjour,

    Avec les dernières version du plugins on peut pas mettre à jour les articles, problème déjà rencontrer ?

    • Le 16 octobre 2015 à 10:04, par Maïeul En réponse à : Polyhiérarchie

      aucun probleme pour ma part de mise à jour avec polyhierarchie.

    • Le 16 octobre 2015 à 11:42, par Pierre KUHN En réponse à : Polyhiérarchie

      si je le désactive je peux tout faire mais si je le relance et valide un article il enregistre pas et reste sur la page.

    • Le 16 octobre 2015 à 14:10, par Maïeul En réponse à : Polyhiérarchie

      est-ce que cela se pose sur spip brut + seulement polyhiéarchie ? parce que comme je dis « chez moi ca marche ».

    Répondre à ce message

  • Le 12 avril 2015 à 12:57, par tetue En réponse à : Polyhiérarchie

    Suite à une montée de version (de SPIP 2.1.26 vers SPIP 3.0.17, avec polyhier 2.0.9), certaines de mes boucles polyhier ne s’affichent plus, sauf quand je retire l’un des critères polyhier (mais ça n’affiche pas ce que je souhaite, évidemment). Par exemple :

    <BOUCLE_dossier(RUBRIQUES){enfants}{branche 20}{logo}{par num titre}> ne fonctionne que si je retire le critère {branche 20}, tandis qu’ailleurs dans le site <BOUCLE_dossier(RUBRIQUES){branche 20}{logo}{id_mot}{par hasard}{0,1}> fonctionne correctement.

    Je n’arrive pas à comprendre comment réparer… Y’a-t-il des bugs identifiés sur ces critères ?

    • Le 21 avril 2015 à 11:15, par tetue En réponse à : Polyhiérarchie

      J’ai fini par comprendre : les données correspondantes ont été perdues lors de la mise à jour, c’est pourquoi les contenus polyrattachés ne s’affichaient plus, tout bêtement :)

    Répondre à ce message

  • Le 21 février 2015 à 21:43, par Maïeul En réponse à : Polyhiérarchie

    Salut,.

    est-ce que le tri dans l’ordre d’association d’une rubrique à un objet est une chose prévue ou pas ?

    Répondre à ce message

  • Le 9 octobre 2014 à 10:56, par sirom En réponse à : Polyhiérarchie

    Bonjour,
    demande particulière...
    Comment serait possible « simplement » de ne pas utiliser le picker de polyhierarchie en partie publique grâce au formulaire éditer_article que j’ai surchargé dans squelettes/formulaires.
    Tout en continuant de l’utiliser en partie privée ceci sans dommage collatéral.

    Faut-il obligatoirement faire un CVT ?...

    Merci pour vos pistes.

    Cordialement.

    Répondre à ce message

  • Le 5 septembre 2014 à 18:20, par Patrocle En réponse à : Polyhiérarchie

    Bonjour à tous,

    je fait une médiathèque dont certains articles doivent aller dans plusieurs catégories.

    Or, le plugin polyhierarchie qui me conviendrait parfairement n’ouvre pas les sous-rubrique. Quelqu’un sait-il pourquoi ?

    Si un article est placé à sa place,

    Je peux mettre le polyhierarchisé :
    1) Dans les rubriques racines
    2) A l’aide du module de rapidité (rubXX) mais il faut connaitre le numéro de la rubrique.

    N’étant pas le seul à gérer la médiathèque, il faurait que je puisse ouvir les sous-rubriques donc merci à la personne ou les personnes qui pourraient m’aider.

    • Le 5 septembre 2014 à 18:27, par Patrocle En réponse à : Polyhiérarchie

      Désolé de re-commenter par dessus mais apparemment j’ai bien les sous-rubriques dans la poly-hierarchie des rubriques.

      cela ne fonctionne donc pas pour les articles mais non les rubriques

    Répondre à ce message

  • Le 20 juin 2014 à 06:35, par Benolaos En réponse à : Polyhiérarchie

    Bonjour,

    il semble qu’il y ait un bug qui soit apparu avec l’introduction du Plugin « traduction rubriques autrement ».

    En pièce jointe l’impression d’écran.
    Bravo en passant pour cet excellent plugin qui rend de bien bons services !

    PNG - 93.5 ko
    • Le 22 juin 2014 à 16:25, par Benolaos En réponse à : Polyhiérarchie

      Je précise que ça ne semble pas impacter sur les fonctionnalités...

    • Le 24 juillet 2014 à 07:29, par Benolaos En réponse à : Polyhiérarchie

      Ce devait être un problème de cache (sur le serveur tmp/cache que j’ai tout à fait vidé) car je ne constate plus le problème...

    Répondre à ce message

  • Le 20 avril 2014 à 14:25, par GILGER En réponse à : Polyhiérarchie

    J’ai installé le plugin. RAS
    J’arrive à attribuer deux rubriques pour un seul article.
    Sauf que l’article n’apparaît que dans sa rubrique d’origine.
    Une idée ?
    Pas de message d’erreur, tout semble bien se dérouler. SPIP 3.0.16 et plugin en version 2.0.8

    Répondre à ce message

Répondre à cet article

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 Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Métas +

    3 décembre – 14 commentaires

    Améliorez l’indexation de vos articles dans les moteurs et leur affichage sur les réseaux sociaux grâce aux métadonnées Dublin Core, Open Graph et Twitter Card. Installation Activer le plugin dans le menu dédié. Dans le panel de configuration, (...)

  • Adaptive Images

    15 novembre 2013 – 69 commentaires

    Un plugin pour permettre aux sites responsive d’adapter automatiquement les images de la page à l’écran de consultation. Adaptive Images, que l’on pourrait traduire par Images adaptatives, désigne la pratique qui vise à adapter les taille, (...)

  • Social tags

    8 septembre 2008 – 428 commentaires

    Le plugin Social Tags permet d’ajouter des icônes de partage de liens vers les sites tels que Digg, Facebook, Delicious.... Une fois le plugin installé et activé (voir doc.), le choix des sites se fait via un menu de configuration. Insertion (...)

  • Module de Paiement Stripe

    17 octobre – commentaires

    Stripe est un prestataire de paiement externe https://stripe.com/fr qui propose une API moderne et une interface de paiement extrêmement conviviale et efficace. Ce module permet les paiements à l’acte et les paiement récurrents. Configuration (...)

  • Métas

    8 août 2009 – 50 commentaires

    Ce petit plugin permet l’ajout, depuis l’espace privé, de metatags aux articles et rubriques de SPIP, ainsi que la mise en exergue de mots importants.

Ça spipe par là