MotsClesAuteurs

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

 [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

Notes

[1ReferencesMotsClesAuteurs les articles de spikini qui citent cet article

Discussion

Aucune discussion

Ajouter un commentaire

Qui êtes-vous ?

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

Dernière modification de cette page le 21 octobre 2007