相关文章, 如果不满足条数自动调用最新发布的当前栏目的文章
<?php
// 获取当前栏目的ID(这里假设你已经有了当前栏目的ID,如果没有,你需要根据实际情况获取它)
// $classid = $GLOBALS['ecms_classid']; // 或者从其他变量获取,比如 $r['classid']
$classid = $GLOBALS[navclassid];
// 获取当前文章标题的前4个字符作为搜索关键词
$title_prefix = mb_substr($navinfor['title'], 0, 4, 'UTF-8');
// 首先尝试根据关键词搜索相关文章
$search_sql = "SELECT * FROM phome_ecms_news WHERE title LIKE '%{$title_prefix}%' AND classid={$classid} ORDER BY newstime DESC LIMIT 6";
$search_result = $empire->query($search_sql);
$related_articles = [];
while ($row = $empire->fetch($search_result)) {
$related_articles[] = $row;
}
// 如果搜索到的文章不足6条,则从当前栏目中补充
$needed_count = 6 - count($related_articles);
if ($needed_count > 0) {
$supplement_sql = "SELECT * FROM phome_ecms_news WHERE classid={$classid} ORDER BY newstime DESC LIMIT {$needed_count}";
$supplement_result = $empire->query($supplement_sql);
while ($row = $empire->fetch($supplement_result)) {
// 检查这篇文章是否已经在搜索结果中(虽然理论上不应该,但为了避免重复还是检查一下)
if (!in_array($row['id'], array_column($related_articles, 'id'))) {
$related_articles[] = $row;
}
// 如果已经找到了足够的补充文章,则退出循环
if (count($related_articles) >= 6) {
break;
}
}
}
// 现在$related_articles数组中应该至少有6篇文章
foreach ($related_articles as $article) {
// 输出文章信息
// echo '<a href="' . eReturnClassUrl($article, $classid, 0) . '" class="mcolor">' . $article['classname'] . '</a>';
echo '<li><a href="' . sys_ReturnBqTitleLink($article) . '" target="_blank">' . $article['title'] . '</a></li>';
}
?>
当前目录:帝国CMS教程
帝国cms调用相关文章, 如果不满足条数自动调用最新发布的当前栏目的文章
帝国CMS教程 2025-04-03 16:23:10
下一篇:返回列表