menu de tous les articles d'une cathégorie

bonjour

je suis en train de m'arranger mon ptit site avec pluxml et j'essai de faire un menu de tous les articles de chaque cathégorie.
Ca marche très bien dans la page cathégorie mais pas dans article.
bref je voulais bidouiller a partir de cela:
http://wiki.pluxml.org/?page=Lister%20tous%20les%20articles%20par%20cat%C3%A9gorie%20dans%20une%20page%20statique

le probleme c'est que je dois recuperer l'identifiant de la cathegorie.
et c'est la que je bloque:
$cat = $plxShow->catId();
qui m'affiche l'id de la cathégorie mais ne l'enregistre pas dans la variable
donc y a t'il un moyen de recuperer l'id de la cathégorie ou quelqu'un a t'il deja fais ce menu.

merci

Réponses

  • bon j'ai finalement reussi en allant trifouiller les classes
    c'est plutot crados mais si ca interressse quelqu'un:

    j'ai donc rajouté une fonction a la classe plxshow
    function returncatid() {
    
    
    
    		# On va verifier que la categorie existe en mode categorie
    
    		if($this->plxMotor->mode == 'categorie' AND isset($this->plxMotor->aCats[ $this->plxMotor->cible ]))
    
    			$cat = intval($this->plxMotor->cible);
    
    		
    
    		# On va verifier que la categorie existe en mode article
    
    		elseif($this->plxMotor->mode == 'article' AND isset($this->plxMotor->aCats[ $this->plxMotor->plxRecord_arts->f('categorie') ]))
    
    			$cat =  intval($this->plxMotor->plxRecord_arts->f('categorie'));
    
    		
    
    		else
    
    			$cat =  '0';
    
    		return $cat;
    
    		
    
    	}
    
    créé le fichier menuart.php
    <?php
    
    if(!defined('PLX_ROOT')) exit;
    
    global $plxShow;
    $cat = '00'.$plxShow->returncatid();
    $plxGlob_arts = & new plxGlob(PLX_ROOT.$plxShow->plxMotor->aConf['racine_articles']);
    $aFiles = $plxGlob_arts->query('/[0-9]{4}.'.$cat.'.[0-9]{12}.[a-z0-9-]+.xml$/','sitemap','rsort');
    # On parse les fichiers
    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);
    		$plx_arts[$temp['categorie']][] = $temp;
        }
        if($plx_arts) { # On a des articles
    		ksort($plx_arts);
            # On boucle sur nos articles
    		foreach ($plx_arts as $k => $v) {
    		
    			usort($v, create_function('$a, $b', 'return strcmp($b["date"], $a["date"]);'));
    		
    			echo "<ul>";
    			# On boucle sur les articles de la categories
    			while(list($null, $art) = each($v)) {
    		
    				$art_num = intval($art['numero']);
    				$art_url = htmlspecialchars($art['url'],ENT_QUOTES,PLX_CHARSET);
    				$art_title = htmlspecialchars($art['title'],ENT_QUOTES,PLX_CHARSET);
    				echo '<li><a href="'.$plxShow->plxMotor->aConf['racine'].'?article'.$art_num.'/'.$art_url.'">'.$art_title.'</a></li>'; 
    			}
    			echo "</ul>";
            }
    
        }
    }
    ?>
    
    et il reste plus qu'a l'inclure dans cathegorie et article
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour Pops

    Ci dessous le code de la fonction catId telle qu'elle est sera dispo dans la version 4.2
    function catId() {
    
    		# On va verifier que la categorie existe en mode categorie
    		if($this->plxMotor->mode == 'categorie' AND isset($this->plxMotor->aCats[ $this->plxMotor->cible ]))
    			return intval($this->plxMotor->cible);
    		# On va verifier que la categorie existe en mode article
    		if($this->plxMotor->mode == 'article' AND isset($this->plxMotor->aCats[ $this->plxMotor->plxRecord_arts->f('categorie') ]))
    			return intval($this->plxMotor->plxRecord_arts->f('categorie'));
    		# On va vérifier si c'est la catégorie home
    		if($this->plxMotor->mode == 'categorie' OR $this->plxMotor->mode == 'home' OR $this->plxMotor->mode == 'article')
    			return 'home';
    	}
    
    dans ton code de menuart.php
    la ligne
    $cat = '00'.$plxShow->returncatid();
    
    posera problème si tu as plus de 10 categories

    la bonne façon de faire dans ton code est :
    $cat = str_pad(.$plxShow->returncatid(),3,'0',STR_PAD_LEFT);
    
    ou
    $cat = str_pad(.$plxShow->catId(),3,'0',STR_PAD_LEFT);
    
    si tu utilises la fonction catId() donnée au dessus

    Stéphane

    Consultant PluXml

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

  • merci, ca aurai pu être génant par la suite.

    par contre tu as mis un point en trop
    $cat = str_pad($plxShow->returncatid(),3,'0',STR_PAD_LEFT);
    
  • StéphaneStéphane Member, Former PluXml Project Manager
    Oui effectivement.
    Merci pour la correction

    Consultant PluXml

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

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