SPIP - Contrib

SPIP - Contrib

[ar] [en] [es] [fr] [it]

37 visiteurs en ce moment

fontsizeup fontsizedown
[39 commentaires]

Plugin Étiquettes

vendredi 18 avril 2008, par RastaPopoulos

4 votes

Générer des formulaires pour ajouter facilement des mots-clés à tout et n’importe quoi.

Présentation

Le plugin Étiquettes permet de créer facilement des formulaires publics pour ajouter/modifier des mots-clés "à la volée" sur n’importe quel élément les acceptant (articles, forums, etc, et plus encore suivant la configuration de votre site).

Il propose donc une balise #FORMULAIRE_ETIQUETTES qui va générer un formulaire pour taper les mots-clés, et éventuellement une aide qui pourra être de différente sorte suivant les plugins disponibles.

Note : Étiquettes ne modifie (normalement :-) pas les autorisations du système en place. Il ne fait que produire des formulaires clé-en-main, faciles à intégrer (ce qui est déjà pas mal). Ce sera à vous de bien faire attention à qui aura le droit d’ajouter des mots-clés à tel ou tel élément, sur la page de configuration des groupes de mots, ou avec le plugin Autorité, ou autre.

Mise en place rapide

  • Choisissez un type d’objet acceptant les mots-clés. Prenons les articles par exemple.
  • Faîtes une boucle de ce type.
  • Insérer la balise #FORMULAIRE_ETIQUETTES dedans.
  • Et c’est tout, ça marche !
  • Par défaut, le formulaire ajoute les mots dans le groupe "tags".

Ça donne cela :

Et pour un formulaire AJAX (qui ne recharge pas toute la page) :

Les aides

Afin de faciliter l’ajout d’étiquettes à un élément, le plugin propose d’intégrer une aide pour afficher à l’utilisateur les mots-clés déjà existants sur le site. Cela permet notamment de minimiser le risque de synonymes qui vont nuire à la navigation. Voici comment ça marche :

- Les mots les plus fréquents

PNG - 13.8 ko
Cliquez pour voir

Si vous avez le plugin Nuage, sous le champ texte viendra une liste des mots les plus fréquemment utilisés, sous forme de Nuage (la grosseur des mots est pondérée en fonction de la fréquence).

- Une liste déroulante en fonction de ce que vous tapez

PNG - 8.7 ko
Cliquez pour voir

Si vous avez le plugin Sélecteur générique, une liste déroulante apparaîtra lorsque vous commencerez à écrire dans le champ texte, proposant des mots déjà existants en fonction des premières lettres tapées. Par exemple si vous tapez "or", il pourra y avoir dans la liste "ornithorynque".

- Uniquement une liste à cliquer

PNG - 8.1 ko
Cliquez pour voir

Aucun plugin n’est nécessaire. Cela va masquer le champ texte et afficher uniquement une liste de mots à cliquer. Au niveau ergonomique, ça fait comme une liste de cases à cocher.

Note : par défaut, l’aide est activée automatiquement. Si aucun des plugins n’est installé, il n’y aura pas d’aide, tout simplement. Si vous avez ces plugins mais que vous voulez forcer un choix particulier : utilisez les paramètres.

Installation

Zip - 24.6 ko
Le ZIP à télécharger

Le plugin s’installe avec la procédure classique : vous récupérez le ZIP, et vous décompressez le dossier "etiquettes" dans le dossier "plugins" de votre SPIP. Ensuite vous l’activez dans l’espace privé, et vous jouez avec.

Si vous désirez les aides décrites précédemment il vous faudra installer le plugin Nuage et/ou le plugin Sélecteur générique.

Documentation complète de #FORMULAIRE_ETIQUETTES

- Ça fait quoi ?

#FORMULAIRE_ETIQUETTES va insérer un formulaire de modification des mots-clés d’un élément quelconque de SPIP.

Il est composé d’un champ de texte et éventuellement d’une aide.
Dans le champ texte, on devra taper une liste de mots-clés que l’on veut voir liés à un objet, séparés par des espaces. Pour créer des étiquettes ayant plusieurs mots, il suffit de les entourer de guillemets. On pourra par exemple écrire : SPIP CMS "gestion de contenu" internet "web 2.0".

Tous les comportements par défaut sont modifiables avec des paramètres.

- Où mettre la balise ?

La balise doit normalement être insérée à l’intérieur d’une boucle qui va définir quel objet sera touché. On pourra par exemple écrire ceci :

Ce qui va générer un formulaire pour modifier les étiquettes de l’article en cours (par exemple dans le squelette des articles).

- Mais les mots-clés sont séparés en groupes, non ?

Par défaut, le formulaire gère les mots du groupe "tags". Ce groupe peut être modifié dans les paramètres.

