sitemap pour google images

bonjour,
maintenant que nous connaissons les infos données par google:
http://blog.unesourisetmoi.info/?article468/le-sitemap-est-mort-vive-le-sitemap-nouveautes-pour-les-images-et-fichiers-txt
comment faire pour générer un sitemap qui pourrait bénéficier de ces nouvelles fonctionnalités ?
bien que le script ne soir pas à dominante 'images', ce serait toujours ça de plus, voire même à le mettre en version "définitive" ...
@+
bg

Réponses

  • amowebamoweb Member
    En effet ce serrait bien de lister les images aussi. Cela me semble cependant délicats : il faut lister les images correspondant à la page. Comme on le vois dans l'exemple.
    <?xml version="1.0" encoding="UTF-8"?>
      <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
       xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
      <url>
        <loc>http://example.com/sample.html</loc>
        <image:image>
            <image:loc>http://example.com/image.jpg</image:loc>
        </image:image>
      </url>
    </urlset>
    
    Il faudrait donc ajouter dans la boucle des articles un système qui fasse la liste des images contenu dans l'article. Pour cela il faut repérer les <?img pour lire le contenu de la balise src.
    # On boucle sur nos articles
    while($plxRecord_arts->loop()) {
    
    Je ne pense pas finalement que cela soit très compliqué, par contre cela peut ralentir la génération de sitemap.
  • amowebamoweb Member
    Voilà, je viens de coder un petit truc. Dans le fichier sitemap.php il faut modifier la ligne :
    <urlset xmlns="http://www.google.com/schemas/sitemap/0.9">
    
    Ensuite il faut modifier la boucle des traitement des articles :
    # On boucle sur nos articles
    		while($plxRecord_arts->loop()) {
    			echo "\n";
    			echo "\t<url>\n";
    			echo "\t\t<loc>".$plxMotor->racine."?article".$num."/".plxUtils::strCheck($plxRecord_arts->f('url'))."</loc>\n"; 
    			echo "\t\t<lastmod>".$plxRecord_arts->f('date')."</lastmod>\n";
    			echo "\t\t<changefreq>monthly</changefreq>\n";
    			echo "\t\t<priority>0.5</priority>\n";
    			
    			$article = file_get_contents($plxMotor->racine."?article".$num."/".plxUtils::strCheck($plxRecord_arts->f('url')));
    
                            # Regex issus de http://www.sunyday.net/article-PHP-RegEx-parsers-les-URL-d-une-page.html
    			$RegEx = '#<img(\s)*(src|SRC)(\s)*=(\s)*[\"|\'](.*?)[\"|\'](.*?)>#is';
    			preg_match_all($RegEx,$article,$Results,PREG_PATTERN_ORDER);  
    			foreach ($Results[5] as $url) {
    				$ext = strtolower(strrchr(basename($url),'.'));
    				if(in_array($ext, array('.gif', '.jpg', '.png', '.tb'))) {
    					echo "\t\t<image:image>\n";
    					# Le fichier est un aperçu utilise liste l'image en taille réelle.
    					if($ext = '.tb') $url = substr($url, 0, sizeof($url)-4);
    					echo "\t\t\t<image:loc>" . $url . "</image:loc>\n";
    					echo "\t\t</image:image>\n";
    				}
    			}
    		}
    
    J'espère avoir répondu à ta question.
  • bg62bg62 Member
    merci, vais tester tout ça et je vous fait le retour
    @+
  • bg62bg62 Member
    j'ai modifié la première ligne et placé ton code en bas de page, juste avant :
    "</urlset>"
    et j'ai ce message d'erreurs :
    "Erreur d'analyse XML : préfixe non lié à un espace de noms
    Emplacement : http://localhost/unesourisetmoi.info/eric/sitemap.php
    Numéro de ligne 325, Colonne 3 : <image:image>
    ^"

    j'ai donc ré_essayé en remplaçant
    " # On boucle sur nos articles
    # while($plxRecord_arts->loop()) {
    # $num = intval($plxRecord_arts->f('numero'));
    # echo "\n";
    # echo "\t<url>\n";
    # echo "\t\t<loc>".$plxMotor->racine."?article".$num."/".plxUtils::strCheck($plxRecord_arts->f('url'))."</loc>\n";
    # echo "\t\t<lastmod>".$plxRecord_arts->f('date')."</lastmod>\n";
    # echo "\t\t<changefreq>monthly</changefreq>\n";
    # echo "\t\t<priority>0.5</priority>\n";
    # echo "\t</url>\n";
    # }
    #}
    #}
    "
    par ton code mais cela me donne toujours une erreur ...
    que doit-on remplacer par quoi et à quel endroit ?
    @+
Connectez-vous ou Inscrivez-vous pour répondre.