MotsClesAuteurs

All contributions published for previous SPIP versions

 [1]
voir aussi >


Ceci vous permettra d’utiliser les mots clés sur les auteurs (boucle auteurs avec critère mot). Une discussion en cours sur spip lab parle de cette option : Gestion Des Auteurs]. Les explications sont basées sur la version spip 1.7.2. Attention aux numéros de ligne en v 1.8

Cette modification est un peu longue, mais elle fonctionne, et qui aime ne compte pas !! ( si vraiment vous ne vous en sortez pas, voici où me joindre : GasparD )

Attention, ces modifications ne s’adressent pas au néophyte ! Vous devez comprendre ce que vous faites au cas où les numéros de ligne ne sont pas exactement les mêmes chez vous.

MySQL

Ajouter la table spip_mots_auteurs :

CREATE TABLE `spip_mots_auteurs` (
`id_auteur` BIGINT( 21 ) NOT NULL ,
`id_mot` BIGINT( 21 ) NOT NULL 
);

Ajouter une colonne auteurs à la table groupes_mots pour autoriser l’affectation de mots clés de certains groupes aux auteurs

ALTER TABLE `spip_groupes_mots` ADD `auteurs` CHAR( 3 ) NOT NULL ;

SPIP


ecrire/auteurs_edit.php3

Vous devez modifier le fichier de saisie des auteurs pour afficher le formulaire de saisie : ligne 3, ajouter :

include_ecrire ("inc_mots.php3");

ligne 143 :

if ($options == 'avancees' AND $auteurs_mots != 'non') {
      $flag_editable = ($connect_statut == "0minirezo" OR $id_auteur == $connect_id_auteur);
	formulaire_mots('auteurs', $id_auteur, $nouv_mot, $supp_mot, $cherche_mot, $flag_editable);
}

ecrire/inc_mots.php3

Pour adapter la fonction de formulaire, ligne 98, ajouter :

else if ($table == 'auteurs') {
		$id_table = 'id_auteur';
		$url_base = "auteurs_edit.php3?id_auteur=$id_objet";
	}

ecrire/mots_type.php3

Pour permettre l’activation des mots clés liés aux auteurs, ligne 14, ajouter :

$auteurs = 'non';

ligne 30, ajouter :

$auteurs = $row['auteurs'];

ligne 98, ajouter :

if ($auteurs == "oui") $checked = "checked";
		else $checked = "";
		echo "<input type='checkbox' name='auteurs' value='oui' $checked id='auteurs'> <label for='auteurs'>"._T('item_mots_cles_association_auteurs')."</label><br>";

ecrire/lang/spip_fr.php3

Fichier de langue pour le français.

ligne 517, ajouter :

'info_1_auteur' => '1 auteur',

ligne 585, ajouter :

'info_auteurs_02' => 'auteurs',

ligne 816, ajouter :

'info_nombre_auteurs' => '@nb_auteurs@ auteurs,',

ligne 1081, ajouter :

'item_mots_cles_association_auteurs' => 'aux auteurs',

ecrire/mots_tous.php3

ligne 23, ajouter :

$nb_auteurs = spip_fetch_row(spip_query(
			"SELECT COUNT(*) FROM spip_mots_auteurs AS lien, spip_auteurs AS auteur 
			WHERE lien.id_mot=$conf_mot AND auteur.id_auteur=lien.id_auteur"
			));
		$nb_auteurs = $nb_auteurs[0];

ligne 62, modifier :

articles='$articles', auteurs='$auteurs', breves='$breves', rubriques='$rubriques', syndic='$syndic',

ligne 68, modifier :

articles='$articles', auteurs='$auteurs', breves='$breves', rubriques='$rubriques', syndic='$syndic',

ligne 98, ajouter :

if ($nb_auteurs == 1) {
		$texte_lie = _T('info_un_auteur')." ";
	} else if ($nb_auteurs> 1) {
		$texte_lie = _T('info_nombre_auteurs', array('nb_auteurs' => $nb_auteurs)) ." ";
	}

ligne 150, ajouter :

$result_auteurs = spip_query(
	"SELECT COUNT(*) as cnt, lien.id_mot FROM spip_mots_auteurs AS lien, spip_auteurs AS auteur
	WHERE auteur.id_auteur=lien.id_auteur GROUP BY lien.id_mot"
);
while ($row_auteurs =  spip_fetch_array($result_auteurs)){
	$id_mot = $row_auteurs['id_mot'];
	$total_auteurs = $row_auteurs['cnt'];
	$nb_auteurs[$id_mot] = $total_auteurs;
}

ligne 203, ajouter :

$auteurs = $row_groupes['auteurs'];

ligne 232, ajouter :

if ($auteurs== "oui") echo "> "._T('info_auteurs')." &nbsp;&nbsp;";

linge 285, ajouter :

if ($nb_auteurs[$id_mot] == 1)
					$texte_lie[] = _T('info_1_auteurs');
				else if ($nb_auteurs[$id_mot] > 1)
					$texte_lie[] = $nb_auteurs[$id_mot]." "._T('info_auteurs_02');

inc-champ-squel.php3

ligne 41, ajouter ça permet les boucles BOUCLE_mots(MOTS)id_auteur) :

$tables_relations['auteurs']['id_mot'] = 'spip_mots_auteurs';

ligne 53, ajouter ça permet les boucles BOUCLE_auteurs(AUTEURS)id_mot) :

$tables_relations['mots']['id_auteur'] = 'spip_mots_auteurs';

ecrire/inc_export.php3

Ceci vous permet de sauvegarder les mots clés liés aux auteurs.

ligne 153, ajouter :

$query = 'SELECT id_auteur FROM spip_mots_auteurs WHERE id_mot='.$row[0];
				$res2 = spip_query($query);
				while($row2 = spip_fetch_array($res2)) {
					$string .= '<lien:auteur>' . $row2['id_auteur'] . '</lien:auteur>' . "n";
				}
				spip_free_result($res2);

ecrire/inc_import.php3

Et finalement, ceci pour la restauration:

ligne 165, ajouter :

spip_query("DELETE FROM spip_mots_auteurs WHERE id_mot=$id_objet");

ligne 229, ajouter :

else if ($is_mot AND $col == 'id_auteur') {
			$auteurs[] = $value;
		}

ligne 258, ajouter :

$query = "DELETE FROM spip_mots_articles WHERE id_mot=$id_mot";
		spip_query($query);

ligne 275, ajouter :

if ($auteurs) {
			reset ($auteurs);
			while (list(, $auteur) = each($auteurs)) {
				$query = "INSERT INTO spip_mots_auteurs (id_mot, id_auteur) VALUES ($id_mot, $auteur)";
				spip_query($query);
			}
		}

Conclusion

Ça fonctionne, je l’utilise. La sauvegarde + restauration aussi. Si vous êtes parvenu jusqu’ici en modifiant vos fichier, informez-moi !

GasparD

Footnotes

[1ReferencesMotsClesAuteurs les articles de spikini qui citent cet article

updated on 21 October 2007

Discussion

Aucune discussion

Comment on this article

Who are you?
  • [Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom