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 <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')." &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

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