* Date: 2026-5-20
*/
if (!defined('ROOT_PATH')) { exit('Access Denied'); }
require_once __DIR__ . '/../_functions.php';
if (empty($channel) && !empty($id)) {
$channel = $db->fetch("SELECT * FROM {$db->table('channel')} WHERE id = ? AND is_show = 1 LIMIT 1", [intval($id)]);
}
if (empty($channel)) {
echo 'Channel not found';
return;
}
$pageTitle = (string) ($channel['channel_name'] ?? '栏目列表');
$channelType = intval($channel['channel_type'] ?? 1);
$topChannel = intval($channel['parent_id'] ?? 0) > 0 ? k607_channel_by_id($db, intval($channel['parent_id'])) : $channel;
if (!$topChannel) {
$topChannel = $channel;
}
$sideChannels = k607_sibling_channels($db, $channel);
if (empty($sideChannels)) {
$sideChannels = $db->fetchAll("SELECT * FROM {$db->table('channel')} WHERE channel_type = ? AND is_show = 1 ORDER BY list_order ASC, id ASC", [$channelType]);
}
$heroImage = k607_channel_hero_image($topChannel, !empty($slides[0]['litpic']) ? $slides[0]['litpic'] : '');
$currentPage = max(1, intval($_GET['page'] ?? 1));
$filterChannelId = intval($_GET['channel_id'] ?? 0);
$targetChannelId = $filterChannelId > 0 ? $filterChannelId : intval($channel['id']);
$pageSize = in_array($channelType, [1, 5, 9], true) ? 8 : 9;
$baseUrl = getUrl('channel', intval($channel['id']), (string) ($channel['channel_dir'] ?? ''));
$items = [];
$total = 0;
$pageContent = '';
switch ($channelType) {
case 1:
$queryIds = [intval($targetChannelId)];
$children = $db->fetchAll("SELECT id FROM {$db->table('channel')} WHERE parent_id = ? AND is_show = 1", [intval($targetChannelId)]);
foreach ($children as $child) {
$queryIds[] = intval($child['id']);
}
$queryIds = array_values(array_unique(array_filter($queryIds)));
$ph = implode(',', array_fill(0, count($queryIds), '?'));
$countRow = $db->fetch("SELECT COUNT(*) AS total FROM {$db->table('article')} WHERE status = 1 AND channel_id IN ({$ph})", $queryIds);
$total = intval($countRow['total'] ?? 0);
$offset = ($currentPage - 1) * $pageSize;
$items = $db->fetchAll("SELECT a.*, c.channel_name FROM {$db->table('article')} a LEFT JOIN {$db->table('channel')} c ON a.channel_id = c.id WHERE a.status = 1 AND a.channel_id IN ({$ph}) ORDER BY a.create_time DESC LIMIT {$offset}, {$pageSize}", $queryIds);
break;
case 2:
$queryIds = [intval($targetChannelId)];
$children = $db->fetchAll("SELECT id FROM {$db->table('channel')} WHERE parent_id = ? AND is_show = 1", [intval($targetChannelId)]);
foreach ($children as $child) {
$queryIds[] = intval($child['id']);
}
$queryIds = array_values(array_unique(array_filter($queryIds)));
$ph = implode(',', array_fill(0, count($queryIds), '?'));
$countRow = $db->fetch("SELECT COUNT(*) AS total FROM {$db->table('product')} WHERE status = 1 AND channel_id IN ({$ph})", $queryIds);
$total = intval($countRow['total'] ?? 0);
$offset = ($currentPage - 1) * $pageSize;
$items = $db->fetchAll("SELECT p.*, c.channel_name FROM {$db->table('product')} p LEFT JOIN {$db->table('channel')} c ON p.channel_id = c.id WHERE p.status = 1 AND p.channel_id IN ({$ph}) ORDER BY p.create_time DESC LIMIT {$offset}, {$pageSize}", $queryIds);
break;
case 3:
$pageInfo = $db->fetch("SELECT * FROM {$db->table('page')} WHERE channel_id = ? ORDER BY id DESC LIMIT 1", [intval($channel['id'])]);
$pageContent = (string) ($pageInfo['page_content'] ?? ($pageInfo['content'] ?? ''));
break;
case 4:
$countRow = $db->fetch("SELECT COUNT(*) AS total FROM {$db->table('image')} WHERE status = 1 AND channel_id = ?", [intval($targetChannelId)]);
$total = intval($countRow['total'] ?? 0);
$offset = ($currentPage - 1) * $pageSize;
$items = $db->fetchAll("SELECT * FROM {$db->table('image')} WHERE status = 1 AND channel_id = ? ORDER BY create_time DESC LIMIT {$offset}, {$pageSize}", [intval($targetChannelId)]);
break;
case 5:
$countRow = $db->fetch("SELECT COUNT(*) AS total FROM {$db->table('download')} WHERE status = 1 AND channel_id = ?", [intval($targetChannelId)]);
$total = intval($countRow['total'] ?? 0);
$offset = ($currentPage - 1) * $pageSize;
$items = $db->fetchAll("SELECT * FROM {$db->table('download')} WHERE status = 1 AND channel_id = ? ORDER BY create_time DESC LIMIT {$offset}, {$pageSize}", [intval($targetChannelId)]);
break;
case 7:
$countRow = $db->fetch("SELECT COUNT(*) AS total FROM {$db->table('video')} WHERE status = 1 AND channel_id = ?", [intval($targetChannelId)]);
$total = intval($countRow['total'] ?? 0);
$offset = ($currentPage - 1) * $pageSize;
$items = $db->fetchAll("SELECT * FROM {$db->table('video')} WHERE status = 1 AND channel_id = ? ORDER BY create_time DESC LIMIT {$offset}, {$pageSize}", [intval($targetChannelId)]);
break;
case 9:
$countRow = $db->fetch("SELECT COUNT(*) AS total FROM {$db->table('recruit')} WHERE status = 1 AND channel_id = ?", [intval($targetChannelId)]);
$total = intval($countRow['total'] ?? 0);
$offset = ($currentPage - 1) * $pageSize;
$items = $db->fetchAll("SELECT r.*, c.channel_name FROM {$db->table('recruit')} r LEFT JOIN {$db->table('channel')} c ON r.channel_id = c.id WHERE r.status = 1 AND r.channel_id = ? ORDER BY r.create_time DESC LIMIT {$offset}, {$pageSize}", [intval($targetChannelId)]);
break;
default:
$countRow = $db->fetch("SELECT COUNT(*) AS total FROM {$db->table('article')} WHERE status = 1 AND channel_id = ?", [intval($targetChannelId)]);
$total = intval($countRow['total'] ?? 0);
$offset = ($currentPage - 1) * $pageSize;
$items = $db->fetchAll("SELECT a.*, c.channel_name FROM {$db->table('article')} a LEFT JOIN {$db->table('channel')} c ON a.channel_id = c.id WHERE a.status = 1 AND a.channel_id = ? ORDER BY a.create_time DESC LIMIT {$offset}, {$pageSize}", [intval($targetChannelId)]);
break;
}
$totalPages = max(1, (int) ceil($total / max($pageSize, 1)));
require_once __DIR__ . '/../_header.php';
?>
暂无内容
暂无下载内容
暂无招聘信息
暂无内容
1): ?>