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

37 discussions

  • 6

    Bonsoir !

    Très bonne initiative que ce plug-in. Par contre chez moi, comme d’hab ya un truc qui part en c*****e, sinon c’est pas drôle...

    Obtenu à l’activation du plugin en entête de page à l’accueil de « Configurer Mots Partout »

    Warning: exec_config_mots_partout(../plugins/W:/www/LODN 191/spip/plugins/mots_partout_choses.php) [function.exec-config-mots-partout]: failed to open stream: Invalid argument in W:\www\LODN 191\spip\plugins\mots_partout\exec\config_mots_partout.php on line 12
    
    Warning: exec_config_mots_partout() [function.include]: Failed opening '../plugins/W:/www/LODN 191/spip/plugins/mots_partout_choses.php' for inclusion (include_path='.;/usr/local/PHP/includes;/usr/local/PHP/pear') in W:\www\LODN 191\spip\plugins\mots_partout\exec\config_mots_partout.php on line 12

    et un peu loin dans la page :

    Warning: Invalid argument supplied for foreach() in W:\www\LODN 191\spip\plugins\mots_partout\exec\config_mots_partout.php on line 75
    La base de données est déjà configurée pour mettre des mots partout.

    Euh... comment dit-on déjà ? Hmmm... Ah oui ! HEEEELPEEUH :O !

    • Bonjour,

      J’ai exactement la même chose avec Spip 1.9.1.
      J’ai installé un plugin plus ancien et ça fonctionne(?), par contre impossible d’avoir un résultat probant avec cette boucle qui me renvoit tous les auteurs et non pas seulement ceux dont un mot clé a été affecté.

      <B_aut_pref>				#ANCRE_PAGINATION
      <BOUCLE_aut_pref(MOTS){id_groupe=5}{pagination 3}>
      <p>. <a href="#URL_MOT">#TITRE</a></p>
      <BOUCLE_aut_mot(AUTEURS){id_mot}>
      <a href="#URL_AUTEUR">#NOM</a></BOUCLE_aut_mot>
      </BOUCLE_aut_pref>[
      <p class="pagination">(#PAGINATION)</p>]</B_aut_pref>
      </div></div>


      Bonne année 2007 !
      quand même.

    • J’ai le même message d’erreur quand je vais dans la partie mots partout du site (SPIP 1.9.1 [7502])

      Warning: exec_mots_partout(../plugins//home/xxxxxx/public_html/xxxxx/plugins/mots_partout_choses.php) [function.exec-mots-partout]: failed to open stream: No such file or directory in /home/xxxxxxxxxx/public_html/xxxxxx/plugins/mots_partout/exec/mots_partout.php on line 181
      
      Warning: exec_mots_partout(../plugins//home/xxxxxx/public_html/xxxxxx/plugins/mots_partout_choses.php) [function.exec-mots-partout]: failed to open stream: No such file or directory in /home/xxxxxxx/public_html/aw/plugins/mots_partout/exec/mots_partout.php on line 181
      
      Warning: exec_mots_partout() [function.include]: Failed opening '../plugins//home/xxxxxxxx/public_html/aw/plugins/mots_partout_choses.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /xxxxxx/plugins/mots_partout/exec/mots_partout.php on line 181
      
      Warning: Variable passed to each() is not an array or object in /xxxxxx/plugins/mots_partout/exec/mots_partout.php on line 201
      
      Warning: reset() [function.reset]: Passed variable is not an array or object in /xxxxxx/plugins/mots_partout/exec/mots_partout.php on line 202

      Ou est la version plus vielle qui fonctionne. J’ai essayé la version 1.9.2 sur le SVN mais elle ne marche pas non plus.

      Cette fonction est devenu une necessité abslolue pour le bon fonctionnement de mon site.
      En tout cas merci pour votre travail...

      antoine

    • Bonjour,

      je viens de constater le même soucis sur un SPIP 1.9.1 [7502]. j’ai l’impression que SPIP n’arrive pas à situer le plug-in puisqu’il le place plus haut dans l’arborescence. J’imagine que l’on peut arriver à modifier cela en remplaçant _DIR_PLUGINS_MOTS_PARTOUT par le chemin du répertoire de pusgin. mais je coris pas que ce soit une bonne solution...

      Par contre peux-tu m’indiquer quelle version tu as utilisé car de mon côté je n’arrive pas à en trouver d’autres que clle prévue pour la 1.9.1 ?

      D’avance merci !!!

      François

    • Regarde un peu plus haut.

      Pour trouver les nouvelles versions du plugin, va dans la ZONE a cette adresse :
      svn ://zone.spip.org/spip-zone/_contrib_/_ecrire_/mots_partout/trunk/

      Sur mac il m’a fallu installe Subversion (google) et SVNx sur versiontracker.com.

      ciao
      antoine

    • Un grand merci, cela marche impeccable.

      François

    • laregie

      J’ai trouvé l’erreur :
      il faut remplacer sur les fichiers la ligne :
      $p=explode(basename(_DIR_PLUGINS).« / »,str_replace(’\’,’/’,realpath(dirname(dirname(__FILE__))))) ;

      par
      $p=explode(basename(_DIR_PLUGINS).« / »,str_replace(’\’,’/’,realpath(dirname(__FILE__)))) ;

    Répondre à ce message

  • 1

    L’interface avec la version Trunk du SVN marche sur SPIP 1.9.1 [7502], cependant je ne peux acceder aux documents pour y associer des mots clefs. Le choix n’apparaît pas dans le menu déroulant. Est-ce que quelque chose m’échappe ?

    antoine

    • Trouvé. Il faut aller dans la partie configuration du site pour choisir documents.
      Merci pour ce plugin, tres pratique.

    Répondre à ce message

  • Bonjour,
    J’ai installé tout comme il faut, me semble-t-il, pour un Spip 1.8.3.
    Mais j’obtiens le msg d’erreur suivant :
    Fatal error : Call to undefined function : () in /Volumes/data2/carnet2p/ecrire/mots_partout.php on line 668

    Comment résoudre le pb ?
    Merci
    ADB

    Répondre à ce message

  • 1

    je retrouve zone.spip.org le nom de ce plugin mais pas le plugin n’y est pas, je suppose en phase de développement. Pour quand sera-t-il prêt ? Afin que je sache si cela vaut la peine de me plonger ou moins dedans... merci

    Répondre à ce message

  • 1

    Bonjour,

    sur une 182g avec votre contrib tags/182d j’ai le message suivant :
    Fatal error : Call to undefined function : () in /var/www/htdocs/xlcc/public/ecrire/mots_partout.php on line 668

    une idée ?

    Merci beaucoup

    Répondre à ce message

  • 1

    Amelioration possible :

    1/ quand on ajoute plusieru fois un mots a un document, cela ajoute plusieur fois la meme ligne dans al table mot_document. Il faudrait faire une verificationa vant l’ecriture

    2/ quand on affiche un document, il serait bien de pouvoir aussi lister tous les mots auquel il est associer (cela eviterais aussi le problem cite en #1.

    • quand on affiche un document, il serait bien de pouvoir aussi lister tous les mots auquel il est associer (cela eviterais aussi le problem cite en #1.

      He bien, la liste des documents à droite à 3 couleurs :

      1. le gris de base veut dire que le mot est associé à aucun des documents sélectionnés,
      2. le bleu veut dire que le mot est associé à une partie (mais pas tous) des documents sélectionnés,
      3. le vert veut dire que le mot est associé à tous les documents sélectionnés.

      Donc si tu choisis un document et fait « voir » alors tous les mots associés à ce document seront en vert.

    Répondre à ce message

  • J’essaye de d’afficher totus les document qui n’ont pas de mots cles associe mais je n’y arrive pas... y’a t il une methode particuliere.

    car cela serait bien pratique pour ne travailler que sur les documents qui n’ont pas encore de mots cles..

    si quelqu’un a une idee...

    Sinon contrib absolument indispensable, cela devrait etre integre a SPIP. Je pense dans une page special pour les admins seulement bien sur.

    Répondre à ce message

  • Dans les versions postérieures à 1.8, (ici la 1.8.1, mais idem avec la 1.8.2.e) la TABLE spip_mots_documents existe déjà.

    Je suppose dès lors qu’il n’est pas nécessire de la déclarer dans mes_fonctions ? Ou ai-je tout faux ?

    Par ailleurs avec PHP 5.03, j’ai commenté la ligne 24 (// include_ecrire (« inc_version.php3 ») ;) pour éviter un message d’erreur (Fatal error : Cannot redeclare define_once() (previously declared in /home/synhorco/public_html/annuaire/ecrire/inc_version.php3:19) in /home/synhorco/public_html/annuaire/ecrire/inc_version.php3 on line 21).

    Répondre à ce message

  • 1

    Bonjour

    après intallation hier 1er déc de la dernière version de la contrib sur SVN, sur un spip 1.8.2d, sur ma page « mots_partout.php » il apparait lors du lancement les messages d’alertes suivants :

    Warning: Variable passed to each() is not an array or object in /home/pucrolle/www/ecrire/mots_partout.php on line 774
    Warning: reset(): Passed variable is not an array or object in /home/pucrolle/www/ecrire/mots_partout.php on line 775

    et je peux rien faire avec cette page.

    Sauf erreur de ma part ces lignes correspondent a

    ******************************************
    * récuperation de la chose sur laquelle on travaille
    *******************************************/
    772  $nom_chose = $_REQUEST['nom_chose'];
    773  if(!isset($choses_possibles[$nom_chose])) {
    774    list($nom_chose,) = each($choses_possibles);
    775   reset($choses_possibles);
    }

    euh !! la honnetement je suis sec sur ce qu’il faut faire
    merci d’avance
    @+
    Nicolas R

    • la version stable pour la 1.8.2 est là http://zone.spip.org/trac/spip-zone... (dans le tags, le trunk, c’est les versions en dev, des fois elles cassent :( )
      Pour la version trunk1.8.2, il y a un autre fichier à installer : mots_possibles.php3 pour que cela marche je crois.

      mais c’est ma faute, j’avais mis le mauvais lien.

    Répondre à ce message

  • 3

    J’ai installé l’archive sur un spip 1.8.2.d
    et j’obtiens ça :

    Warning : array_filter() : The first argument should be an array in c :\program files\easyphp1-8\www\spip-v1-8\ecrire\inc_abstract_sql.php3 on line 59

    Que peut faire un ignare du php comme moi ?

    • Voilà. Maintenant j’ai ça.
      Je précise que j’ai laissé en php et que les autres fichiers sont en php3. Dois-je renommer l’extension des 2 fichiers mots_partout en adaptant aussi les appels à l’intérieur ou pas ?

      Warning : include_ecrire(_libs_/tag-machine/inc_tag-machine.php) : failed to open stream : No such file or directory in c :\program files\easyphp1-8\www\spip-v1-8\ecrire\inc_version.php3 on line 51

      Warning : include_ecrire() : Failed opening ’_libs_/tag-machine/inc_tag-machine.php’ for inclusion (include_path=’. ;C :/Program Files/EasyPHP1-8\php\pear\’) in c :\program files\easyphp1-8\www\spip-v1-8\ecrire\inc_version.php3 on line 51

    • J’ai installe pour la deuxième fois le fichier mots_partout.php sur spip version 1.8 mais ne marche pas correctement.

      Toutes les tables mysql sont bien en place comme les fichier ecrire/mots_partout.php et ecrire/lang/motspartout_fr.php autant pour les fichiers ecrire/mes_options.php et mes_fonctions.php

      Quand je regarde le fichier mots_partout.php téléchargé dépuis le zip via http://www.spip.net/contrib/IMG/gz/mots_partout.tar.gz

      ou via http://zone.spip.org/trac/spip-zone/file/_contribs_/_ecrire_/mots_partout/trunk/mots_partout.php?rev=765&format=raw

      je trouve que le code n’ai pas normale entre les lignes suivante fichier
      ouvert avec Editplus Version 5.1 :
      voir le code entre les lignes 129 -133
      voir le code entre les lignes 879 - 881
      voir le code entre les lignes 903 - 905
      voir le code entre les lignes 949 - 957

      Maintenant quand je vais sur la page mots_partout.php exemple :
      ici en gif http://www.livresphotos.com/img/mots-partout-doc.gif

      les urls des documents sont de ce type : http://www.monsite.com/ecrire/Array
      qui ne rapportent à rien le code en effet c’est « a href="Array" »

      Pour les articles exemple :
      ici en gif http://www.livresphotos.com/img/mots-partout-articles.gif

      le mots clefs et le groupe de mots clef ne sont pas visibles.
      si je cherche a ajouter des mots clefs à un article aucune mots cléf s’ajoute.

      Vous trouvez ici le fichier au format zip avec les fichiers que j’ai téléchargé sur vos serveurs et que sont installé sur mon serveur.

      http://www.livresphotos.com/img/mots-partout.zip

      Pour consolation j’ai fait un test sur la version spip 1.8.2d et là ça marche très bien :-)

      Or je voudrais faire marcher mots_partout.php aussi sur la version spip 1.8.

      Merci

    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