Z-Blog : Afficher les articles récents et populaires d'une section sur la page de contenu

Pour afficher les articles les plus récents et les plus populaires d'une section spécifique sur vos pages de contenu Z-Blog, vous pouvez suivre ces étapes.

Étape 1 : Ajouter des fonctions au fichier include.php

Localisez le fichier include.php de votre thème. À la fin de ce fichier, ajoutez les deux fonctions suivantes pour récupérer respectivement les articles les plus récents et les plus populaires.

Fonction pour les articles récents

Cette fonction, nommée fetchRecentArticlesByCategory, prend en paramètre le nombre d'atricles à afficher, l'ID de la catégorie (ou des IDs séparés par des virgules) et un booléen indiquant s'il faut inclure les sous-catégories.


function fetchRecentArticlesByCategory($limit, $categoryIDs, $includeSubcategories) {
    global $zbp;
    
    $categoryArray = is_array($categoryIDs) ? $categoryIDs : explode(',', $categoryIDs);
    $conditionArray = array();
    
    foreach ($categoryArray as $catID) {
        if (!$includeSubcategories) {
            $conditionArray[] = array('log_CateID', $catID);
        } else {
            $conditionArray[] = array('log_CateID', $catID);
            if (isset($zbp->categorys[$catID]) && !empty($zbp->categorys[$catID]->SubCategorys)) {
                foreach ($zbp->categorys[$catID]->SubCategorys as $subCat) {
                    $conditionArray[] = array('log_CateID', $subCat->ID);
                }
            }
        }
    }
    
    $filter = array(
        array('array', $conditionArray),
        array('=', 'log_Status', '0'),
    );
    
    $order = array('log_PostTime' => 'DESC');
    
    $articles = $zbp->GetArticleList(array('*'), $filter, $order, array($limit), '');
    
    return $articles;
}

Fonction pour les articles populaires

La fonction fetchPopularArticlesByCategory est similaire, mais elle trie les articels par nombre de vues décroissant pour identifier les plus populaires.


function fetchPopularArticlesByCategory($limit, $categoryIDs, $includeSubcategories) {
    global $zbp;
    
    $categoryArray = is_array($categoryIDs) ? $categoryIDs : explode(',', $categoryIDs);
    $conditionArray = array();
    
    foreach ($categoryArray as $catID) {
        if (!$includeSubcategories) {
            $conditionArray[] = array('log_CateID', $catID);
        } else {
            $conditionArray[] = array('log_CateID', $catID);
            if (isset($zbp->categorys[$catID]) && !empty($zbp->categorys[$catID]->SubCategorys)) {
                foreach ($zbp->categorys[$catID]->SubCategorys as $subCat) {
                    $conditionArray[] = array('log_CateID', $subCat->ID);
                }
            }
        }
    }
    
    $filter = array(
        array('array', $conditionArray),
        array('=', 'log_Status', '0'),
    );
    
    $order = array('log_ViewNums' => 'DESC');
    
    $articles = $zbp->GetArticleList(array('*'), $filter, $order, array($limit), '');
    
    return $articles;
}

Étape 2 : Appeler les fonctions dans le modèle de page de contenu

Modifiez le fichier de modèle de votre page de contenu (généralement single.php ou similaire) pour boucler sur les articles retournés par ces fonctions. Vous pouvez personnaliser l'affichage de chaque article.


{!-- Exemple d'appel pour les articles populaires --}
{foreach $popularArticles = fetchPopularArticlesByCategory(6, $article.Category.ID, true) as $related}
    <li>
        <a href="{$related.Url}" target="_blank">
            <i>
                {if $related->Metas->listimg}
                    {php}$thumbnailUrl = $related->Metas->listimg; $imageUrl = getResizedImageUrl($thumbnailUrl, 120, 70, 4); {/php}
                    <img src="{$imageUrl}" alt="{$related.Title}" />
                {else}
                    {php}displayResizedImage($related, 210, 142, 4); {/php}
                    {if $related->imageCount > 0}
                        <img src="{$related.images[0]}" alt="{$related.Title}" />
                    {else}
                        {php}$randomImageIndex = rand(1, 5); {/php}
                        {php}$defaultImageUrl = $host . 'zb_users/theme/San_Tiger/style/img/' . $randomImageIndex . '.jpg'; $resizedDefaultImageUrl = getResizedImageUrl($defaultImageUrl, 120, 70, 4); {/php}
                        <img src="{$resizedDefaultImageUrl}" alt="{$related.Title}" />
                    {/if}
                {/if}
            </i>
            <h2>{$related.Title}</h2>
            <span>{$related.Time('Y-m-d')}</span>
        </a>
    </li>
{/foreach}

Vous pouvez adapter ce code pour afficher les articles récents en remplaçant fetchPopularArticlesByCategory par fetchRecentArticlesByCategory.

Cette méthode vous permet de dynamiquement lier votre contenu, en présentant aux visiteurs des articles pertinents basés sur la popularité ou la fraîcheur au sein de la même secsion.

Étiquettes: Z-Blog PHP modèle de thème articles populaires articles récents

Publié le 19 juin à 16h18