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

  • Coucou,

    Juste pour dire que j’ai trouvé dans les squelettes de l’espace privé la boucle :

    <BOUCLE_hier(HIERARCHIE_GROUPES_MOTS){tous}{" > "}>
    #TITRE
    </BOUCLE_hier>

    qui n’est pas documentée ici mais pourtant très utile.

    Si je ne me trompe, elle ne fonctionne que dans une <BOUCLE(MOTS)>

    Répondre à ce message

  • Bonjour,

    Je souhaiterai pouvoir définir un squelette spécifique aux mots clés d’un groupe « parent » mais n’y parviens pas :/

    Voici la structure :
    GROUPE (id 25)
    %%SOUS GROUPE 1 (id 26)
    %%%%MOT
    %%%%MOT
    %%SOUS GROUPE 2 (id 27)
    %%%%MOT
    %%%%MOT

    L’idée est donc d’avoir un squelette pour tous les mots du groupe parent « GROUPE ».

    J’utilise les « squelettes » mot.html et groupe.html tels que proposés ici : http://contrib.spip.net/Squelettes-pour-groupes-et-par-groupes-de-mots

    Mais si un squelette mots-26.html fonctionne bien, impossible d’utiliser un mots-25.html (qui n’a donc pas de mots clés directement dans son groupe).

    Dans le fichier mot.html, j’ai bien essayé de remplacer #ID_GROUPE par #ID_PARENT mais sans succès (je n’avais pas grand espoir...).

    Est-ce possible ? Si oui, comment faire ?

    Merci :)

    Répondre à ce message

  • 1

    Petite coquille
    Bonjour Matthieu : il y a une petite coquille dans le code de la boucle « racine » (§ faire des hiérarchies) : la boucle n’est pas correctement fermée (<B_racine> au lieu de </B_racine> attendu)
    Bien le bonjour de Bretagne !

    Répondre à ce message

  • 1

    bonjour
    quand je veux créer un nouveau groupe, j’obtiens l’erreur

    Parse error: syntax error, unexpected T_FUNCTION, expecting ')' in /home/amidesk/www/foristo/plugins/auto/querypath/v1.1.0/lib/querypath-3.0.0/src/qp.php on line 61

    et quand je fais retour

    Warning: array_shift() [function.array-shift]: The argument should be an array in /home/amidesk/www/foristo/ecrire/inc/filtres_ecrire.php on line 503

    Une idée ?

    SPIP 3.0.16 zspip tincredible

    merci

    Répondre à ce message

  • 2

    Bonjour,

    Après avoir installé le plug-in, je ne peux plus utiliser « Modifier ce groupe de mots » ou « Ajouter groupe de mots ».

    Il semble que l’erreur soit dans QueryPath : Parse error : syntax error, unexpected T_FUNCTION, expecting ’)’ in /homepages/0/d160156354/htdocs/plugins/auto/querypath/v1.1.1/lib/querypath-3.0.3/src/qp.php on line 61

    Je regrette vraiment, car ce plug-in me serait très très utile.

    Merci pour toute réponse ! :)

    • Il n’y a pas d’erreur dans le code de la librairie pourtant. Plus précisément, la librairie utilise une écriture de fonction qui nécessite PHP 5.3 pour fonctionner. Je suppose que votre version de PHP est moins récente ?

    • Merci infiniment de votre réponse rapide.
      J’ai upgradé ma version de PHP à 5.5 et ça fonctionne maintenant parfaitement.

    Répondre à ce message

  • 6
    Pierrot

    Bonjour,

    Y-a-t-il un moyen pour modifier l’affichage de l’ajout de mot dans le back-office ?

    Mon problème :

    -  j’ai créé un groupe racine qui contient en gros 13 groupes de mots qui chacun contienne de 3-4 à une 20aine de mots ..

    -  quand je vais sur un objet (en l’occurrence dans mon cas des organisations du plugins éponyme) et que je veux ajouter un mot-clé de (Ajouter un mot-clé) je me retrouve avec un simple champ de recherche alors que j’espérais avoir éventuellement 13 « select » pour pouvoir choisir un ou des mots-clés dans chaque sous-groupe de mots.

    -  cette sélection par recherche est complètement inutilisable (dans mon cas en tous cas, mais j’ai l’impression que ce plugin a pour but la gestion de beaucoup de mot-clés et donc le pbm doit un peu être le même pour tout le monde) ... en effet, je souhaite à priori que l’utilisateur choisisse un mot dans chaque sous-groupe, c’est quasi impossible avec cette recherche sauf à connaitre le nom de tous les mots-clés de chaque sous-groupe pour en choisir un ... sans une vision hiérarchique sous-groupe->mot, impossible de choisir un mot dans chaque groupe ...

    -  si je clique « Recherche » sans rien spécifier dans le champ, je me retrouve avec une liste paginée de 103 mots par ordre alpha de mot donc avec mes sous-groupes en total vrac

    Il me semblait me souvenir d’une méthode pour choisir le seuil à partir duquel un select se transforme en champ de recherche ... ça ou une autre idée serait bienvenue :-)

    Merci d’avance !

    • Bonjour,
      Essaye d’ajouter la ligne suivante dans ton fichier mes_options.php

      define(’_MAX_MOTS_LISTE’, ’xxx’) ;

      en remplaçant evidemment les xxx par un nombre kivabienpourtoi :)

    • Pierrot

      Bonjour,

      Merci, j’étais super joyeux, c’était la solution qu’il me semblait avoir déjà vu ... par contre déception, mes premiers essais sont négatifs, ça n’a pas l’air de marcher ...

      Je vais re-tenter avec un paquet de mot-clé au premier niveau (comme s’il n’y avait pas ce plugin), .. j’ose pas dévalider le plugin ... (que se passe-t-il pour l’arbo que j’ai déjà créée ?).
      Ce qui me parait bizarre c’est que la valeur par défaut est de 50 d’après la doc spip, or je n’ai aucun groupe qui contienne plus de 20 mot-clés, donc cela veut dire que le plugin considère tous ces mots comme un seul paquet de 103 mots .. ? après j’ai mis la limite à 500 et ça reste un champ de recherche.

      Pierre

    • Normalement, si tu désactives le plugin, puis le réactives, tes groupes devraient être conservés. Fais une sauvegarde de la base, par tranquilité d’esprit.

      j’ai fait un test rapide sur un set de données pertinent : on dirait que la variable est testée par rapport au nombre de mot-clés dans le groupe racine... teste avec un nombre plus important et/ou vérifie directement dans la base de données le nombre de mots ayant pour id_groupe_racine le groupe en question.

    • ( petite precision supplementaire par rapport a mon test : sur mes données, qui sont un set de continents/sous-continents/pays, il y a au total 231 pays dans le groupe_racine « pays ». Si _MAX_MOTS_LISTE est a 230, j’ai un champ de recherche. s’il est mis a 232, j’ai une liste deroulante... )

    • Bonjour,

      Non je n’avais pas oublié ce souci mais d’autres urgences m’ont tenu éloigné de ce projet ... bref je m’y suis remis une nouvelle fois et après moultes recherches et tests jusque dans les entrailles du plugin j’ai fini par comprendre ou se trouvait le (oh combien stupide) problème.

      J’ai copié-collé
      define(’_MAX_MOTS_LISTE’, ’xxx’);
      du message de Wilco ci-dessus ... et c’est juste ça le problème, car la bonne syntaxe est
      define('_MAX_MOTS_LISTE', 'xxx');
      Vous noterez la différence juste dans les guillemets simples .... ceux de Wilco ne marchent pas ici (copiés-collés d’ici dans Coda ...)

      Merci pour les pistes en tous cas !

    • Mouarf, ça c’est bête, effectivement :) ca m’apprendra a utiliser les insertions de code dans une réponse plutôt que le quote :)

      content que tu aies trouvé la solution, en tout cas !

    Répondre à ce message

  • 1

    Bonjour,

    Tout d’abord, merci BEAUCOUP pour ce plugin (que j’ai mis longtemps a trouver) qui convient parfaitement à une grande attente que j’avais : pouvoir créer un menu alternatif arborescent par mots-clés.
    Cependant, j’aimerais, par ce menu alternatif utilisant les mots clés arborescents, arriver à faire des squelettes ressemblant le plus possible à l’accès par rubriques.
    Et là où je bloque : c’est sur le fil d’ariane.
    Je n’arrive vraiment pas à me dépêtrer pour afficher la hiérarchie des groupes de mots-clé depuis un mot clé ou un groupe de mots clé donné. J’ai pourtant essayé avec « id_groupe », « id_parent » et même « id_groupe = id_parent » (précision je ne veux pas le nom du groupe de mot clé racine).

    Une petite aide serait la bienvenue !
    Merci d’avance

    • Spipmalion

      Bonjour, pour une profondeur connue j’ai procédé comme suit, si ça peut dépanner :

      <BOUCLE_location(MOTS){id_property}{id_groupe_racine =3}>
      <BOUCLE_area(GROUPES_MOTS){branche_groupe}>
      <BOUCLE_city(GROUPES_MOTS){id_groupe=#ID_PARENT}>
      #TITRE &raquo;
      </BOUCLE_city>
      #TITRE &raquo;
      </BOUCLE_area>
      #TITRE
      </BOUCLE_location>

    Répondre à ce message

  • 2

    Bonjour,

    Après une mise à jour spip 3.0.5 > 3.0.6 certains groupes n’apparaissent plus quand je veux ajouter un mot clé dans un article.
    Ces groupes sont bien visible si je regarde dans Edition mots-clés…mais pas sur la page article Ajouter un mot-clé

    Une idée ?

    Clem

    • Re bonjour,

      J’ai trouvé le probléme, suite à la mise à jour, je pense..je suis allé voir dans les groupes de mot
      qui n’apparaissaient plus et j’ai remarqué que dans « Les mots de ce groupe peuvent être attribués par : » les administrateurs du site n’étaient plus cochés...

      Clem

    • Ah oui, en fait, on a corrigé le fait que tous les groupes de mots s’affichaient avant sans respecter ou non ce qui était coché. C’était pas très malin :)

      Super si y a pas de bug ici du coup :)

      MM

    Répondre à ce message

  • Bonjour,

    pour info,

    ce plugin n’est pas compatibles avec spip-services. Si ce dernier est activé, la page de création d’un nouveau groupe n’est pas complète (juste le titre « nouveau mot »), le formulaire n’est pas créé, et donc impossible de créer un nouveau groupe de mots.

    Bon travail,
    Roger

    Répondre à ce message

  • Bonjour

    Ce plugin me semble vraiment intéressant, cependant je rencontre un petit souci :

    Sur une copie en local d’un site créé à l’origine sur une version 1.8 de spip puis upgradé au fil des MAJ jusqu’à la 3.0.5, j’ai ce message (ci-dessous) lorsque j’active le plugin et que je veux modifier un groupe de mots-clés, créer un nouveau groupe ou créer un sous-groupe. Je ne peux que créer ou modifier un mot-clé.

    Je vois qu’il y est question d’un encodage UTF-8.
    La BDD doit-elle « être en UTF-8 » ou peut-on garder l’encodage « Latin1 » de la BDD, ou alors c’est pas du tout ca.

    Merci
    yanik

    Fatal error : Uncaught exception ’QueryPathParseException’ with message ’DOMDocumentFragment::appendXML() [domdocumentfragment.appendxml] : Entity : line 13 : parser error : Input is not proper UTF-8, indicate encoding ! Bytes : 0xE9 0x65 0x20 0x42 (C :\xampp\htdocs\ev\plugins\auto\querypath\v1.0.0\lib\QueryPath\QueryPath.php : 2044)’ in C :\xampp\htdocs\ev\plugins\auto\querypath\v1.0.0\lib\QueryPath\QueryPath.php:4528 Stack trace : #0 [internal function] : QueryPathParseException::initializeFromError(2, ’DOMDocumentFrag...’, ’C :\xampp\htdocs...’, 2044, Array) #1 C :\xampp\htdocs\ev\plugins\auto\querypath\v1.0.0\lib\QueryPath\QueryPath.php(2044) : DOMDocumentFragment->appendXML(’

    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