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