Des mots clefs partout

Voici une nouvelle interface pour ajouter des mots clefs sur les tables spip que l’on veut.

Des mots clefs sur tout ce qu’on veut

Cette contrib fournit une nouvelle page pour l’interface privée permettant d’ajouter facilement des mots sur les éléments spip que l’on veut.

Pour illustrer la contrib, on va prendre comme exemple l’extension de la base de donnée spip pour ajouter des mots clefs sur les documents.

Nouvelles tables

Le première chose à faire est de créer une nouvelle table dans la base de donnée SPIP. Pour suivre les règles de nomage des tables spip, on va l’appeler spip_mots_documents (pensez à remplacer spip_ par le préfixe de vos tables).

Il faut donc, depuis phpMyAdmin ou autre, déclarer une table qui fait un mapping des id_documents vers les id_mots :

CREATE TABLE <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+c3BpcF9tb3RzX2RvY3VtZW50czwvY29kZT4="></span> (
<span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+aWRfZG9jdW1lbnQ8L2NvZGU+"></span> BIGINT( 21 ) NOT NULL ,
<span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+aWRfbW90PC9jb2RlPg=="></span> BIGINT( 21 ) NOT NULL
);

Il faut ensuite déclarer cette table à SPIP en ajoutant le code suivant dans votre fichier mes_fonctions :

global $tables_principales;
$tables_principales['spip_mots_documents']['field'] = array(
        "id_mot"    => "BIGINT (21) DEFAULT '0' NOT NULL",
        "id_document"    => "BIGINT (21) DEFAULT '0' NOT NULL");

$tables_principales['spip_mots_documents']['key'] = array(
        "KEY id_mot"    => "id_mot",
        "KEY id_document"    => "id_document");

global $tables_relations;
$tables_relations['mots']['id_document'] = 'mots_documents';
$tables_relations['documents']['id_mot'] = 'mots_documents';

On doit ensuite ajouter une colonne à la table des groupes de mots clefs pour qu’on puisse permettre l’ajout de mots clefs sur les documents :

ALTER TABLE <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+c3BpcF9ncm91cGVzX21vdHM8L2NvZGU+"></span> ADD <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+ZG9jdW1lbnRzPC9jb2RlPg=="></span> CHAR( 3 ) NOT NULL DEFAULT 'non';

bientôt intégré à l’interface de cette contrib :
Il faut aussi modifier cette colonne dans la table pour le groupe de mots qui nous intéresse (e.g. « Photos) » puisse être ajouté aux documents :

UPDATE spip_groupes_mots SET documents='oui' WHERE titre='Photos';

Interface d’ajout

Une nouvelle page pour l’interface privée, permettant d’ajouter des mots sur à peu près n’importe quoi a été développée.

archive d’installation SPIP 1.8

pour les versions 1.8.2, il faut télécharger les fichiers disponibles ici puis les installer comme indiquer ci dessous.

Installation

  1. décompresser l’archive,
  2. placer mots_partout.php dans le répertoire ecrire,
  3. placer les fichiers motspartout_*.php dans le répertoire ecrire/lang,

Utilisation

Il faut se rendre sur la page de l’espace privé : ecrire/mots_partout.php, puis :

-  On peut limiter les documents affichés en spécifiant une liste — séparée par des virgules — de numéros de rubriques, d’articles ou de brèves.

Les mots sont affichés sur la gauche :
-  Les mots en vert sont ceux associés à tous les documents qui sont actuellement affichés.
-  Les mots en bleu sont ceux associés à une partie des documents affichés.

-  On peut voir les documents associés à des mots en les sélectionnant et en faisant « voir ». On verra alors les documents avec au moins un de ces mots.
Si on veut voir les documents qui ont au moins tous ces mots, il faut alors cocher la case « stricte ».
-  On peut exclure les documents associés à certains mots en cochant la case « sans » de ces mots.
-  On peut voir les mots associés à certains documents en sélectionnant les documents et faisant « voir ».

-  On peut ajouter des mots en les sélectionnant et en sélectionnant les documents. On fait ensuite « ajouter ».
-  On peut enlever des mots en les sélectionnant et en sélectionnant les documents. On fait ensuite « enlever ».


Internationalisation

La contrib vient avec 3 fichiers de localisation :
-  motspartout_fr.php pour l’interface en français,
-  motspartout_en.php pour l’interface en anglais,
-  motspartout_it.php pour l’interface en italien.

Si vous localisez ces fichiers dans d’autres langues, merci de me les faire parvenir (NdA : ou de les envoyer aux admins si vous n’avez pas de réponse de l’auteur, avec une petite explication), ils seront ajoutés à la contrib.

Des mots sur autre chose

En fait cette interface est faite pour mettre des mots sur n’importe quel objet spip.

On a pris l’exemple des documents et vous remarquerez qu’on peut déjà l’utiliser pour mettre des mots clefs sur les articles aussi.

On peut facilement étendre cette interface en ajoutant d’autres tables mots_documents comme expliqué plus haut. Il faut ensuite déclarer dans votre fichier mes_options certaines informations. Par exemple pour les brèves :

$choses_possibles['breves'] = array(
                                      'titre_chose' => 'breves',
                                      'id_chose' => 'id_breve',
                                      'table_principale' => 'spip_breves',
                                      'table_auth' => 'spip_auteurs_breves',
                                      'tables_limite' => array(
                                                               'breves' => array(
                                                                                   'table' => 'spip_breves',
                                                                                   'nom_id' => 'id_breve'),
                                                               'rubriques' => array(
                                                                                    'table' => 'spip_articles',
                                                                                    'nom_id' =>  'id_rubrique'),
                                                               'documents' => array(
                                                                                    'table' => 'spip_documents_breves',
                                                                                    'nom_id' =>  'id_document'))
                                                               )
                                      );
  • L’index dans la table choses_possibles doit être le nom présent dans la table mots correspondante, par exemple : spip_mots_breves
  • titre_chose est le nom de la chose sur laquelle on veut ajouter des mots, on peut localiser cette variable,
  • id_chose est le nom de la colonne contenant l’id de la chose sur laquelle on veut ajouter des mots,
  • table_principale est la table contenant toutes les choses sur lesquelles on veut ajouter des mots,
  • table_auth est facultative. C’est la table qui lie les auteurs du site et la chose sur laquelle on veut ajouter des mots,
  • tables_limite est un tableau de table que l’on peut utiliser pour limiter l’affichage (par exemple : les brèves de certaines rubriques, les brèves ayant certain documents) :
    • table est le nom de la table,
    • nom_id est le nom de la colonne sur laquelle on impose la limite.

affichage personnalisé

Au départ, l’interface va juste afficher une liste des identifiant, puisqu’elle ne sait pas comment afficher les nouveaux objets.

Si on veut un affichage adapté à l’objet sur lequel on travail, il faut ajouter dans mes_options sa propre fonction afficher_liste_choses choses est le nom de la chose à afficher (i.e. le nom utilisé dans l’index de la table choses_possibles). Cette fonction prend un paramètre la liste des identifiant des choses à afficher.

Vous pouvez vous inspirer des articles ou des documents pour lesquels la table choses_possibles et les fonctions d’affichage sont fournies.

Version de développement

Cette contrib est gérée sur spip-zone, on peut récupérer la dernière version de développement grâce à :

svn checkout svn://zone.spip.org/spip-zone/_contrib_/_ecrire_/mots_partout/trunk/

Discussion

Aucune discussion

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