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] > [(#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
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)]'>
Discussions par date d’activité
3 discussions
Cette conrib correspond bien à mes besoins mais est elle compatible avec spip 2 ?
Répondre à ce message
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.
Répondre à ce message
C’est très clair, ça a l’air très bon. Je le mets en place de suite !
Merci.
Greg
Répondre à ce message
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 : |