PluXml.org

Blog ou CMS à l'Xml

Vous n'êtes pas identifié(e).

#1 23/02/2013 18:58:14

P3ter
Pluxml Staff
Lieu : Ile De France
Inscription : 17/10/2011
Messages : 269
Site Web

plxRecord_arts->loop() sur une catégorie

Bonjour,

Je cherche à afficher des articles de différentes catégories sur home.php, mais avec un affichage différents par catégorie.

Exemple :

Catégorie 1 :
- Titre de l'article
- Date de publication
- Tags

Catégorie 2 :
- Titre de l'article
- Date de publication
- Contenu du chapo

Exemple de code que j'utilise :

<?php while($plxShow->plxMotor->plxRecord_arts->loop()): ?>
<?php if ($plxShow->plxMotor->plxRecord_arts->f('categorie')=='001'): ?>
    <article role="article">
	<div class="preview">
		<?php $plxShow->artCat(); ?>
		<?php $plxShow->artTitle('link'); ?>
	</div>	
    </article>
<?php endif; ?>
<?php endwhile; ?>

Mais ça ne fonctionne pas correctement : si l'article à plusieurs catégories il n'est pas affiché (normal car le if test une égalité stricte).
Comment faire pour afficher tous les articles qui font au moins partie de la catégorie '001' ?


PluXml sur Twitter : @pluxml
PluXml sur Google+ : +pluXml
--
Mon Twitter : @p3terfr
Mon blog : p3ter.fr

Hors ligne

#2 23/02/2013 19:06:30

Stéphane
Responsable du projet
Lieu : pas loin de Metz
Inscription : 07/08/2007
Messages : 6 117
Site Web

Re : plxRecord_arts->loop() sur une catégorie

Salut P3ter
Essaye ça:

<?php while($plxShow->plxMotor->plxRecord_arts->loop()): ?>
<?php if(in_array('001', $plxShow->artCatIds)): ?>
    <article role="article">
	<div class="preview">
		<?php $plxShow->artCat(); ?>
		<?php $plxShow->artTitle('link'); ?>
	</div>	
    </article>
<?php endif; ?>
<?php endwhile; ?>

Mes articles et tutoriels pour PluXml
Pluxopolis mon site sur PluXml, mais pas seulement...
Twitter: @pluxopolis

Hors ligne

#3 23/02/2013 19:32:38

danielsan
Membre
Lieu : Montpellier
Inscription : 18/07/2011
Messages : 1 274

Re : plxRecord_arts->loop() sur une catégorie

n'oublies pas d'éventuellement stopper l'affichage s'il y en a trop et de mettre un lien du type "Voir tous les articles de la catégorie" car la pagination de fonctionne pas dans ce cas ;p


Que l'inspiration soit avec vous, à jamais !

Hors ligne

#4 23/02/2013 20:15:09

P3ter
Pluxml Staff
Lieu : Ile De France
Inscription : 17/10/2011
Messages : 269
Site Web

Re : plxRecord_arts->loop() sur une catégorie

Merci beaucoup pour votre aide

@Stephane : avec ton code, aucun n'article ne s'affiche.

@danielsan : effectivement, je n'y avais pas pensé. Pour n'affiche que 3 articles, j'utilise un incrément "i" :

<?php $i=1; ?>
<?php while($plxShow->plxMotor->plxRecord_arts->loop() AND $i<4): ?>
...
<?php $i++; ?>
<?php endwhile; ?>

PluXml sur Twitter : @pluxml
PluXml sur Google+ : +pluXml
--
Mon Twitter : @p3terfr
Mon blog : p3ter.fr

Hors ligne

#5 23/02/2013 21:18:33

Stéphane
Responsable du projet
Lieu : pas loin de Metz
Inscription : 07/08/2007
Messages : 6 117
Site Web

Re : plxRecord_arts->loop() sur une catégorie

oups désolé.
là ça devrait etre mieux

<?php while($plxShow->plxMotor->plxRecord_arts->loop()): ?>
<?php if(in_array('001', $plxShow->artActiveCatIds())): ?>
    <article role="article">
	<div class="preview">
		<?php $plxShow->artCat(); ?>
		<?php $plxShow->artTitle('link'); ?>
	</div>	
    </article>
<?php endif; ?>
<?php endwhile; ?>

Mes articles et tutoriels pour PluXml
Pluxopolis mon site sur PluXml, mais pas seulement...
Twitter: @pluxopolis

Hors ligne

#6 24/02/2013 14:32:34

P3ter
Pluxml Staff
Lieu : Ile De France
Inscription : 17/10/2011
Messages : 269
Site Web

Re : plxRecord_arts->loop() sur une catégorie

C'est bon ça marche, merci Stéphane.