- Et si je veux seulement qu’on puisse ajouter des étiquettes ?

Par défaut, le formulaire demande de modifier les mots. Ce qui signifie que le champ texte sera pré-rempli avec les mots qui sont déjà liés à l’objet que l’on veut modifier. Si l’on supprime des mots de la liste, cela les déliera de l’objet. Si l’on ajoute des mots, cela créera les mots le cas échéant, et les liera à l’objet.
Une option permet de ne pas modifier mais de seulement ajouter. Dans ce cas, le formulaire est toujours vide, et tous les mots tapés dedans seront rajoutés en plus de ceux déjà liés à l’élément.

Intégrer Étiquettes dans un formulaire à vous

- À quoi ça sert ?

Si vous êtes développeur et que vous fabriquez vous-même des formulaires, cela va vous permettre d’intégrer le champ texte (et les aides éventuelles) à l’intérieur de votre code. Il suffit pour cela d’ajouter le paramètre uniquement_champ=true.

L’utilisation repose sur le même principe, sauf que cela ne va générer que le champ texte et les aides éventuelles. Le but est de pouvoir facilement intégrer un champ de type "tags" (même si c’est pour une autre utilisation) à l’intérieur d’un autre formulaire. Elle est donc essentiellement destiné aux créateurs de plugins.

- Attention la balise n’est alors plus un formulaire, donc elle ne vérifie aucune autorisation. C’est à vous de faire le nécessaire dans votre propre formulaire/balise/etc.

- Dans un formulaire de création

Si vous utilisez uniquement_champ dans un formulaire de création d’objet, et bien.... l’objet n’existe pas encore ! Donc vous ne pouvez ni placer la balise dans une boucle, ni préciser explicitement l’objet dans les paramètres.
Heureusement, avec cette balise on peut dire "aucun objet" dans les options (cf plus bas).

- Et après, comment je traite ?

Effectivement, vu que c’est un formulaire à vous, c’est à vous de traiter le résultat du champ texte.
Par défaut, la balise génère un champ avec pour name : etiquettes-groupe-type-id. Mais vu que ce n’est pas forcément très pratique tous les jours, on peut facilement imposer un nom de champ dans les paramètres !
Une fois que vous avez récupéré le champ, vous devez utiliser la fonction ajouter_mots() de la librairie tag-machine.php.

- Un petit exemple ?

Bien sûr, alors dans le formulaire d’abord :

Puis dans le traitement de votre formulaire :

Pour plus d’informations sur les fonctions, ouvrez le fichier en question (tag-machine.php), c’est bien documenté dedans.

- Et on peut l’utiliser pour faire des contrôleurs de crayons ?

On peut aussi. C’est un peu particulier mais ça marche très bien !

D’abord il faut rajouter ceci avant la balise :
<input type="hidden" disabled="disabled" name="#ENV{name_tags}" />
Ensuite vous forcez le nom du champ avec #ENV{name_tags} puis dans la vue, vous récupérez #ENV*{tags} et vous appliquez le filtre |ajouter_etiquettes{} qui prend les mêmes paramètres que la fonction ajouter_mots() décrite précédemment.

Exemple. Imaginons que vous faîtes un crayon pour modifier les tags d’un auteur. Dans le contrôleur on aura :

Et dans la vue, on pourrait avoir :

Les paramètres

Il existe un grand nombre de paramètres permettant de modifier le comportement de #FORMULAIRE_ETIQUETTES. Ne vous affolez surtout pas : ils sont tous optionnels. Voici la liste complète des options.

#FORMULAIRE_ETIQUETTES{parametre=valeur, autre_param=autre_valeur, truc=etc}. Dans l’ordre que vous voulez !
Paramètre Description Valeurs Par défaut
groupe nom du groupe de mots-clés auxquels seront rajoutées les étiquettes une chaîne de caractère, tout est possible, y compris avec des espaces et des accents tags
remplacer booléen indiquant si le formulaire va modifier (true) ou seulement ajouter (false) les mots true, false true
objet indique explicitement à quel objet seront rajoutés les étiquettes ; lorsqu’il est utilisé, la balise ne fait plus attention au contexte où elle est, ce sont ces paramètres qui sont prioritaires une chaîne de la forme type-id, càd un type d’objet ayant des mots-clés, et un numéro d’objet existant
ex : document-3, ou article-#ID_ARTICLE, ou "aucun" si on en veut pas
prend le contexte où est placé la balise
aide type de l’aide, tel que décrit un peu plus haut ; si on force l’aide à "nuage" et que le plugin n’est pas là... bah il n’y aura rien nuage = que le nuage
autocompletion = que la liste déroulante
liste = une liste de mots à cliquer
aucune, aucun, rien = ...
aide activée suivant les plugins installés
proposer_login booléen (true / false) indiquant si l’on propose le formulaire de login, lorsque la balise détecte que le visiteur n’a pas les bons droits pour ajouter/modifier les étiquettes ; par défaut la balise n’affiche strictement rien si le visiteur n’a pas les bons droits true, false false
uniquement_champ booléen permetant de ne générer que le champ et les aides true, false false
name force le nom du champ des étiquettes (name= ?) une chaîne de caractères sans espace etiquettes-groupe-type-id
explication permet de supprimer ou modifier le petit texte d’explication qui est mis par défaut false ou une chaîne de caractère pour remplacer un petit texte expliquant comment remplir le champ
Retour en haut de la page

