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.