Bonjour
De retour sur mon forum favori Smiley biggrin
J’ai le blog https://www.menuiserie-menplast.fr/blog/ qui tourne sur wordpress, je souhaite le mettre sur un autre domaine et à cette occasion me passer de cms et l’installer en html, c’est un blog minimaliste sans commentaires.
Mon soucis est la pagination, actuellement sur wordpress les articles fonctionnent avec le plugin Pagination by BestWebSoft,.
Je souhaiterai installer un fonctionnement similaire sur les pages en html du nouveau blog. Pour ce faire il faudrait un script en javascript ou php, j’ai fait des recherches sur le net, mais rien trouver de probant adapter à mes connaissances.
Connaissez-vous un tel script ou une autre façon de paginer un site web ?
Merci
Modifié par africa (25 Mar 2021 - 12:40)
SosoB a écrit :
J'ai le même problème, vous avez trouver la réponse ?

Bonjour SosoB
Non, je n'ai pas trouvé de solutions, je vais essayer un cms plus light que wordpress .
"Pluxml", je ne sais pas ce qu'il vaut en terme de SEO, (principal critère de migration d'un wordpress vers un blog tout html afin de maitriser le SEO).
Si de votre côté vous trouvez une piste lors de vos recherches merci de pensez à moi Smiley smile
De mon côté je n'y manquerai pas.
Merci
Bonne journée
Salut Africa,

Voici ci-dessous une petite base de script pour générer une pagination en PHP, basé sur le résultat d'une requête SQL.

Générer une pagination n'est pas difficile, il y a quelques principes mathématiques simples à comprendre, mais j'ai allégrement commenté tout ça pour que tu puisses comprendre les étapes et les calculs.

Presque tout se base sur la première variable $itemsPerPage (= le nombre d'items que tu veux afficher sur une page) ainsi que sur $pagesTotal, qui divise le nombre d'enregistrements par le nombre d'items par page. La fonction ceil() est essentielle, car elle arrondit le résultat de la division.

Bien évidement, ce code est une base à adapter et à sécuriser (surtout quand on travaille avec $_GET)

Il y a deux grandes parties dans le code, la première "Côté PHP", qui s'occupe d'aller chercher les enregistrements dans la base de données,
Et la seconde partie "Côté HTML" qui générera les liens.

Ça devrait ensuite te générer une petite pagination comme ceci :
upload/1616846197-68566-pagination.png

Bonne journée Smiley smile


<?php
/* Côté PHP */

// Nombre d'items à afficher par pages :
$itemsPerPage = 12;

// Votre requête SQL :
$itemsTotalRecords = $db->query('SELECT id FROM table'); 

// On compte le nombre d'enregistrements :
$itemsTotal = $itemsTotalRecords->rowCount(); 

// Puis on divise le nombre total d'items par le nombre d'item par page 
// (ceil permet d'arrondir le résultat) :
$pagesTotal = ceil($itemsTotal / $itemsPerPage);


// Maintenant, on doit déterminer les items à sélectionner, 
// selon sur quelle page nous nous trouvons :
$condition1 = ( isset($_GET['page']) && !empty($_GET['page']) );
$condition2 = ( $_GET['page'] > 0 && $_GET['page'] <= $pagesTotal );

// Si $_GET['page'] existe, qu'il n'est pas vide et que sa valeur est entre 1 et $pagesTotal :
if ($condition1 && $condition2) {
    $currentPage = intval($_GET['page']);
} else {
    // Sinon, on renvoie à la page 1 :
    $currentPage = 1;
}

// On va maintenant pouvoir effectuer une requête SQL pour 
// sélectionner les 12 items à afficher sur la page actuelle :
$start = ( $currentPage - 1 ) * $itemsPerPage;
$req = $db->query('SELECT * FROM table ORDER BY id ASC LIMIT '.$start.','.$itemsPerPage); // Exemple pour comprendre le principe, à adapter !



/* Côté affichage HTML : générer les liens de la pagination */

// Containers HTML :
$html  = '<h2 class="screen-reader-text">Navigation</h2>';
$html .= '<nav class="navigation pagination">';
$html .= '<div class="nav-links">';

// Lien vers Précédent :
if ( $currentPage > 1 ) {
    $href  = '/maPage.php?page='.$currentPage - 1;
    $html .= '<a class="prev page-numbers" href="'.$href.'">&larr; Précédent</a>';
}

// On parcours ensuite toutes les pages pour générer les liens :
for ( $i = 1; $i <= $pagesTotal ; $i++) { 
    $condition = ( ($currentPage - 2) < $i && $i < ($currentPage + 2 ) );

    if ($i == 1 || $condition || $i == $pagesTotal) {

        // S'il y a plus de 3 pages précédentes à afficher, 
        // on affichera alors "..." :
        if ( $i == $pagesTotal && $currentPage < ($pagesTotal - 3)) {
            $html .= '<span class="dots page-numbers">...</span>';
        }

        // Si $i est la page actuelle :
        if ( $i == $currentPage ) {
            $html .= '<span class="current page-numbers">'.$i.'</span>';
        } else {
            // Sinon, c'est une autre page :
            $href = '/maPage.php?page='.$i;
            $html .= '<a class="page-numbers" href="'.$href.'">'.$i.'</a>';
        }

        // S'il y a plus de 3 pages suivantes à afficher, 
        // on affichera alors "..." :
        if ( $i == 1 && $currentPage > 3 ) {
            $html .= '<span class="dots page-numbers">...</span>';
        }

    }
}

// Lien vers Suivant :
if ($currentPage < $pagesTotal) {
    $href  = '/maPage.php?page='.$currentPage + 1;
    $html .= '<a class="next page-numbers" href="'.$href.'">Suivant &rarr;</a>';
}

// On ferme les containers HTML :
$html .= '</div></nav>';

// Puis on affiche le tout :
echo $html;

Modifié par Loraga (27 Mar 2021 - 13:07)
Modérateur
Bonjour,

pour revenir sur PluXml, c'est un petit CMS facile à gérer et a adapter à sa guise pour de simple site.

Les fichiers des thèmes sont relativement simple a modifier, à élaguer et à restructurer.

IL y a aussi une fonction de réecriture des URLs.

Il y a peu de plugins mais le CMS peut se suffire à lui même et la pagination des articles (blog) se fait toute seule et le nombre d'article a affiché par page est configurable.

Des pages statiques peuvent être ajoutées, par exemple pour les mentions légales, la page d'intro du site, un formulaire de contact.

Pour se convaincre de son utilité pour un projet, il suffit de télécharger sa petite archive et de la lancée en local . <5mn chrono pour commencer à jouer avec.

Pas de bases de données donc pour les sauvegardes et restaurations ou déménagement, c'est simple : il suffit d'avoir sauvegarder son thème (si personnalisé) , le répertoire data(l'essentiel !) et éventuellement les plugins si il y en a et particulièrement les plugins maison.

Ces dossier peuvent être remis par dessus une archive fraiche de PluXml . (accessoirement, garder l'archive initiale pour rester sur la même version si la dernière est en partie incompatible).

Enfin, ça reste un CMS fonctionnant sur des fichiers et n'est pas destiné a un grand nombre de visites.

Cdt
Bonjour
Merci Loraga et gcyrillus pour vos retours.
Je vais essayer d'installer le script php (pas trop de connaissances en php) et installer PluXml pour jouer avec Smiley smile
Bonne soirée
Modifié par africa (27 Mar 2021 - 17:54)