[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 <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+c3BpcF9tb3RzX2F1dGV1cnM8L2NvZGU+"></span> (
<span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+aWRfYXV0ZXVyPC9jb2RlPg=="></span> BIGINT( 21 ) NOT NULL ,
<span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+aWRfbW90PC9jb2RlPg=="></span> 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 <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+c3BpcF9ncm91cGVzX21vdHM8L2NvZGU+"></span> ADD <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+YXV0ZXVyczwvY29kZT4="></span> 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')." ";
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
Aucune discussion
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 : |