Et pour revenir au début de la boucle (et afficher d'autres articles) je fais :

<?php while($plxShow->plxMotor->plxRecord_arts->loop()): ?>
<?php endwhile; ?>

PluXml sur Twitter : @pluxml
PluXml sur Google+ : +pluXml
--
Mon Twitter : @p3terfr
Mon blog : p3ter.fr

Hors ligne

#7 11/03/2013 23:29:33

P3ter
Pluxml Staff
Lieu : Ile De France
Inscription : 17/10/2011
Messages : 269
Site Web

Re : plxRecord_arts->loop() sur une catégorie

Bonsoir,


J'ai une nouvelle question sur plxRecord_arts->loop(). Comment faire pour utiliser la boucle ci-dessous, cette fois, sans prendre en compte la catégorie active ? Je souhaite faire cette boucle dans sidebar.php pour y afficher les derniers articles, peu importe ou on se trouve sur le site.


<?php while($plxShow->plxMotor->plxRecord_arts->loop()): ?>
...
<?php endwhile; ?>

PluXml sur Twitter : @pluxml
PluXml sur Google+ : +pluXml
--
Mon Twitter : @p3terfr
Mon blog : p3ter.fr

Hors ligne

#8 12/03/2013 09:13:29

danielsan
Membre
Lieu : Montpellier
Inscription : 18/07/2011
Messages : 1 274

Re : plxRecord_arts->loop() sur une catégorie

regarde la fonction lastArtList wink


Que l'inspiration soit avec vous, à jamais !

Hors ligne

#9 12/03/2013 11:43:45

P3ter
Pluxml Staff
Lieu : Ile De France
Inscription : 17/10/2011
Messages : 269
Site Web

Re : plxRecord_arts->loop() sur une catégorie

Bonjour,


Oui j'y avait pensé, mais j'ai pas réussi à faire ce que je veux.


Voici mon code avec plxRecord_arts :

<?php $i=1; ?>
<?php while($i<=6 AND $plxShow->plxMotor->plxRecord_arts->loop()): ?>
	<div class="last-col">
		<div class="last-content">	
			<a class="big-link" href="<?php $plxShow->artUrl() ?>">
				<div class="last-info">
					<h2><?php $plxShow->artTitle(); ?></h2>
				</div>
				<?php eval($plxShow->callHook('champArt', 'preview')); ?>
			</a>
		</div>
	</div>
<?php $i++; ?>
<?php endwhile; ?>

Et ce que j'ai essayé avec lastArtlist :

<?php $plxShow->lastArtList(
'
	<div class="last-col">
		<div class="last-content">
			<a class="big-link" href="#art_url" title="#art_title">
				<div class="last-info">
					<h2>#art_title</h2>
				</div>
				<?php eval($plxShow->callHook('champArt', 'preview')); ?>
			</a>
		</div>
	</div>
',3) ?>

Le deuxième code ne fonctionne pas, la page sidebar.php ne s'affiche pas du tout. Je soupçonne le code php au milieu de la fonction lastArtList.


PluXml sur Twitter : @pluxml
PluXml sur Google+ : +pluXml
--
Mon Twitter : @p3terfr
Mon blog : p3ter.fr

Hors ligne

#10 12/03/2013 12:08:45

danielsan
Membre
Lieu : Montpellier
Inscription : 18/07/2011
Messages : 1 274

Re : plxRecord_arts->loop() sur une catégorie

et en remplaçant

<?php eval($plxShow->callHook('champArt', 'preview')); ?>

par

<?php echo $plxShow->plxMotor->plxRecord_arts->f('champArt_preview'); ?>

dans ton premier code ça donne quoi ?

Dernière modification par danielsan (12/03/2013 12:09:01)


Que l'inspiration soit avec vous, à jamais !

Hors ligne

#11 12/03/2013 12:13:52

P3ter
Pluxml Staff
Lieu : Ile De France
Inscription : 17/10/2011
Messages : 269
Site Web

Re : plxRecord_arts->loop() sur une catégorie

J'ai essayé, j'ai le même résultat à savoir que la boucle affiche toujours les derniers articles de la catégorie active. Visible ici : pre.p3ter.fr


PluXml sur Twitter : @pluxml
PluXml sur Google+ : +pluXml
--
Mon Twitter : @p3terfr
Mon blog : p3ter.fr

Hors ligne

#12 26/10/2015 19:30:48

Pierre
Membre
Lieu : La belle province
Inscription : 22/06/2014
Messages : 1 025

Re : plxRecord_arts->loop() sur une catégorie

Je dédouble ici un message déposé dans une rubrique qui a un statut résolu, mon problème étant que la résolution fournie est une solution de rechange qui ne peut être utilisée dans le contexte où je me trouve.

Mon contexte trop long à expliquer me force à utiliser la boucle WHILE mentionnée en début de rubrique.  Je n'ai pas le luxe de pouvoir utiliser la fonction lastArtList, j'ai trop d'opérations à effectuer sur l'enregistrement avant de décider s'il sera affiché ou sauté.
Mes contraintes demandent donc la production et l'affichage d'une page statique qui tourne une boucle WHILE  plxRecord_arts->loop(), comme sur l'accueil ou certaines pages de catégorie un peu plus évoluées, mais qui affiche tous les articles.  J'ai lu et essayé tout ce que j'ai pu trouver mais je frappe un mur.
Je simplifie le sujet pour les besoins de la cause, vous comprenez bien que mon travail n'est pas terminé une fois cet obstacle surmonté.


#titanic {
    float: none;
    bottom: 0;
}

Hors ligne

#13 27/10/2015 08:41:25

Stéphane
Responsable du projet
Lieu : pas loin de Metz
Inscription : 07/08/2007
Messages : 6 117
Site Web

Re : plxRecord_arts->loop() sur une catégorie

@Pierre

Voilà le genre de code que tu peux utiliser dans une page statique pour récupérer les infos sur les articles (récupération de tous les articles publiés dans les catégories actives, tri par date décroissante)

<?php

$plxMotor = plxMotor::getInstance();

$plxGlob_arts = clone $plxMotor->plxGlob_arts;
if($files = $plxGlob_arts->query('/^[0-9]{4}.[home|'.$plxMotor->activeCats.',]*.[0-9]{3}.[0-9]{12}.[a-z0-9-]+.xml$/','art','rsort',0,false,'before')) {

	foreach($files as $filename) {

		$tmp = $plxMotor->parseArticle(PLX_ROOT.$plxMotor->aConf['racine_articles'].$filename);

		plxUtils::debug($tmp);
		
		$art = array(
			'id'		=> $tmp['numero'],
			'url' 		=> $plxMotor->urlRewrite('?article'.intval($tmp['numero']).'/'.$tmp['url']),
			'title' 	=> $tmp['title'],
			'date'		=> $tmp['date'],
			'author'	=> $plxMotor->aUsers[$tmp['author']]['name'],
		);		
		
		plxUtils::debug($art);
	}
}

?>

Mes articles et tutoriels pour PluXml
Pluxopolis mon site sur PluXml, mais pas seulement...
Twitter: @pluxopolis

Hors ligne

#14 27/10/2015 17:46:55

Pierre
Membre
Lieu : La belle province
Inscription : 22/06/2014
Messages : 1 025

Re : plxRecord_arts->loop() sur une catégorie

Ah merci, mais c'est génial quand on sait ce qu'on fait!  Merci de me faire retrouver ma sanité mentale et de me laisser passer au prochain problème.  Ce petit outil passe-partout va sans doute m'être très utile, très souvent.  Merci encore.


#titanic {
    float: none;
    bottom: 0;
}

