Groupes de mots clés arborescents

Ce plugin permet de gérer une arborescence de groupes de mots clés. Les sous groupes de mots héritent des propriétés du groupe racine (sur quoi peut on le lier ? peut il y avoir un ou plusieurs mots). Les formulaires de liens qui permettent de lier les mots à des éléments montrent toute l’arborescence du groupe racine pour choisir le mot.

Démonstration vidéo

Pour les gens pressés voici une capture vidéo du fonctionnement du plugin :

Fonctionnement

Ce plugin permet donc une gestion arborescente des groupes de mots clés.
Les formulaires de liens, comme le montrent la capture, affichent les groupes racine et permet de sélectionner un mot dans l’ensemble de leur arborescence :

Sélecteurs de mots
3 groupes avec des utilisations techniques différentes :
  • Le premier sans rien de particulier et peu de mots
  • Le second ne peut sélectionner qu’un mot dans toute la hiérarchie
  • Le 3e est un groupe « important » qui a beaucoup de mots : il faut lancer une recherche pour obtenir une liste de résultats, qui indiquent les sous groupes éventuels des réponses

Modifications des tables SQL

Il ajoute dans les tables des groupes de mots les colonnes suivantes :

  • id_parent (indiquant l’identifiant du groupe parent, sinon 0)
  • id_groupe_racine (indiquant l’identifiant du groupe racine).

Il ajoute dans les tables des mots la colonne suivante :

  • id_groupe_racine (indiquant également l’identifiant du groupe racine).

Boucles et critères sur les groupes

L’ajout des colonnes précédemment citées permettent de gérer des critères id_parent et racine sur les groupes et les mots.

Ainsi, on peut sélectionner le groupe parent ou le groupe racine

<BOUCLE_gr(GROUPES_MOTS){id_groupe}>
   Sélectionne un groupe quelconque
   <BOUCLE_parent(GROUPES_MOTS){id_parent}>
      Sélectionne le parent du groupe précédent
  </BOUCLE_parent>
   <BOUCLE_racine(GROUPES_MOTS){id_groupe_racine}>
      Sélectionne la racine du groupe précédent
   </BOUCLE_racine>
</BOUCLE_gr>

On peut sélectionner tous les groupes racine :

<BOUCLE_racine(GROUPES_MOTS){racine}>
   Sélectionne tous les groupes racine, c'est a dire de plus haut niveau
</BOUCLE_racine>

Et donc faire des hiérarchies : lister hiérarchiquement tous les groupes :

<B_racine>
<ul>
	<BOUCLE_racine(GROUPES_MOTS){racine}>
	<li>#TITRE
		<B_sous_groupes>
		<ul>
			<BOUCLE_sous_groupes(GROUPES_MOTS){id_parent}>
			<li>#TITRE
				<BOUCLE_groupes_recursifs(BOUCLE_sous_groupes) />
			</li>
			</BOUCLE_sous_groupes>
		</ul>
		</B_sous_groupes>
	</li>
	</BOUCLE_racine>
</ul>
</B_racine>

Enfin, on peut obtenir tous les groupes appartenant à une branche donnée :

<BOUCLE_branche(GROUPES_MOTS){branche_groupe}>
	Sélectionne tous les groupes de l'id_groupe en cours.
</BOUCLE_branche>

Boucles et critères sur les mots

Sélectionne les mots d’une branche

<BOUCLE_mots(MOTS){branche_groupe}>
    Sélectionne les mots dans toute la branche !
</BOUCLE_mots>

Sélectionner les mots du groupe parent