39 Messages de forum

Voir toute la discussion

Pages 1 | 2 | 3 | 4

  • Répondre à ce message

    20 février 21:31

    Ok ça fonctionne. il semblerait que l’espace entre le = et la première lettre du nom de groupe était en trop.

    Beru

  • Répondre à ce message

    20 février 18:04 , par RastaPopoulos

    Il faudrait donc faire : #FORMULAIRE_ETIQUETTES{groupe=Les thèmes} (utilises une balise <code> pour afficher comme il faut)

    Il doit ya voir une différence quelque part (un accent, un espace ?) parce que je n’ai jamais eu de problème de ce genre. Je vais regarder quand même.

  • Répondre à ce message

    20 février 16:46

    En effet !

    J’ai donc mis : #FORMULAIRE_ETIQUETTES groupe= Les thèmes (enfin là il n’affiche pas les accolades) mais il s’obstine à me créer un groupe appelé : les thèmes alors qu’il y en a déjà un. J’ai tenté avec et sans accent.

    Ou est l’erreur ?

    Beru

  • Répondre à ce message

    19 février 15:47

    Bjr, Je ne vois pas ou régler les paramètres dans la partie privé. Rien dans les mots clés, rien dans cfg , rien dans les plugins.

    Suis-je distrait ?

    Beru

  • Répondre à ce message

    17 février 11:54 , par RastaPopoulos

    Comme décrit au début de l’article, Étiquettes n’est qu’une interface pratique pour les mêmes fonctions que SPIP. Ce sont donc bien les tables spip_mots_"objets" (puisqu’on peut mettre des mots sur n’importe quoi) qui sont utilisées. Et le plugin utilise aussi l’interface de programmation fournie par SPIP. On peut donc dire que c’est pérenne.

  • Répondre à ce message

    17 février 10:12

    BOnjour,

    je voudrais savoir si quand on ajoute un mot clé à un article, c’est la table spip_mots_articles qui est alimentée ou si le plugin étiquette créé une table spécifique comme le fait spicicious ?

    Beru

    Après vérification, Spipicious tout en créant sa table spécifique, alimente aussi la table spip_mots _articles.

    Mon interrogation reste car je me pose des questions sur la durée. La pérennité de la bse.

  • Répondre à ce message

    5 février 17:21 , par RastaPopoulos

    Ah c’est pas moi qui l’ai mis je crois. :)
    Depuis la doc officielle a changé.

    Au début du plugin, c’était pas spécialement SPIP 2 et ça pouvait aller de pair avec Mot Partout.

    Ceci dit, on peut très bien avoir des mots-clés sur les auteurs dans SPIP 2. Mais soit il faut l’implémenter tout seul, soi il faut trouver un plugin qui le fait (je crois qu’il y a une version de Mot Partout qui le fait pour SPIP 2 ... cf sur le SVN).

    Après, le plugin Étiquettes sait gérer les mots sur n’importe quel objet, du moment qu’on a le droit de mettre des mots dessus. Donc c’est plus un problème "externe".

    Bonne chance.

  • Répondre à ce message

    5 février 17:10 , par joz

    Bonjour,

    ici sur plugins spip ça dit que le plugin "Étiquettes" se combine très bien avec le plugin "Mots partout". Mais le premier est pour spip 2, l’autre pour spip 1.9.2. Comment est-ce que ça se combine ? Est-ce qu’il y a moyen d’employer des mot-clés sur les auteurs sous spip2 et d’utiliser étiquettes en plus ?

    merci

    joz

  • Répondre à ce message

    8 janvier 09:56 , par RastaPopoulos

    Et oui, le mécanismes des crayons est un peu compliqué des fois...
    Il faut bien laisser #ENV{name_tags} ! Et ensuite dans la vue on récupère #ENV*{tags}.

    Contrôleur :

    Vue :

Pages 1 | 2 | 3 | 4

Répondre à cet article

Retour en haut de la page

Ça discute par ici