Hors ligne

#15 02/11/2015 17:23:20

cfdev
Membre
Lieu : Provence
Inscription : 22/07/2011
Messages : 265
Site Web

Re : plxRecord_arts->loop() sur une catégorie

Super ce bout de code!

Peut-on faire la même avec les catégories? pour faire le lien avec les catégories histoire d'avoir les noms et pas des simple numéro et savoir aussi si on la catégorie doit s'afficher sur la page d'accueil.


Vous voulez créer votre plugin pour pluXml? -> spxdatas est fait pour vous !
mcercle - Logiciel de gestion devis/factures/stock !

Hors ligne

#16 03/11/2015 15:05:02

cfdev
Membre
Lieu : Provence
Inscription : 22/07/2011
Messages : 265
Site Web

Re : plxRecord_arts->loop() sur une catégorie

Pour ceux que ça intéresse j'ai recoupé avec

[== PHP ==]
		# categories
		$cats = explode(",", $art['categorie']);
		$showCat = true;
		$artCat ='<ul class="cat_list">';
		foreach($cats as $item) {
			$catArray = $plxMotor->aCats[$item];
			$artCat .= '<li class="cat-'.$item.'">'.$catArray['name'].'</li>';
			//plxUtils::debug($catArray);
			// Si une categorie ne s'affiche pas en page d'accueil
			// on n'affiche pas l'article
			if($catArray['homepage'] == 0){
				$showCat = false;
			}
		}
		$artCat .='</ul>';

pour avoir le nom des catégories.


Vous voulez créer votre plugin pour pluXml? -> spxdatas est fait pour vous !
mcercle - Logiciel de gestion devis/factures/stock !

Hors ligne

Pied de page des forums

A propos Nous soutenir Contact Twitter Google+
Copyright © 2006-2017 PluXml.org, tous droits réservés