Génération automatique des meta-balises - Sarka-SPIP

Transcription

Génération automatique des meta-balises - Sarka-SPIP
Génération automatique des meta-balises
Extrait du Sarka-SPIP
http://sarka-spip.com
Génération automatique des
meta-balises
- Sarka-Story - Sarka-SPIP 1.1.2 - Nouvelles fonctionnalités -
Date de mise en ligne : samedi 3 dcembre 2005
Sarka-SPIP
Copyright © Sarka-SPIP
Page 1/12
Génération automatique des meta-balises
Description
Dans la version 1.1.1 du squelette, toutes les meta-balises [1] utiles au référencement n'étaient pas renseignées. Les
utilisateurs du squelette qui souhaitaient créer des mots-clés ou une description dans l'en-tête des pages html
générées par sarka-SPIP devaient modifier manuellement les fichiers du squelette.
Les meta-balises keywords et description sont utilisées par certains moteurs de recherches et annuaires pour
indexer les sites internet. Il m'a donc semblé utile de permettre aux utilisateurs du squelette de définir ces éléments
depuis l'interface privée de SPIP. Le squelette a été modifié pour leur permettre d'attribuer des valeurs à ces balises
en créant un groupe de mots-clés spécifique.
Les contraintes que cette évolution s'est attachée à respecter sont les suivantes :
•
création d'un fichier unique, inclus dans l'ensemble des fichiers html du squelette, permettant de générer les
méta-balises adaptées au contexte
•
l'administrateur du site peut définir un groupe de mot-clés "spécial" :
• les mots-clés de ce groupe sont insérés dans la meta-balise keywords de toutes les pages du site
• la description de ce groupe est insérée dans la meta-balise description des pages pour lesquelles il n'est
pas possible de générer une description spécifique
•
les mots-clés utilisés par les rédacteurs pour indexer les objets (articles, brèves, etc.) sont ajoutés à la
meta-balise keyword de la page correspondant à ces objets
•
quand cela est possible, la valeur attribuée à la meta-balise description correspond à l'introduction de l'objet
affiché (typiquement, la description d'un article doit être constituée des premiers caractères du texte)
•
la valeur attribuée à la meta-balise title, affichée dans l'en-tête du navigateur, décrit du mieux possible la page
affichée (typiquement, le titre d'une page brève doit contenir le titre de la brève affichée).
Fichiers affectés
fichiers créés
•
•
header.html
header.php3
fichiers modifiés
•
•
•
•
•
article.html
auteur.html
breve.html
forum.html
forum-news.html
Copyright © Sarka-SPIP
Page 2/12
Génération automatique des meta-balises
•
•
•
•
•
•
mot.html
plan.html
recherche.html
rubrique.html
site.html
sommaire.html
Mise en oeuvre
Pour générer trois ou quatre lignes de code html dans l'en-tête des pages html générées par SPIP, en respectant les
contraintes décrites ci-dessus, il est nécessaire de créer un couple de fichiers header.html et header.php d'une
grande complexité. Ce qui suit devrait permettre à ceux qui le souhaite de comprendre le principe des boucles
utilisées dans header.html.
Création d'un groupe de mots-clés spécial
Avant tout, l'administrateur sur SPIP doit créer un groupe de mots-clés intitulé squelette_header, dont le contenu
déterminera les valeurs des meta-balises :
•
•
les mots-clés de ce groupe seront utilisés dans la méta-balise keywords
la description rapide de ce groupe sera utilisée dans la meta-balise description
Boucle mots-global pour extraire les mots-clés du site
La boucle permettant d'attribuer à la meta-balise keywords l'ensemble des mots-clés associés au groupe
squelette_header est codée comme suit :
<BOUCLE_mots-global(GROUPES_MOTS){titre=squelette_header}>
<BOUCLE_keywords-site(MOTS){id_groupe}{par titre}{", "}>
#TITRE
</BOUCLE_keywords-site>">
</BOUCLE_mots-global>
Le résultat est l'affichage du code html suivant (pour http://sarka-spip.com par exemple) :
Boucle description-global pour extraire la description du site
Copyright © Sarka-SPIP
Page 3/12
Génération automatique des meta-balises
La boucle permettant d'attribuer à la meta-balise description le texte saisi comme "description rapide" du groupe
squelette_header est codée comme suit :
<BOUCLE_description-global(GROUPES_MOTS){titre=squelette_header}>
</BOUCLE_description-global>
Le résultat est l'affichage du code html suivant (pour http://sarka-spip.com par exemple) :
Boucle objet pour extraire le titre et l'introduction de l'objet spécifique
Les valeurs meta-balises des pages affichant les objets article, brève, site, etc. doivent correspondre au contenu de
l'objet affiché. Il faut ainsi attribuer :
•
•
•
le titre de l'objet à la balise title
les 300 premiers caractères de l'introduction ou de la description de l'objet à la balise description
les mots-clés associés à l'objet à la balise keywords
La boucle suivante réalise cet objectif, en considérant l'objet article (il est ensuite aisé d'extrapoler pour les autres
objets) :
<BOUCLE_art(ARTICLES){id_article}>
[#NOM_SITE_SPIP] [(#TITRE|textebrut|supprimer_numero)]
[]
<B_mots-art>
<BOUCLE_mots-art(MOTS){id_article}{", "}>
#TITRE
</BOUCLE_mots-art>
">
</B_mots-art>
</BOUCLE_art>
Notons que seuls les objets article, brève, site et rubrique sont concernés par l'attribution de mots-clés spécifiques à
la balise keywords. Les autres objets devront être indexés à l'aide des mots-clés associés au groupe
squelette_header.
Structure conditionnelle : algorithme permettant de tenir compte du contexte
Avant d'exposer le contenu du fichier header.html, je propose de décrire la structure conditionelle de ce fichier sous
Copyright © Sarka-SPIP
Page 4/12
Génération automatique des meta-balises
la forme d'un algorithme "maison", plus lisible que les boucles spipiennes. La synthaxe devrait être être
compréhensible à ceux qui connaissent les champs associés aux objets de SPIP :
Copyright © Sarka-SPIP
Page 5/12
Génération automatique des meta-balises
si (contexte = rubrique) alors
titre_rubrique -> TITLE
intro_rubrique -> DESCRIPTION
mots_rubrique -> KEYWORDS
sinon
si (contexte = article) alors
titre_article -> TITLE
intro_article -> DESCRIPTION
mots_article -> KEYWORDS
sinon
si (contexte = breve) alors
titre_breve -> TITLE
intro_breve -> DESCRIPTION
mots_breve -> KEYWORDS
sinon
si (contexte = site) alors
titre_site -> TITLE
descriptif_site -> DESCRIPTION
mots_site -> KEYWORDS
sinon
description[SQUELETTE_HEADER] -> DESCRIPTION
si (contexte = auteur) alors
nom_auteur -> TITLE
bio_auteur -> DESCRIPTION
sinon
si (contexte = mot) alors
titre_mot -> TITLE
descriptif_mot -> DESCRIPTION
fin si
fin si
fin si
fin si
fin si
fin si
Copyright © Sarka-SPIP
Page 6/12
Génération automatique des meta-balises
mots[SQUELETTE_HEADER] -> KEYWORDS
Copyright © Sarka-SPIP
Page 7/12
Génération automatique des meta-balises
Il convient ensuite d'ajouter l'enrobage html qui convient (balises HEAD), et les balises constantes (HTTP-EQUIV,
lien vers la feuille de style, définition de l'icône). Traduit sous forme de boucle spipiennes, cet algorithme devient
ainsi :
<B_rub>
<BOUCLE_rub(RUBRIQUES){id_rubrique}>
[#NOM_SITE_SPIP] [(#TITRE|textebrut|supprimer_numero)]
[]
<B_mots-rub>
<BOUCLE_mots-rub(MOTS){id_rubrique}{", "}>
#TITRE
</BOUCLE_mots-rub>
">
</B_mots-art>
</BOUCLE_rub>
</B_rub>
<B_art>
<BOUCLE_art(ARTICLES){id_article}>
[#NOM_SITE_SPIP] [(#TITRE|textebrut|supprimer_numero)]
[]
<B_mots-art>
<BOUCLE_mots-art(MOTS){id_article}{", "}>
#TITRE
</BOUCLE_mots-art>
">
</B_mots-art>
</BOUCLE_art>
</B_art>
<B_bre>
<BOUCLE_bre(BREVES){id_breve}>
[#NOM_SITE_SPIP] [(#TITRE|textebrut|supprimer_numero)]
[]
<B_mots-bre>
<BOUCLE_mots-bre(MOTS){id_breve}{", "}>
#TITRE
</BOUCLE_mots-bre>
Copyright © Sarka-SPIP
Page 8/12
Génération automatique des meta-balises
">
</B_mots-bre>
</BOUCLE_bre>
</B_bre>
<B_sit>
<BOUCLE_sit(SITES){id_syndic}>
[#NOM_SITE_SPIP] <:sur_web:>[ : (#TITRE)]
[]
<B_mots-sit>
<BOUCLE_mots-sit(MOTS){id_syndic}{", "}>
#TITRE
</BOUCLE_mots-sit>
">
</B_mots-sit>
</BOUCLE_sit>
</B_sit>
<B_aut>
<BOUCLE_aut(AUTEURS){id_auteur}>
[#NOM_SITE_SPIP] <:auteur:>[ : (#NOM)]
[]
</BOUCLE_aut>
</B_aut>
<B_mot>
<BOUCLE_mot(MOTS){id_mot}>
[#NOM_SITE_SPIP] <:mots_clefs:>[ : (#TITRE)]
[]
</BOUCLE_mot>
</B_mot>
[#NOM_SITE_SPIP]
<//B_mot>
<//B_aut>
<BOUCLE_description-global(GROUPES_MOTS){titre=squelette_header}>
</BOUCLE_description-global>
<//B_sit>
<//B_bre>
Copyright © Sarka-SPIP
Page 9/12
Génération automatique des meta-balises
<//B_art>
<//B_rub>
<BOUCLE_mots-global(GROUPES_MOTS){titre=squelette_header}>
<BOUCLE_keywords-site(MOTS){id_groupe}{par titre}{", "}>
#TITRE
</BOUCLE_keywords-site>">
</BOUCLE_mots-global>
Pour créer du code html à peu près propre, les retours-chariot et l'indentation ont dû être supprimé du fichier
header.html utilisé par le squelette : le résultat est donc presque illisible, mais fonctionnel.
Inclusion de header.php3 dans les pages du squelette
Le fichier header.html doit être associé au fichier header.php3 pour que ce bloc de code soit inclus dans toutes les
pages du squelette. Ces deux fichiers doivent être chargés dans le répertoire /squelette-sarka-spip/inclusions/, et
le fichier header.php3 contient les lignes suivant :
<?php
$fond = "inclusions/header";
$delais = 24 * 3600;
include ("inc-public.php3");
?>
L'en-tête des pages principales du squelette (cf. liste proposé dans le chapitre fichiers affectés doit inclure le fichier
header.php3 grâce aux lignes suivantes :
Copyright © Sarka-SPIP
Page 10/12
Génération automatique des meta-balises
[...]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<INCLURE(inclusions/header.php3){id_article}>
[...]
Copyright © Sarka-SPIP
Page 11/12
Génération automatique des meta-balises
[1] Les meta-balises, ou meta-tags, sont des balises permettant de décrire le contenu d'une page html. Elles sont rédigées dans l'en-tête (head)
du fichier html
Copyright © Sarka-SPIP
Page 12/12

Documents pareils