Comme nous avons pu le lire sur le site d’abondance il est possible de signaler les images dans un sitemap. Nous allons voir comment l’automatiser dans le sitemap de SPIP 2.
(Mise à jour du 22 avril 2010 avec le signalement aussi des vidéos)
(Mise à jour du 3 et 5 mai 2010 avec exemple de fichier sitemap pour spip en PJ et ajout de la fonction url_de_logo dans le fichier mes_fonctions.php)

Suite à l’article du site d’abondance.com, je vous propose un petit tutoriel pour l’automatiser dans le sitemap par défaut proposer dans SPIP 2. Le code doit ressembler à ceci :

<url>
<loc>http://example.com/sample.html</loc>
<image:image>
<image:loc>http://example.com/image.jpg</image:loc>
</image:image>
</url>

Un autre tuto avec d’autres balises à prendre en compte sur le site de webrankinfo.com.

Pour rajouter par exemple l’url du logo des articles dans le sitemap, il suffit de faire une copie dans « squelettes » de l’original « sitemap.xml.html » qui se trouve dans « squelettes-dist ».
Dans le fichier vous cherchez l’emplacement de la boucle « articles » annoncée par [(#REM) Articles ].

[(#REM) Articles ]
[(#SET{recent,[(#VAL{‘Y-m-d H:i:s’}|date{[(#DATE|affdate{U}|moins{86400})]})]})]
<BOUCLE_a(ARTICLES){!par date_modif}{!par date}{0,2000}>[
<url><loc>(#URL_ARTICLE|url_absolue)</loc>[(#DATE_MODIF|>{#GET{recent}}|?{[<lastmod>(#DATE_MODIF|date_iso)</lastmod>]})]</url>]</BOUCLE_a>

Il suffit maintenant de faire un appel du logo :
[<image:image>
<image:loc>#URL_SITE_SPIP/(#LOGO_ARTICLE_RUBRIQUE||url_de_logo)</image:loc>
</image:image>]

Vous verrez apparaître une erreur car la fonction « url_de_logo » n’est pas implantée en natif dans spip. Il vous faut pour cela ajouter au fichier « mes_fonctions.php » dans squelettes (ou créer ce fichier) en y mettant le code suivant :

<?php
function url_de_logo($texte) {
ereg(« src= »([^ »]*) » », $texte, $regs);
return $regs[1];
}
?>

Si l’article possède un logo celui apparaîtra avec son url complète. Si vous voulez ensuite y ajouter toutes les images associées à l’article, il suffit de créer une autre boucle « documents » :

<BOUCLE_mesimages(DOCUMENTS){id_article}{extension==jpg|png|gif}{mode=document}>
<image:image>
<image:loc>[(#URL_DOCUMENT|url_absolue)]</image:loc>
[<image:caption>(#DESCRIPTIF|textebrut)</image:caption>]
[<image:title>(#TITRE|textebrut)</image:title>]
</image:image></BOUCLE_mesimages>

Et voilà le tour est joué ! Encore une fois SPIP est simple à adapter mais pourtant vous allez voir une erreur à l’affichage car le navigateur ne reconnaitra pas la balise <image:image>. Pour cela il faut chager une ligne dans le sitemap.xml.html :

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">

Normalement après ça tout fonctionne…

Pour référencer les vidéos, si comme moi vous passez par un service comme viméo, le tour est un peu plus complexe et je ne suis pas encore certain d’avoir trouver la solution.
Vous pouvez allez voir le modèle à suivre ici sur la page sitemap video de google.
Idem que pour les images ne pas oublier de mentionner la balise vidéo :

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">

Mon code pour le moment en test est le suivant :

    <BOUCLE_video(DOCUMENTS){id_article}{extension==swf}{mode=document}>
<video:video>
<video:content_loc>[(#URL_DOCUMENT|url_absolue)]</video:content_loc>
<video:player_loc allow_embed= »yes » autoplay= »ap=1″>[(#URL_DOCUMENT|url_absolue)]</video:player_loc>
<video:thumbnail_loc>[(#LOGO_DOCUMENT||extraire_attribut{src}|url_absolue)]</video:thumbnail_loc>
[<video:description>(#DESCRIPTIF|textebrut)</video:description>]
[<video:title>(#TITRE|textebrut)</video:title>]
</video:video></BOUCLE_video>

J’ai plus qu’une hésitation sur le content_loc et le player_loc par rapport à viméo. Pour une vidéo hébergé chez soi il suffit de donner l’url du player et l’url de la vidéo/