Des mots clés à gogo (ou meta données de référencement)

All contributions published for previous SPIP versions

je repropose cet article pour validation mais il manque quelques liens sur les extras pour le finaliser, merci de votre compréhension. Dorian.

J’ai écris un petit script php qui permet de générer des mots clés à partir du texte.

Les mots clés sont rangés dans la section PS de l’article. Il suffit de transférer les 2 fichiers dans le répertoire ecrire. Au préalable, sauvegardez articles_edit.php3.

A l’édition d’un article vous aurez la possibilité de générer les mots clés grâce à un bouton (c’est ce bouton que nous ajoutons en modifiant article_edit.php3, rien de bien méchant donc pour la santé de votre spip ! ). Un fois générés, vous pourrez les modifier à souhait.

Il faudra dès lors ajouter le #PS dans les metas., ce qui donnerait, par exemple, dans le <head> de votre page :

<head>
 <!-- titre de la page -->
 <BOUCLE_TITRE(ARTICLES) {id_article}>
 <title>[#NOM_SITE_SPIP] &gt; [(#TITRE|supprimer_numero)]</title>

 <!-- description, mots-clés, auteurs de l'article -->
 <META NAME="Description" CONTENT='[(#DESCRIPTIF|supprimer_tags|texte_script)]'>
 <META NAME="Keywords" CONTENT='#PS'>
 <META NAME="Author" CONTENT='<BOUCLE_author(AUTEURS){id_article}{", "}>#NOM</BOUCLE_author>'>
 </BOUCLE_TITRE>
...
</head>

nota il faut que le serveur supporte le php4

Génération des metas avec #PS
gestion des mots clés dans le champ #PS

Pour aller plus loin : utilisons les EXTRAS

Si votre champ PS est déjà utilisé, que tous les autres champs par défaut également, vous ne pouvez pas utilisez cette contrib telle quelle.
On va donc utiliser les EXTRAS [1] pour gérer ce champ supplémentaire “Référencement”

Pour que tout fonctionne nous avons besoin
-  de modifier le fichier ecrire/mes_options.php3 pour y indiquer les spécificités de notre champ EXTRA ainsi que quelques fonctions pour les manipuler écrites par beatnick [2]
-  d’utiliser le fichier mise_mot_cle.php3 original modifié en conséquence

Le fichier mes_options.php3 contient le code suivant, il est inclus dans le zip mais faites attention à ne pas écraser votre fichier si vous l’avez déjà crée pour une raison ou une autre :

<?php 

// Mes champs extras a moi
$champs_extra = true; 
$champs_extra_proposes = true; 

$GLOBALS['champs_extra'] = Array(
	'articles'=>Array(
		"referencement"=>"bloc|propre|RÈfÈrencement|||",
	),
	'rubriques'=>Array(
	),
	'breves'=>Array(
	),
	'auteurs'=>Array(
	),
);

$GLOBALS['champs_extra_proposes'] = Array(
	'articles'=>Array(
		'tous'=>'referencement',
	),
);

// fonctions pour jouer avec les extras

// Récupération des extras déjà remplis dans la base
//
// Arguments : $id pour le numéro de l'objet
//             $objet pour le type d'objet (article, auteur...)
// S'il y a des extra, retourne un tableau associatif, 
// les clés étant le nom de l'extra. Sinon retourne FALSE 
function get_extra ($id, $objet) {
	if(!$id) return false;
	// On construit qqch qui ressemble à "SELECT extra FROM spip_articles WHERE id_article=$id_article"
	$query = "SELECT statut, extra FROM spip_".$objet."s";
	$query .= " WHERE id_".$objet."=".$id;
	$res = spip_query($query);
	$cells = spip_fetch_array($res);
	if(!$cells["extra"]) 
		return false ;
	$extra = unserialize ($cells["extra"]);
	return $extra;
}

// Enregistrement des extras après saisie d'un formulaire ou après un script php.
// Arguments  
//    id : numéro de l'objet
//    extra : TOUS les extra pour l'objet
//    objet : type de l'objet (article, auteur...)
// On testera avec bonheur la valeur de retour
// de cette fonction lors de son appel.
function set_extra ($id, $extra, $objet) {
	if(!$id) return false;
	$extra = addslashes(serialize($extra));
	// On construit qqch qui ressemble à "UPDATE spip_articles SET extra='$extra' WHERE id_article=$id_article"
	$query = "UPDATE spip_".$objet."s";
	$query .= " SET extra='$extra' ";
	$query .= " WHERE id_".$objet."=".$id;
	return spip_query($query);
}

?>

Pour information, le code inclus dans mise_mot_cle.php3 original, qui permet de remplir le champ extra referencement avec le résultat $resultat calculé précédemment est le suivant :

// modif avec gestion par un champ extra

// on recupere tous les extra  de l'article
$extra_article = get_extra($id,"article");
// Tiens il n'y avait pas d'extra pour cet article
if (!is_array($extra_article)) {
 $extra_article = array();
}
// On met à jour le champ meta de l'article
$extra_article['referencement'] = $resultat;
// On enregistre le tout
if (!set_extra($id, $extra_article, "article")) {
 echo "Erreur les extras ne sont pas enregistrés.";
}

et pour être complet, le code du header devient, si on utilise ce champ extras :

<meta name="Keywords" content='[(#EXTRA|referencement|textebrut)]'>

Footnotes

[1ref et liens

[2cf article...

updated on 17 May 2004

Discussion

3 discussions

  • Cette conrib correspond bien à mes besoins mais est elle compatible avec spip 2 ?

    Reply to this message

  • 1
    chkrout

    Cet article est classé dans les “Bidouilles pour avant Spip 1.9”
    Pourrait-on savoir en quoi il devient obsolète sous Spip 1.9? J’utilise cette version et j’hésite donc à utiliser le script proposé, mais je ne vois pas en quoi spip 1.9 proposerait une fonctionnalité équivalente?
    Y’a-t-il un risque d’incompatibilité à l’utiliser sous 1.9 ?
    Merci!

    • M’intéressant de près au référencement naturel avec Spip, je ne vois rien - dans les plugins nouveaux - qui correspondent à ce fait ce script... Si quelqu’un a une piste je suis preneur.

    Reply to this message

  • C’est très clair, ça a l’air très bon. Je le mets en place de suite !
    Merci.
    Greg

    Reply to this message

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