Tout savoir pour devenir un pro de PluXml, mais pas seulement...

Utiliser la fonction pagination() dans une page statique.


Rédigé par gccyrillus le Aucun commentairee

Dans nos pages:  d'accueil, catégorie, mots clés, archives, ... il y a  une fonction de pagination qui permet de dispatcher l'ensemble des articles correspondant sur une ou plusieurs pages aux besoins.

Cet article vous propose de voir comment intégrer cette fonction dans une page statique en extrayant les articles d'une catégorie et en choisissant le nombre à afficher par pages.

Mais pour quel usage, car PluXml le fait déjà , non ?

Pluxml permet de masquer à l'affichage les liens vers une ou plusieurs catégories, vous pouvez donc cacher une catégorie des menus et la présenter au travers d'une page statique en reconfigurant l'affichage à votre guise.

Pour cela il nous faut déclarer quelques variables pour ensuite filtrer et boucler sur les articles à afficher.

Pour faire concis, voici le code de base à utiliser avec quelques commentaires pour vous aider à suivre la logique du script.

<?php
# $this is $plxShow
	#########################################
	#configuration : categorie(s) et nb/page
	#########################################
	# nombre d'article à afficher par page
	$bypage = 6;
	# choix de la categorie
	$catId = '001'; 
	#########################################
	# FIN configuration
	#########################################

	############################# 
	# extraction et maj variables
	############################# 
	
	#mode de tri 
	$tri = $this->plxMotor->aCats[$catId]['tri'];
	
	# filtrage article par catégorie(s)
	$motif = '/^[0-9]{4}.((?:[0-9]|home|,)*(?:'.$catId.')(?:[0-9]|home|,)*).[0-9]{3}.[0-9]{12}.[a-z0-9-]+.xml$/';
	
	# extraction du numéro de page dans l'URL 
	$page = preg_match('#\bpage(\d*)#',$_SERVER['REQUEST_URI'], $capture) ? intval($capture[1]) : 1;
	
	# indice de début, premier article à afficher
	$start = ($page - 1) * $bypage;
	
	# var publi
	$publi = 'before';
	
	#clone du tableau des articles 
	$plxGlob_arts = clone $this->plxMotor->plxGlob_arts;
	
	# filtrage du tableau cloné
	$aFiles =  $plxGlob_arts->query($motif, 'art', $tri, $start, $bypage, $publi);
	
	# extraction/maj variables
	$this->plxMotor->motif = $motif;
	$this->plxMotor->bypage = $bypage;
	$this->plxMotor->page = $page;

	# On boucle sur les articles filtrés
	$artsList = [];
	foreach($aFiles as $v){
			$art = $this->plxMotor->parseArticle(PLX_ROOT . $this->plxMotor->aConf['racine_articles'] . $v);
			if(!empty($art)) {
					$artsList[] = $art;
			}
	}
	
	#maj du tableau des données des articles filtrés
	$this->plxMotor->plxRecord_arts = new plxRecord($artsList);
?>
<!-- affichage du ou des articles selon le nombre à afficher par pages dans la variable $bypage -->
<div class="my_articles">
<?php
	# boucle pour l'affichage
	while($this->plxMotor->plxRecord_arts->loop()) {
?>
	<article>
		<h2>
				<?php $this->artTitle(); ?>
		</h2>
				<?php $this->artThumbnail(); ?>
		<div>
				<?php $this->artChapo(); ?>
		</div>
	</article>
<?php
	}
?>
</div>
<!-- fin block affichage article


<!-- Affichage de la pagination -->
    <nav  class="pagination text-center">
<?php
	############################
	# Affichage de la pagination
	############################
	$this->pagination(); 
?>
    </nav><!-- fin block affichage pagination-->

Vous pouvez donc configurer la catégorie à filtrer et le nombre d'article par page

L'affichage des articles se fait dans la boucle, vous pouvez aussi choisir les données des articles à afficher ainsi que la structure HTML de façon à ce qu'elle reflète celle de votre thème.

DClassé dans : PluXml, Bout de code, Programmation, Documentation, Thème ,Mots clés : pagination, PluXml, Page statique

A propos de l'auteur, gccyrillus:

Gccyrillus : Amoureux de PluXml et codeur bricoleur à mes heures perdues.

Les commentaires sont fermés.

Top