recent-articles vs latest-articles

cpalocpalo Member

Bonsoir
Pour le widget latest-article je préfererai le transformer en recent-articles, c'est à dire qu'il n'affiche , par exemple, que les articles publiés depuis une certaine date ou les 12 derniers mois.
Cordialement
Toutes mes excuses.
je ne suis pas beaucoup réactif ni beaucoup présent, mais pris par mes responsabilités associatives et familiales.
Et lorsque je peux, je me remets à mes projets web.

Réponses

  • Bonjour,

    Je ne modifierais pas directement lastArtList(), parce que la fonction sert déjà à afficher les derniers articles avec un tri et une limite, mais sans filtre de date. Pour un bloc "articles récents" sur les 12 derniers mois, je passerais plutôt par un petit bout de code dans le thème, par exemple dans sidebar.php.

    Exemple à adapter :

    <?php
    $plxMotor = $plxShow->plxMotor;
    
    $max = 12;
    $after = date('YmdHi', strtotime('-12 months'));
    $shown = 0;
    $items = array();
    
    $motif = '#^\d{4}\.(?:pin,|home,|\d{3},)*(?:' . $plxMotor->activeCats . ')(?:,\d{3})*\.\d{3}\.\d{12}\.[\w-]+\.xml$#';
    $plxGlob = clone $plxMotor->plxGlob_arts;
    
    if ($files = $plxGlob->query($motif, 'art', 'rsort', 0, false, 'before')) {
        foreach ($files as $file) {
            $art = $plxMotor->parseArticle(PLX_ROOT . $plxMotor->aConf['racine_articles'] . $file);
    
            if (!is_array($art) || $art['date'] < $after) {
                continue;
            }
    
            $items[] = sprintf(
                '<li><a href="%s">%s</a> <small>%s</small></li>',
                $plxMotor->urlRewrite('?' . L_ARTICLE_URL . intval($art['numero']) . '/' . $art['url']),
                plxUtils::strCheck($art['title']),
                plxDate::formatDate($art['date'], '#num_day/#num_month/#num_year(4)')
            );
    
            if (++$shown >= $max) {
                break;
            }
        }
    }
    
    echo $items ? '<ul>' . implode('', $items) . '</ul>' : '<p>Aucun article récent.</p>';
    ?>
    

    L'idée est de garder le même principe que lastArtList() : on récupère les fichiers d'articles publiés, triés du plus récent au plus ancien, puis on filtre avec la date au format YYYYMMDDHHMM. Comme ce format se compare bien sous forme de chaîne, le test sur $art['date'] < $after suffit pour exclure les articles plus anciens.

    Il faudra surtout ajuster le HTML selon ton thème, et éventuellement limiter à une catégorie précise si besoin.

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