Article non affiché dans catégorie.php

flipflipflipflip Member
Bonjour,

Pour construire un menu j'utilise ce code dans mon template :
[== PHP ==]
<nav class="grid nav">			
	<div class="col sml-hide sml-centered med-10 med-show med-centered lrg-10 lrg-show lrg-centered">
		<ul class="menu expanded">
		<?php		
			$status = $plxShow->catId()=='home'?"active":"noactive";
			echo '	<li class="'.$status.'"><a href="'.$plxMotor->urlRewrite().'" title="Accueil">Accueil</a></li>';
			foreach($plxMotor->aCats as $k=>$v) {
				if($v['articles'] > 0 AND $v['active'] == '1' AND $v['menu'] == 'oui') {
					$cat_id = intval($k);
					$status = $plxShow->catId()==$cat_id?"active":"noactive";
					echo '<li id="cat-'.$cat_id.'" class="'.$status.'"><a href="'.$plxMotor->urlRewrite('?categorie'.$cat_id.'/'.$v['url']).'" title="'.$v['name'].'">'.$v['name'].'</a>';
					echo '<ul>';
					$motif = '/^[0-9]{4}.((?:[0-9]|home|,)*(?:'.$k.')(?:[0-9]|home|,)*).[0-9]{3}.[0-9]{12}.[a-z0-9-]+.xml$/';
					$sort = 'rsort';
					$max = 9999;
							
					$plxGlob_arts = clone $plxMotor->plxGlob_arts;
					if($aFiles = $plxGlob_arts->query($motif, 'art', $sort, 0, $max, 'before')) {								
						foreach ($aFiles as $v) {
							$art = $plxMotor->parseArticle(PLX_ROOT.$plxMotor->aConf['racine_articles'].$v);
							$url = $plxMotor->urlRewrite('?article'.intval($art['numero']).'/'.$art['url']);
							$art_id = intval($art['numero']);
							$status = $plxShow->artId()==$art_id?"active":"noactive";
							echo '<li id="'.$art_id.'" class="text-left '.$status.'"><a href="'.$url.'" title="'.$art['title'].'">'.$art['title'].'</a></li>';
						}
					}
					echo '</ul>';
					echo '</li>';
				}
			}
			?>
		</ul>
	</div>
</nav>	

Ce code me liste les catégories actives et les articles qui y sont attachés. Lorsque je clic sur une catégorie j'arrive sur la page categorie.php qui est sensé me lister les articles contenue celle-ci, sauf que dans ce cas non. Le premier article n'est plus affiché. Pour confirmer mes doutes j'ai remis le thème par défaut et magie le premier article est de nouveau listé.

J'ai un string de l'array

