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.
pour les versions 1.8.2, il faut télécharger les fichiers disponibles ici puis les installer comme indiquer ci dessous.
Installation
- décompresser l’archive,
- placer mots_partout.php dans le répertoire ecrire,
- 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 où 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/
Discussions par date d’activité
37 discussions
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 »
et un peu loin dans la page :
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é.
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])
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
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
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
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
Cette contribution est passé en plugin en phase de test ; décrit ici :
http://zone.spip.org/trac/spip-zone/wiki/MotsPartout
et telechargeable pour la 1.9.1 ici :
http://zone.spip.org/files/spip-zone/mots-partout.zip
Répondre à ce message
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
Moi aussi avec SPIP 1.8.2e et 1.8.3 et contrib 1.8.2.d
Répondre à ce message
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.
He bien, la liste des documents à droite à 3 couleurs :
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
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 :
et je peux rien faire avec cette page.
Sauf erreur de ma part ces lignes correspondent a
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
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 ?
essaie le fichier dispo sur la zone : http://zone.spip.org/trac/spip-zone...
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 :
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.
Suivre les commentaires : |