Régénérer la liste des tags à partir des articles

LudMacLudMac Member
Hello,

Le code fourni dans l'article du Wiki (http://wiki.pluxml.org/index.php?page=R%C3%A9g%C3%A9n%C3%A9rer+la+liste+des+tags+%C3%A0+partir+des+articles) semble poser des soucis.

J'ai créé la page, je l'ai chargée et 'oups' plus de tags du tout...

Merci pour votre aide
Ludo

Réponses

  • amowebamoweb Member
    Voilà, c'est corrigé. Le code est sur le wiki.
  • apparemment ce code n'est plus bon sous la v5.2
    je suis en train de modifier, via notepad++ les tags des différents pos et cela me rendrait bien service de pouvoir régénérer totalement " au propre " le fichiers tags.xml .... :)
  • bg62bg62 Member
    juin 2014 modifié
    re ... je me retrouve de nouveau avec une sacrée perte de 'tags' mais pas évident cette manip du 'wiki', sûr qu'elle fonctionne encore pour la dernière version de PluXml ???
    ou s'il y a une autre solution = je suis preneur :)
    j'ai suivi le 'wiki' et mis cette page statique avec ce code :
    [== XML ==]
    <?php
    # Régénérer tag.xml : permet de recréer la liste des tags à partir des articles. 
    # révision 1.0 par Amaury
    
    if(!defined('PLX_ROOT')) exit;
    
    global $plxShow;
    
    class art2taglist extends plxMotor
    {
    	public function __construct($plxMotor) {
    		$this->plxMotor = $plxMotor;
    
    	}
    
            function getArtDate($filename) {
                   $artInfos = $this->artInfoFromFilename($filename);
                   return $artInfos['artDate'];
            }
    }
    
    $art2taglist = new art2taglist($plxMotor);
    
    $plxGlob_arts = plxGlob::getInstance(PLX_ROOT.$plxShow->plxMotor->aConf['racine_articles']);
    $aFiles = $plxGlob_arts->query('/[0-9]{4}.*.[a-z0-9-]+.xml$/','art','rsort',0,false,'before');
    
    
    $xml = "<?xml version='1.0' encoding='".PLX_CHARSET."'?>\n";
    
    $xml .= "<document>\n";
    
    if(is_array($aFiles)) { # On a des fichiers
        while(list($k,$v) = each($aFiles)) { # On parcourt tous les fichiers
            $temp = $plxShow->plxMotor->parseArticle(PLX_ROOT.$plxShow->plxMotor->aConf['racine_articles'].$v);
             if( intval(sizeof($plx_arts[$temp['categorie']])) < $artsByCategory OR $artsByCategory == 0) {
    			$plx_arts[$temp['categorie']][] = $temp;
    	}
    
    
        }
        if($plx_arts) { # On a des articles
    		echo "<ul>";
                    # On boucle sur nos articles
    		foreach ($plx_arts as $k => $v) {
    			$cat_num = $k;
    		
    			# On boucle sur les articles de la catégories
    			while(list($null, $art) = each($v)) {
    				$art_num = $art['numero'];
    				$art_url = plxUtils::strCheck(($art['url']));
    				$art_title = plxUtils::strCheck(($art['title']));
    
    				$art_date = $art2taglist->getArtDate($art['filename']);
    
                                    $art_tags = $art['tags'];
    				echo '<li><a href="'.$plxShow->plxMotor->aConf['racine'].'?article'.$art_num.'/'.$art_url.'">'.$art_title. '</a> : ' . $art_tags . '</li>';
                                    $xml .= "<article number='" . $art_num . "' date='" . $art_date . "' active='1'><![CDATA[" . $art_tags . "]]></article>\n";
    			}
    			echo "</ul>";
            }
    
        }
    }
    
    $xml .= "</document>\n";
    plxUtils::write($xml, 'data/tags.xml');             
    
    echo "Fichier tags.xml mis à jour.";
    
    ?>
    
    apparemment le fichier a semble-t-il été de nouveau généré, mais a-t-il tout récupéré ... là, c'est une toute autre question ;)
    ( j'en ai trop .... )
  • bg62bg62 Member

    juste pour info, retesté aujourd'hui, sous PluXml 5.8.5. et fonctionne encore :)

Connectez-vous ou Inscrivez-vous pour répondre.