Réponses

  • Est-ce que tu peux nous mettre un exemple de rendu de ton menu, avec les liens générés ? C'est peut-être un défaut d'index ???
  • flipflipflipflip Member
    avril 2015 modifié
    Salut,

    Désolé pour le temps de réponse.

    Je vois pas trop à quoi va te servir la sortie html mais pourquoi pas. C'est la version html depuis l'url 4.0/index.php?categorie1/la-societe qui correspond à une catégorie.
    [== HTML ==]
    <nav class="grid nav">			
    	<div class="col sml-hide sml-centered med-10 med-show med-centered lrg-10 lrg-show lrg-centered">
    		<ul class="menu expanded">
    			<li class="noactive"><a href="4.0/" title="Accueil">Accueil</a></li>
    			<li id="cat-1" class="active"><a href="4.0/index.php?categorie1/la-societe" title="La société">La société</a>
    				<ul>
    					<li id="7" class="text-left active"><a href="4.0/index.php?article7/presentation" title="Présentation">Présentation</a></li>
    					<li id="8" class="text-left noactive"><a href="4.0/index.php?article8/organiganisation" title="Organiganisation">Organiganisation</a></li>
    					<li id="13" class="text-left noactive"><a href="4.0/index.php?article13/histoire" title="Histoire">Histoire</a></li>
    					<li id="14" class="text-left noactive"><a href="4.0/index.php?article14/revue-de-presse" title="Revue de presse">Revue de presse</a></li>
    				</ul>
    			</li>
    			<li id="cat-2" class="noactive"><a href="4.0/index.php?categorie2/le-savoir-faire" title="Le savoir faire">Le savoir faire</a>
    				<ul>
    					<li id="9" class="text-left noactive"><a href="4.0/index.php?article9/une-connaissance-du-marche" title="Une connaissance du marché">Une connaissance du marché</a></li>
    					<li id="15" class="text-left noactive"><a href="4.0/index.php?article15/partenairiat-fournisseurs" title="Partenairiat fournisseurs">Partenairiat fournisseurs</a></li>
    					<li id="16" class="text-left noactive"><a href="4.0/index.php?article16/structure-marketing" title="Structure marketing">Structure marketing</a></li>
    					<li id="17" class="text-left noactive"><a href="4.0/index.php?article17/logistique" title="Logistique">Logistique</a></li>
    				</ul>
    			</li>
    			<li id="cat-3" class="noactive"><a href="4.0/index.php?categorie3/les-produits" title="Les produits">Les produits</a>
    				<ul>
    					<li id="18" class="text-left noactive"><a href="4.0/index.php?article18/le-catalogue" title="Le catalogue">Le catalogue</a></li>
    					<li id="19" class="text-left noactive"><a href="4.0/index.php?article19/documentations" title="Documentations">Documentations</a></li>
    					<li id="20" class="text-left noactive"><a href="4.0/index.php?article20/fournisseurs-partenaires" title="Fournisseurs partenaires">Fournisseurs partenaires</a></li>
    					<li id="21" class="text-left noactive"><a href="4.0/index.php?article21/distributeurs" title="Distributeurs">Distributeurs</a></li>
    				</ul>
    			</li>
    			<li id="cat-4" class="noactive"><a href="4.0/index.php?categorie4/les-hommes" title="Les hommes">Les hommes</a>
    				<ul>
    					<li id="22" class="text-left noactive"><a href="4.0/index.php?article22/lesprit" title="L’esprit">L’esprit</a></li>
    					<li id="23" class="text-left noactive"><a href="4.0/index.php?article23/recrutement" title="Recrutement">Recrutement</a></li>
    				</ul>
    			</li>
    		</ul>
    	</div>
    </nav>	
    

    Sur ma page categorie.php j'ai ajouté un print_r($plxShow) après la génération de mon menu. Je recherche plxRecord_arts et j'ai bien un enregistrement qui correspond à l'article qui ne s'affiche pas.
    [plxRecord_arts] => plxRecord Object
                    (
                        [size] => 4
                        [i] => 0
                        [result] => Array
                            (
                                [0] => Array
                                    (
                                        [title] => Présentation
                                        [allow_com] => 
                                        [template] => article.php
                                        [chapo] => ...
                                        [content] => ...
                                        [tags] => 
                                        [meta_description] => 
                                        [meta_keywords] => 
                                        [title_htmltag] => 
                                        [filename] => ./data/articles/0007.001.001.201504190005.presentation.xml
                                        [numero] => 0007
                                        [author] => 001
                                        [categorie] => 001
                                        [url] => presentation
                                        [date] => 201504190005
                                        [nb_com] => 0
                                    )
    

    J'ai un string de l'array

  • StéphaneStéphane Member, Former PluXml Project Manager
    @flipflip: tu as la variable $v qui est utilisée 2 fois dans les 2 boucles foreach imbriquées. Tu peux lui donner un autre nom. Pas que ça va résoudre le problème, mais pour que ce soit + propre. on sait jamais...

    Consultant PluXml

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

  • Et le code de ta page categorie.php ? Quelles sont les différences avec le thème par défaut ?
  • Stéphane : effectivement je n'avais pas vu. Bon ça règle pas le problème mais c'est tout de même mieux.

    Jerry Wham : j'utilise le même code pour la partie php que celui par défaut, c'est juste cosmétique et adapté pour PluCss
    [== HTML ==]
    <?php include(dirname(__FILE__).'/header.php'); ?>
    
    <section class="grid">
    	<div class="col sml-10 sml-centered med-10 med-centered lrg-10 lrg-centered home">
    	
    <?php include(dirname(__FILE__).'/sidebar.php'); ?>
    	
    		<section class="col sml-12 med-10 lrg-10 content">	
    			<h1><?php $plxShow->catName(); ?></h1>
    			<?php $plxShow->catDescription(' : #cat_description'); ?>
    		
    			<?php while($plxShow->plxMotor->plxRecord_arts->loop()): ?>
    		
    			<article id="post-<?php echo $plxShow->artId(); ?>">
    				<header>
    					<h2><?php $plxShow->artTitle('link'); ?></h2>
    				</header>
    		
    				<section>
    					<?php $plxShow->artChapo('Lire la suite...', false); ?>
    				</section>
    		
    			</article>
    		
    			<?php endwhile; ?>
    		
    			<div id="pagination">
    				<?php $plxShow->pagination(); ?>
    			</div>
    		
    		</section>
    	</div>
    </section>
    
    <?php include(dirname(__FILE__).'/footer.php'); ?>
    
    

    J'ai un string de l'array

  • Bonjour,

    J'ai enfin trouvé un moment pour me remettre sur ce problème. Donc c'est à cause de la génération de mon menu de navigation qui utilise ce code
    <nav class="grid nav">			
    				<div class="col sml-hide sml-centered med-10 med-show med-centered lrg-10 lrg-show lrg-centered">
    					<ul class="menu expanded">
    					<?php		
    					
    					$status = $plxShow->catId()=='home'?"active":"noactive";
    					echo '	<li class="'.$status.'"><a href="'.$plxMotor->urlRewrite().'" title="Accueil">Accueil</a></li>';
    					foreach($plxMotor->aCats as $k=>$v) {
    						if($v['articles'] > 0 AND $v['active'] == '1' AND $v['menu'] == 'oui') {
    							$cat_id = intval($k);
    							$status = $plxShow->catId()==$cat_id?"active":"noactive";
    							echo '<li id="cat-'.$cat_id.'" class="'.$status.'"><a href="'.$plxMotor->urlRewrite('?categorie'.$cat_id.'/'.$v['url']).'" title="'.$v['name'].'">'.$v['name'].'</a>';
    							echo '<ul>';
    							$motif = '/^[0-9]{4}.((?:[0-9]|home|,)*(?:'.$k.')(?:[0-9]|home|,)*).[0-9]{3}.[0-9]{12}.[a-z0-9-]+.xml$/';
    							$sort = 'rsort';
    							$max = 9999;
    							
    							$plxGlob_arts = clone $plxMotor->plxGlob_arts;
    							if($aFiles = $plxGlob_arts->query($motif, 'art', $sort, 0, $max, 'before')) {								
    								foreach ($aFiles as $f) {
    									$art = $plxMotor->parseArticle(PLX_ROOT.$plxMotor->aConf['racine_articles'].$f);
    									$url = $plxMotor->urlRewrite('?article'.intval($art['numero']).'/'.$art['url']);
    									$art_id = intval($art['numero']);
    									$status = $plxShow->artId()==$art_id?"active":"noactive";
    									echo '<li id="'.$art_id.'" class="text-left '.$status.'"><a href="'.$url.'" title="'.$art['title'].'">'.$art['title'].'</a></li>';
    								}
    							}
    							echo '</ul>';
    							echo '</li>';
    						}
    					}
    
    					?>
    					</ul>
    				</div>
    			</nav>
    

    Mais pour le moment je n'ai pas trouvé la provenance du problème dans ce code.

    J'ai un string de l'array

  • Personne n'a une petite piste ?

    J'ai un string de l'array

  • le problème vient de l'appel de $plxShow->artId() qui déplace l'index de la liste d'article
    une solution serait peut-être de faire le teste uniquement en mode article donc remplacer la ligne "$status = $plxShow->artId() ... " par ça :
                                $status = "noactive";
                                
                                if (    ("article" === $plxMotor->mode)
                                    &&  ($plxShow->artId() === $art_id)
                                ) {
                                    $status = "active";
                                }
    
  • Parfait ça marche.

    Merci.

    J'ai un string de l'array

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