[script] paginer le contenu d'une page statique [PHP]
Voici un script PHP permettant de paginer le contenu d'une page statique.
<style>:where(.page-item.page-link.active) { text-decoration:underline;font-weight:bold; padding:0.3em 2em;}.pagination.text-center.center.bordered{border-radius: 5px;width:max-content; margin:auto; border:solid 1px;display:flex;align-items: center;list-style:none;gap:0.5em}</style><?php
# $this is $plxShow
#########################################
#configuration
#########################################
# nombre de bloc à afficher par page
$bypage = 1;
$intermediaire = false; //mettre true au lieu de false pour afficher les liens de chaque page
#########################################
# FIN configuration
#########################################
#############################
# extraction et maj variables
#############################
# extraction de l'url
$url = 'static'.$this->staticId().'/'.$this->plxMotor->aStats[$this->plxMotor->cible]['url'];
# generation du lien
$link = $this->plxMotor->urlRewrite($url."/?page");
# extraction du numéro de page dans l'URL
$currentPage = preg_match('#\bpage(\d*)#',$_SERVER['REQUEST_URI'], $capture) ? intval($capture[1]) : 1;
# indice de début, premier article à afficher
$start = ($currentPage - 1) * $bypage;
#################################################
# stockage des blocs de contenus dans un tableau
# tableau defini dans array(). chaque bloc stocké
# entre deux apostrophe '
# separé par une virgule ,
# si un bloc contient une apostrophe '
# celle-ci doit-être préceder d'un \\
# depuis l'administration de PluXml,
# Il faut doubler ce signe en \\\\
# exemple: l\\'exemple. C\\'est obligatoire.
#################################################
$blocks = array(
'<div> A - un div dans la boucle, c\\'est le premier.</div>',
'<div> B - un div dans la boucle</div>',
'<div> C - un div dans la boucle</div>',
'<div> D - un div dans la boucle</div>',
'<div> E - un div dans la boucle</div>',
'<div> F - un div dans la boucle</div>',
'<div> G - un div dans la boucle</div>',
'<div> H - un div dans la boucle</div>',
'<div> I - un div dans la boucle, c\\'est le dernier</div>')
;
// Calcul du 1er article de la page
$premier = ($currentPage * $bypage) - $bypage;
// On calcule le nombre de pages total
$nbr = count($blocks);
$pages = ceil( $nbr / $bypage);
$blocks = array_slice($blocks, $premier, $bypage);
?>
<!-- affichage des blocs selon le nombre à afficher par pages dans la variable $bypage -->
<div class="my_articles">
<?php
# boucle pour l'affichage
foreach ($blocks as $key) {
echo $key;
}
?>
</div>
<!-- fin affichage des blocs -->
<!-- Affichage de la pagination -->
<?php
############################
# Affichage de la pagination
############################
?>
<nav>
<ul class="pagination text-center center bordered">
<!-- Lien vers la page précédente (si on ne se trouve pas sur la 1ère page) -->
<?= ($currentPage > 1) ? "<li class=\\"page-item\\" ><a href=\\"".$link . $currentPage - 1 ."\\" class=\\"page-link\\">".L_PAGINATION_PREVIOUS."</a></li>" : "" ?>
<?php if($intermediaire == true) {
for($page = 1; $page <= $pages; $page++) {
# Lien vers chacune des pages (activé si on se trouve sur la page correspondante)
echo '<li class="page-item ';
if($currentPage == $page) echo 'active';
echo '"><a href="'.$link.$page .'" class="page-link">'.$page.'</a></li>';
}
}
else {
echo "<li class=\\"page-item page-link active \\">
".$currentPage." / ". $nbr."
</li>";
} ?>
<!-- Lien vers la page suivante (si on ne se trouve pas sur la dernière page) -->
<?= ($currentPage < $pages) ? " <li class=\\"page-item\\"><a href=\\"".$link.$currentPage + 1 ."\\" class=\\"page-link\\">".L_PAGINATION_NEXT."</a></li>" : "" ?>
</ul>
</nav>
Script à copier/coller dans une page statique depuis l'administration de PluXml .
Les symboles \ sont doublés pour être préservés à l'enregistrement.
Aspect de la barre de pagination selon la configuration choisie (dans le thème par défaut):
Les contenus à paginer sont à inclure dans un tableau (voir et remplacer l'exemple inclus), c'est la seule difficulté qu'il peut y avoir. attention aux typos et a doubler / échapper les \ avant enregistrement pour les préserver.
Compatible avec la réécriture d'URL et le plugin MyBetterUrl .
Cordialement,
gcyrillus , simple membre du forum et utilisateur de pluxml
Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci
Réponses
Bonjour,
Voilà un script très intéressant car je cherchais à faire un sommaire.
Il y avait eu un début avec ce post https://forum.pluxml.org/discussion/6973/long-articles-avec-une-option-de-pagination-chapitre-par-chapitre, mais qui a disparu avec beaucoup d'autres lors de "l'accident" survenu au forum.
bazooka07 avait lui aussi développé un script qu'on trouve dans son théme kzBasic.
Je reviens d'ici peu vers PluXml mais mon projet WordPress m'a pris beaucoup plus de temps que prévu, mais beaucoup utilisable au niveau du theme que je vais réutiliser..
Bonne fin de we
ah , je ne l'ai pas ce thème, je l'ai zappé .
@cpalo Peut-être fais tu aussi référence à ce JavaScript de @bazooka07 https://codepen.io/bazooka07/pen/dyOepxq permettant de paginer à la volée le contenu d'une page avec au minimum une structure comme suit :
Cordialement,
gcyrillus , simple membre du forum et utilisateur de pluxml
Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci
Oui c'est ce script qui est utilisé dans ce thème
@cpalo, je crois plutôt que c'est dans le thème defaut-enhanced et pour le sujet parti en fumé, probablement celui-ci https://forum.pluxml.org/discussion/6927/resolu-long-article-avec-une-option-de-pagination-chapitre-par-chapitre-au-sein-de-larticle
Cordialement,
gcyrillus , simple membre du forum et utilisateur de pluxml
Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci
Bonsoir,
Merci pour l'archive.
Pour le script je confirme c'est dans script.js dans le sous-dossier js du theme kzBasic.
le theme defaut-enhanced n'a pas de script.js
Ce sont deux scripts quasi identiques , celui du codepen est celui qu'on retrouve dans le thème defaut-enhanced à la racine du thème
C'est amusant cette confusion.
Cordialement,
gcyrillus , simple membre du forum et utilisateur de pluxml
Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci