le sitemap n'intègre plus les articles dans la V5 ?

Bonjour, je viens de mettre à jour ma version de pluxml qui était en version 4.3.1 juste avant.
Voici un des problèmes que je constate et qui est là même lorsque j'essaye avec une nouvelle version vierge (nouveau répertoire de test) :
le sitemap.php n'intègre plus les articles comme c'était le cas dans la 4.3.1 (ou 4.3.2 j'imagine), est-ce un bug connu ? corrigé ?
Merci pour vos réponses :)

Réponses

  • FrédéricFrédéric Member
    juillet 2010 modifié
    Le sitemap ne propose uniquement les liens de pages de ton site si je ne m'abuse.

    Personnellement je n'est jamais vus lister mes articles a moins que tu ne confonde avec les Feeds ?
  • zetraderzetrader Member
    juillet 2010 modifié
    hello, sous la version 4.3.1 j'avais la liste des articles dans le sitemap, le site était bcp + long que ça, là j'ai juste les pages statiques + les catégories dans le sitemap.
    Dans la liste des articles du feed il n'y a pas la totalité des articles, j'ai fait la migration aujourd'hui, ce matin encore je voyais dans le sitemap.php qu'il y avait les articles.
  • Si tu veux je peux essayer d'uploader dans un répertoire de mon site la version 4.3.1 de mon blog (j'avais sauvegardé dans un répertoire avant de tenter la migration).
    Normalement j'ai juste à uploader la sauvegarde et indiquer depuis le panneau d'administration le fait que l'url du blog est dans domaine.com/répertoire au lieu de domaine.com, non ?
    Souhaites-tu que je fasse ce test pour te montrer ?
  • Salut Zetrader,
    Ton fichier sitemap.php liste uniquement les pages statiques et les catégories.

    Je pense qu'il n'est pas à jours, car nous avons modifié la façon d'écrire les nom d'articles. L'ancienne version du fichier sitemap.php n'affiche pas les articles venant de la version 5.0.
    Essaie de le mettre à jours. Si ça ne fonctionne pas n'hésite pas à nous le faire savoir.
  • Bonjour amoweb, j'avais supprimé le sitemap.php de l'ancienne version et à la place j'ai uploadé la version du sitemap.php de la version 5 téléchargée ce matin.
    J'ai essayé de suivre la procédure "propre" de mise à jour (suppression des fichiers de l'ancienne version exceptée les dossiers data & themes", puis upload des nouveaux fichiers).
    J'ai ensuite lancé le répertoire update et suivi la procédure de migration qui a fonctionné.
    Voici le code mon ancien sitemap.php & nouveau sitemap.php
    Version 4.3.1 :
    <?php
    # ------------------ BEGIN LICENSE BLOCK ------------------
    #
    # This file is part of PluXml : http://pluxml.org/?categorie3/a-propos-de-pluxml.
    #
    # Copyright (c) 2008-2009 Florent MONTHEL and contributors
    # Copyright (c) 2006-2008 Anthony GUERIN
    # Licensed under the GPL license.
    # See http://www.gnu.org/licenses/gpl.html
    #
    # ------------------- END LICENSE BLOCK -------------------
    
    define('PLX_ROOT', './');
    define('PLX_CORE', PLX_ROOT.'core/');
    define('PLX_CONF', PLX_ROOT.'data/configuration/parametres.xml');
    
    # On verifie que PluXml est installé
    if(!file_exists(PLX_CONF)) {
    	header('Location: '.PLX_ROOT.'install.php');
    	exit;
    }
    
    # On inclut les librairies nécessaires
    include_once(PLX_ROOT.'config.php');
    include_once(PLX_CORE.'lib/class.plx.date.php');
    include_once(PLX_CORE.'lib/class.plx.utils.php');
    include_once(PLX_CORE.'lib/class.plx.capcha.php');
    include_once(PLX_CORE.'lib/class.plx.erreur.php');
    include_once(PLX_CORE.'lib/class.plx.glob.php');
    include_once(PLX_CORE.'lib/class.plx.record.php');
    include_once(PLX_CORE.'lib/class.plx.motor.php');
    
    # On impose le charset
    header('Content-Type: text/xml; charset='.PLX_CHARSET);
    
    # Creation de l'objet principal et lancement du traitement
    $plxMotor = new plxMotor(PLX_CONF);
    $plxMotor->prechauffage();
    $plxMotor->demarrage();
    
    # Entête XML
    echo '<?xml version="1.0" encoding="'.strtolower(PLX_CHARSET).'" ?>';
    ?>
    <urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
    	<url>
    		<loc><?php echo $plxMotor->racine; ?></loc>
    		<changefreq>weekly</changefreq>
    		<priority>1.0</priority>
    	</url>
    <?php
    # Les pages statiques
    foreach($plxMotor->aStats as $stat_num => $stat_info) {
    	if($stat_info['active'] != 1 OR $stat_info['menu'] != 'oui') continue;
    	echo "\n";
    	echo "\t<url>\n";
    	echo "\t\t<loc>".$plxMotor->racine."?static".intval($stat_num)."/".$stat_info['url']."</loc>\n";
    	echo "\t\t<changefreq>monthly</changefreq>\n";
    	echo "\t\t<priority>0.8</priority>\n";
    	echo "\t</url>\n";
    }
    # Les catégories
    foreach($plxMotor->aCats as $cat_num => $cat_info) {
    	if($cat_info['menu'] != 'oui' OR $cat_info['articles'] == 0) continue;
    	echo "\n";
    	echo "\t<url>\n";
    	echo "\t\t<loc>".$plxMotor->racine."?categorie".intval($cat_num)."/".$cat_info['url']."</loc>\n";
    	echo "\t\t<changefreq>weekly</changefreq>\n";
    	echo "\t\t<priority>0.8</priority>\n";
    	echo "\t</url>\n";
    }
    # Les articles
    $plxGlob_arts = new plxGlob(PLX_ROOT.$plxMotor->aConf['racine_articles']);
    $aFiles = $plxGlob_arts->query('/^[0-9]{4}.([0-9]{3}|home).[0-9]{12}.[a-z0-9-]+.xml$/','art','rsort', 0, false, 'before');
    # On parse les fichiers
    if(is_array($aFiles)) { # On a des fichiers
    	foreach($aFiles as $k=>$v) { # On parcourt tous les fichiers
    		$array[ $k ] = $plxMotor->parseArticle(PLX_ROOT.$plxMotor->aConf['racine_articles'].$v);
    		# On stocke les enregistrements dans un objet plxRecord
    		$plxRecord_arts = new plxRecord($array);
    	}
    	if($plxGlob_arts->count AND $plxRecord_arts->size) { # On a des articles
    		# 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";            
    		}
    	}
    }
    ?>
    </urlset>
    
    Nouvelle version :
    <?php
    # ------------------ BEGIN LICENSE BLOCK ------------------
    #
    # This file is part of PluXml : http://pluxml.org
    #
    # Copyright (c) 2010 Stephane Ferrari and contributors
    # Copyright (c) 2008-2009 Florent MONTHEL and contributors
    # Copyright (c) 2006-2008 Anthony GUERIN
    # Licensed under the GPL license.
    # See http://www.gnu.org/licenses/gpl.html
    #
    # ------------------- END LICENSE BLOCK -------------------
    
    define('PLX_ROOT', './');
    define('PLX_CORE', PLX_ROOT.'core/');
    define('PLX_CONF', PLX_ROOT.'data/configuration/parametres.xml');
    
    # On verifie que PluXml est installé
    if(!file_exists(PLX_CONF)) {
    	header('Location: '.PLX_ROOT.'install.php');
    	exit;
    }
    
    # On inclut les librairies nécessaires
    include_once(PLX_ROOT.'config.php');
    include_once(PLX_CORE.'lib/class.plx.date.php');
    include_once(PLX_CORE.'lib/class.plx.utils.php');
    include_once(PLX_CORE.'lib/class.plx.capcha.php');
    include_once(PLX_CORE.'lib/class.plx.erreur.php');
    include_once(PLX_CORE.'lib/class.plx.glob.php');
    include_once(PLX_CORE.'lib/class.plx.record.php');
    include_once(PLX_CORE.'lib/class.plx.motor.php');
    
    # On impose le charset
    header('Content-Type: text/xml; charset='.PLX_CHARSET);
    
    # Creation de l'objet principal et lancement du traitement
    $plxMotor = new plxMotor(PLX_CONF);
    $plxMotor->prechauffage();
    $plxMotor->demarrage();
    
    # Entête XML
    echo '<?xml version="1.0" encoding="'.strtolower(PLX_CHARSET).'" ?>';
    ?>
    <urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
    	<url>
    		<loc><?php echo $plxMotor->urlRewrite() ?></loc>
    		<changefreq>weekly</changefreq>
    		<priority>1.0</priority>
    	</url>
    <?php
    # Les pages statiques
    foreach($plxMotor->aStats as $stat_num => $stat_info) {
    	if($stat_info['active'] != 1 OR $stat_info['menu'] != 'oui') continue;
    	echo "\n";
    	echo "\t<url>\n";
    	echo "\t\t<loc>".$plxMotor->urlRewrite("?static".intval($stat_num)."/".$stat_info['url'])."</loc>\n";
    	echo "\t\t<changefreq>monthly</changefreq>\n";
    	echo "\t\t<priority>0.8</priority>\n";
    	echo "\t</url>\n";
    }
    # Les catégories
    foreach($plxMotor->aCats as $cat_num => $cat_info) {
    	if($cat_info['menu'] != 'oui' OR $cat_info['articles'] == 0) continue;
    	echo "\n";
    	echo "\t<url>\n";
    	echo "\t\t<loc>".$plxMotor->urlRewrite("?categorie".intval($cat_num)."/".$cat_info['url'])."</loc>\n";
    	echo "\t\t<changefreq>weekly</changefreq>\n";
    	echo "\t\t<priority>0.8</priority>\n";
    	echo "\t</url>\n";
    }
    # Les articles
    $plxGlob_arts = plxGlob::getInstance(PLX_ROOT.$plxMotor->aConf['racine_articles']);
    $aFiles = $plxGlob_arts->query('/^[0-9]{4}.([0-9,|home]*).[0-9]{12}.[a-z0-9-]+.xml$/','art','rsort', 0, false, 'before');
    # On parse les fichiers
    if(is_array($aFiles)) { # On a des fichiers
    	foreach($aFiles as $k=>$v) { # On parcourt tous les fichiers
    		$array[ $k ] = $plxMotor->parseArticle(PLX_ROOT.$plxMotor->aConf['racine_articles'].$v);
    		# On stocke les enregistrements dans un objet plxRecord
    		$plxRecord_arts = new plxRecord($array);
    	}
    	if($plxGlob_arts->count AND $plxRecord_arts->size) { # On a des articles
    		# 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->urlRewrite("?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";            
    		}
    	}
    }
    ?>
    </urlset>
    
    La réécriture d'url est activée, que dois-je changer dans la nouvelle version du sitemap.php ?
  • A noter que le bug survient aussi avec un pluxml tout neuf, cf. répertoire de test avec un pluxml tout neuf :
    http://zetrader.fr/pluxml/
    le sitemap n'intègre plus les articles non plus avec un répertoire de test :
    http://zetrader.fr/pluxml/sitemap.php
    Que ce soit en mode normal (sans réécriture d'url) ou en ayant activé la réécriture d'urls.
  • zetraderzetrader Member
    août 2010 modifié
    J'ai l'impression que c'est peut-être lié au changement de format de fichier .xml pour les articles.
    Sinon comment expliquer que le sitemap recense bien les pages statiques et les catégories ?
    Exemple, avant un fichier article était sous la forme :
    0007.001.201001161209.initiation-bourse-video-sur-le-fonctionnement-des-turbo-warrants.xml
    Ce même fichier article est maintenant sous la forme :
    0007.001.001.201001161209.initiation-bourse-video-sur-le-fonctionnement-des-turbo-warrants.xml
    Hypothèse : peut-être est-ce pour cela que le sitemap ne les voit pas ?

    Dans le sitemap.php de la 4.3.1 (où les articles étaient bien référencés) voici le code que j'avais concernant les articles :
    # Les articles
    $plxGlob_arts = new plxGlob(PLX_ROOT.$plxMotor->aConf['racine_articles']);
    $aFiles = $plxGlob_arts->query('/^[0-9]{4}.([0-9]{3}|home).[0-9]{12}.[a-z0-9-]+.xml$/','art','rsort', 0, false, 'before');
    # On parse les fichiers
    if(is_array($aFiles)) { # On a des fichiers
    	foreach($aFiles as $k=>$v) { # On parcourt tous les fichiers
    		$array[ $k ] = $plxMotor->parseArticle(PLX_ROOT.$plxMotor->aConf['racine_articles'].$v);
    		# On stocke les enregistrements dans un objet plxRecord
    		$plxRecord_arts = new plxRecord($array);
    	}
    	if($plxGlob_arts->count AND $plxRecord_arts->size) { # On a des articles
    		# 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";
    
    Dans le sitemap.php de la V5 (où les articles ne sont pas référencés), voici le code que j'ai concernant les articles :
    # Les articles
    $plxGlob_arts = plxGlob::getInstance(PLX_ROOT.$plxMotor->aConf['racine_articles']);
    $aFiles = $plxGlob_arts->query('/^[0-9]{4}.([0-9,|home]*).[0-9]{12}.[a-z0-9-]+.xml$/','art','rsort', 0, false, 'before');
    # On parse les fichiers
    if(is_array($aFiles)) { # On a des fichiers
    	foreach($aFiles as $k=>$v) { # On parcourt tous les fichiers
    		$array[ $k ] = $plxMotor->parseArticle(PLX_ROOT.$plxMotor->aConf['racine_articles'].$v);
    		# On stocke les enregistrements dans un objet plxRecord
    		$plxRecord_arts = new plxRecord($array);
    	}
    	if($plxGlob_arts->count AND $plxRecord_arts->size) { # On a des articles
    		# 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->urlRewrite("?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";
    
    Je n'utilise plus la réécriture d'urls, comment faire pour que le fichier sitemap.php référence mes articles ?
  • StéphaneStéphane Member, Former PluXml Project Manager
    remplace la ligne
    $aFiles = $plxGlob_arts->query('/^[0-9]{4}.([0-9,|home]*).[0-9]{12}.[a-z0-9-]+.xml$/','art','rsort', 0, false, 'before');
    
    par
    $aFiles = $plxGlob_arts->query('/^[0-9]{4}.([0-9,|home]*).[0-9]{3}.[0-9]{12}.[a-z0-9-]+.xml$/','art','rsort', 0, false, 'before');
    
    Dis moi si c'est bon, je n'est pas testé.

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Stéphane a écrit:
    remplace la ligne
    $aFiles = $plxGlob_arts->query('/^[0-9]{4}.([0-9,|home]*).[0-9]{12}.[a-z0-9-]+.xml$/','art','rsort', 0, false, 'before');
    
    par
    $aFiles = $plxGlob_arts->query('/^[0-9]{4}.([0-9,|home]*).[0-9]{3}.[0-9]{12}.[a-z0-9-]+.xml$/','art','rsort', 0, false, 'before');
    
    Dis moi si c'est bon, je n'est pas testé.
    Bingo ! ça marche :)
    ça référence bien tout cette fois :
    http://zetrader.fr/sitemap.php

    Merci Stéphane, c'était bien ça :)
    Etait-ce un problème de lors de la procédure d'update ou un oubli dans le fichier sitemap.php ?
    Le truc c'est que j'avais le problème aussi sur le répertoire de test tout neuf (donc sans update), et en changeant la ligne sur le sitemap du répertoire de test, là aussi ça résout le problème, ça référence bien tous les articles.
    En tout cas, encore merci ^^
Connectez-vous ou Inscrivez-vous pour répondre.