<BOUCLE_gr(GROUPES_MOTS){id_groupe}>
    Le groupe en cours...

    <BOUCLE_mots(MOTS){id_groupe}>
        Les mots du groupe
    </BOUCLE_mots>

    <BOUCLE_mots_parent(MOTS){id_groupe=#ID_PARENT}>
        Les mots du groupe parent à notre groupe
    </BOUCLE_mots_parent>

    <BOUCLE_mots_racine(MOTS){id_groupe=#ID_GROUPE_RACINE}>
        Les mots du groupe racine de notre groupe
    </BOUCLE_mots_racines>
</BOUCLE_gr>

Discussion

23 discussions

  • 2

    Sur du Spip 4.1.2 en PHP 8.1, il faut modifier le fichier « gma_fonctions.php » à la ligne 134 :

    $r = join(',', array_map('array_shift', $filles));

    devient

    $r = join(',', array_column($filles, 'id_groupe'));
    • Bonjour,
      J’ai dans la version v1.3.1 à la ligne 134

      $r = join(',', array_map(function($v) { return array_shift($v); }, $filles));

      Et le message d’erreur :

      Erreur SQL : Unknown column ’groupes_mots.id_parent’

    • Bonjour,
      Peut-être que c’est le même type de problème évoqué, en tout cas sous 4.1.9, // plugin v1.3.2 // PHP7.4, on ne peut sélectionner des sous-groupes, ni les mots clés de ces sous-groupes dans aucun des objets testés.

    Répondre à ce message

  • 1

    Bonjour,
    Une mise à jour de ce plugin est-elle envisagée ?
    Ce plugin m’était très utile. Existe-il une solution le remplaçant ?
    En vous remerciant de votre réponse,
    Cordialement

    • Bonjour,
      J’utilise la v1.2.11 en « compatibilité forcée » avec spip4 et rien à dire, tout roule

    Répondre à ce message

  • 3

    Bonjour, ce plugin est exactement ce dont j’ai besoin, et, au vu de la démo video, répondrait parfaitement à ce dont j’ai besoin ... mais comment diable faire pour se le procurer ? Il n’est pas sur cette page, ni dans ma recherche de nouveaux plugins, ni ... Quelqu’un a-t-il réussi à le trouver ?

    Merci. Cordialement.

    Répondre à ce message

  • 1

    J’ai ajouté

    {id_groupe !IN 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}

    dans .../gme/.../saisies/groupe_mots_recursif.html
    Cela fonctionne bien mais j’ai peur de perdre cette restriction lors de la mise à jour.
    Comment puis-je faire pour le sauvegarder et le faire fonctionner à partir de squelettes ?

    • Il suffit de mettre le fichier dans le dossier « squelettes » en respectant ensuite l’arborescence de dossiers.

    Répondre à ce message

  • 4
    chromo2018

    Bonjour et merci bien pour ce plugin indispensable !

    Une petite interrogation (à la suite de la 1re remarque de Loiseau2nuit) : Il ne semble pas possible d’ajouter un sous-groupe à un groupe déjà existant + comportant des mots-clés. Lorsqu’on essaie, le sous-groupe s’enregistre hélas en tant que groupe-racine.. et lorsqu’on cherche à le « modifier » on voit que son champ « Groupe parent » est vide... et lui attribuer un Groupe-parent (à nouveau) ne sert à rien, le sous-groupe s’enregistre à nouveau en tant que groupe-racine..
    Dans mon cas c’est assez embêtant car j’ai 20 groupes avec chacun entre 20 et 40 mots-clés... Il me faudrait donc recréer de nouveaux Groupes avec leur Sous-Groupes, puis changer chaque mot-clé... Outre le long travail, cela implique surtout de connaitre à l’avance l’arborescence définitive que devra avoir mon système de mots-clés : aï, aï, aï... ! Pas d’évolution ou remords possibles...?

    Voilà, si vous aviez une idée...
    Merci !

    > Spip 3.2.4
    > Plugins à jour :
    -  API de vérification 1.9.4
    -  Coche Mots 1.2.1
    -  Corbeille 3.1.
    -  Google Analytics 0.5.3
    -  Groupes arborescents de mots clés 1.2.10
    -  Guillemets typographiques 1.5.6
    -  Le Couteau Suisse 1.10.15
    -  Lecteur de médias de MediaSPIP 1.6.5
    -  Menu de langues avec liens 1.5.3
    -  Query Path 1.1.2
    -  Saisies pour formulaires 3.22.0
    -  SPIP Bonux 3.4.6
    -  SpiPDF 1.2.4
    -  Vider rubrique 0.3.1
    -  WebFonts 0.1.6
    -  YAML 2.0.10
    -  ZotSpip 3.6.0

    • chromo2018

      Me réponds partiellement... :
      En créant un Sous-Groupe dans un groupe existant (bourrés de mots-clés) qui donc s’enregistre en Groupe-racine, ou même en créant un nouveau Groupe-racine, puis en changeant directement dans la BDD le numéro de son « id_parent » (0 > XX, pour le num du Groupe-racine parent souhaité) + en mettant 0 pour le champ « id_groupe_racine », ça marche...
      Je peux donc créer des sous-groupes, puis déplacer les mots-clés dans ceux-ci...
      Une manip « à la main » dans la BDD.. en attendant...

    • v1.2.10 : je ne reproduis pas ce bug.
      Tu as des traces d’erreurs dans les logs ?

    • chromo2018

      Bonjour,
      Ben non, je ne vois rien en rapport...
      (essayé de faire des sous-groupe pour voir dans le spip.log.. tout ce que je vois c’est surtout des

      Pri:ERREUR: Erreur mysql 1146
      2019-07-19 09:00:45 ::1 (pid 4772) :Pri:!INFO: trouver_table: table inconnue '' 'tickets'

      le plugin Tickets fut désinstallé et supprimé mais ses tables sont tjrs là.. Brrref.)

      Peut-être essayer en désactivant le plugin Coche Mots... mais à par ça...

      Merci !

    • chromo2018

      En désactivant le plugin Coche Mots, il y a bizarrement du mieux et du pareil... :
      -  Pour un groupe (avec mots-clés) c’est bon, le ss-groupe se crée bien, ok.
      -  Pour un autre groupe (avec mots-clés aussi et config pareil) ça ne marche pas...
      ...

    Répondre à ce message

  • 1

    Hello !

    J’ai un bug étrange ici en interne sur un SPIP 3.2.1 SVN [24144] (version plugin 1.2.10)

    Dès que je modifie à postériori un sous-groupe de mots, il perd son groupe parent et repasse systématiquement en groupe de 1er niveau. cf captures.

    autre chose : je ne sais pas si c’est normal mais seul les groupes de 1er niveau sont configurables (association aux objets / groupe recommandé / mot-clé choix unique ...). Et c’est pas super pratique

    une idée ? une piste ?
    Merci d’avance :)

    • je me répond à moi même, au moins sur la 2e partie : Groupes de mots clés arborescents a Query Path en dépendance, or ...

      marcimat
      ....Dans le plugin Groupes de mots arborescents, j’utilise ce plugin pour ajouter du code HTML sous le formulaire d’édition d’un groupe après le titre, et pour enlever une partie du HTML également lorsque nous sommes dans un groupe enfant d’un autre. ...

      ..../...
       // les paramètres techniques sont uniquement sur les groupes racine
                      if ($env['id_parent']) {
                              $qp->top('body')->find('li.fieldset_config')->remove();
                      }
      
      .../....

      Tant pis ...

    Répondre à ce message

  • 1

    Est-ce que c’est possible de faire fonctionner ce plugin avec le plugin mots partout et ainsi pouvoir classer les mots-clés qu’on ajoute en espace public ?

    • 15 métros après la bataille ! Mais mieux vaut tard ... comme on dit ...

      Perso, j’utilise et fait parfaitement cohabiter les 2 plugins, aussi bien en environement SPIP autonome que mutualisé. Et jusqu’ici... « It works ! »... comme dirait l’autre ^^

    Répondre à ce message

  • Bonjour,

    Juste un petit mot pour préciser qu’il serait utile d’indiquer dans la documentation de la boucle MOTS que la balise #URL_GROUPE_MOT fonctionne et renvoie l’adresse du groupe en partie publique.

    Bonne journée ! ;-)

    Répondre à ce message

  • Bonjour !

    Déjà merci pour ce plugin qui m’aide beaucoup à organiser les mots-clés mais j’aimerai savoir pourquoi il était impossible d’attacher une restriction à des sous-rubrique ?

    Ma hiérarchie de rubrique fait par exemple : Histoire > Antiquité > Rome antique

    Dans la sous-sous-rubrique Rome antique, les article peuvent avoir plusieurs mots-clés (empereurs, économie, république, etc) et j’aimerai que ces mots-clés ne soient disponibles que pour les articles de la rubique Rome Antique sauf que c’est impossible puisque seule la rubrique Histoire pourra avoir une restriction

    Il y a t-il un moyen de modifier ça ?

    Merci et très bonne continuation

    Répondre à ce message

  • 1
    Julien

    Est-il possible de le rendre compatible avec le plugin Coche-Mots ?

    Quand on a beaucoup de mots clés a sélectionner, c’est frustrant de devoir se passer de ce plugin.

    Merci.

    • Normalement, la version 1.1.0 du plugin Coche Mots devraient être compatible avec les mots clés arborescents.

    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