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

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

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)]'>

Notes

[1ref et liens

[2cf article...

Discussion

3 discussions

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

    Répondre à ce 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.

    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 :

  • 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