* Date: 2026-5-20
*/
if (!defined('ROOT_PATH')) { exit('Access Denied'); }
require_once __DIR__ . '/_functions.php';
$pageTitle = '首页';
$extraHead = '';
$slideList = !empty($slides) ? $slides : $db->fetchAll("SELECT * FROM {$db->table('slide')} WHERE status = 1 ORDER BY sort_order ASC, id DESC LIMIT 5");
$aboutCover = '';
$aboutSource = $db->fetch("SELECT litpic, content, title FROM {$db->table('article')} WHERE status = 1 AND litpic <> '' ORDER BY create_time DESC LIMIT 1");
if (!empty($aboutSource['litpic'])) {
$aboutCover = (string) $aboutSource['litpic'];
}
if ($aboutCover === '' && !empty($slideList[0]['litpic'])) {
$aboutCover = (string) $slideList[0]['litpic'];
}
$productRoots = $db->fetchAll("SELECT * FROM {$db->table('channel')} WHERE channel_type = 2 AND parent_id = 0 AND is_show = 1 ORDER BY list_order ASC, id ASC LIMIT 6");
$productTabs = $productRoots;
if (count($productRoots) === 1) {
$childTabs = $db->fetchAll("SELECT * FROM {$db->table('channel')} WHERE channel_type = 2 AND parent_id = ? AND is_show = 1 ORDER BY list_order ASC, id ASC LIMIT 8", [intval($productRoots[0]['id'])]);
if (!empty($childTabs)) {
$productTabs = $childTabs;
}
}
if (empty($productTabs)) {
$productTabs = $db->fetchAll("SELECT * FROM {$db->table('channel')} WHERE channel_type = 2 AND is_show = 1 ORDER BY list_order ASC, id ASC LIMIT 8");
}
$productGroups = [];
foreach ($productTabs as $root) {
$relatedIds = [intval($root['id'])];
$childIds = $db->fetchAll("SELECT id FROM {$db->table('channel')} WHERE parent_id = ? AND is_show = 1 ORDER BY list_order ASC, id ASC", [intval($root['id'])]);
foreach ($childIds as $child) {
$relatedIds[] = intval($child['id']);
}
$relatedIds = array_values(array_unique(array_filter($relatedIds)));
$placeholders = implode(',', array_fill(0, count($relatedIds), '?'));
$items = $db->fetchAll("SELECT * FROM {$db->table('product')} WHERE channel_id IN ({$placeholders}) AND status = 1 ORDER BY create_time DESC LIMIT 4", $relatedIds);
if (!empty($items)) {
$productGroups[] = [
'channel' => $root,
'products' => $items,
];
}
}
$caseProducts = $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.litpic <> '' ORDER BY p.create_time DESC LIMIT 8");
$newsList = $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 ORDER BY a.create_time DESC LIMIT 3");
$featureBlocks = [
['title' => '专属方案定制', 'desc' => '根据行业需求输出展厅、产品、案例与服务内容结构。'],
['title' => '内容自动调用', 'desc' => '首页、列表页、详情页全部读取 CMS 后台内容,无需改系统逻辑。'],
['title' => '移动端同步适配', 'desc' => '导航、轮播、图文卡片和详情内容在手机端完整重排。'],
];
$advantageSlides = [
[
'index' => '01',
'title' => '高标准视觉统一',
'desc' => '导航、横幅、卡片、按钮和深浅层次统一收拢到同一套品牌视觉语言。',
'image' => !empty($slideList[0]['litpic']) ? $slideList[0]['litpic'] : $aboutCover,
],
[
'index' => '02',
'title' => '多模块内容兼容',
'desc' => '支持文章、产品、图集、下载、视频、招聘和留言等栏目统一展示。',
'image' => !empty($caseProducts[0]['litpic']) ? $caseProducts[0]['litpic'] : $aboutCover,
],
[
'index' => '03',
'title' => '后台可持续维护',
'desc' => '模板不碰核心动态文件,后续只需在后台维护内容即可持续更新站点。',
'image' => !empty($caseProducts[1]['litpic']) ? $caseProducts[1]['litpic'] : $aboutCover,
],
];
require_once __DIR__ . '/_header.php';
?>
ABOUT
公司介绍
COMPANY PROFILE
PRODUCTS
产品中心
PRODUCT CENTER
$group): ?>
-
PRODUCT CATALOG
CONSULT
如果您需要了解产品、价格或合作方案
提交需求
ADVANTAGE
核心优势
CORE ADVANTAGES
CASES
案例展示
PROJECT SHOWCASE
(function () {
var slides = document.querySelectorAll('#homeBanner .swiper-slide');
var dots = document.querySelectorAll('#bannerDots span');
var prev = document.getElementById('bannerPrev');
var next = document.getElementById('bannerNext');
var current = 0;
var timer = null;
function show(index) {
if (!slides.length) return;
current = (index + slides.length) % slides.length;
slides.forEach(function (slide, i) {
slide.classList.toggle('active', i === current);
});
dots.forEach(function (dot, i) {
dot.classList.toggle('active', i === current);
});
}
function autoPlay() {
timer = window.setInterval(function () {
show(current + 1);
}, 5000);
}
function stopPlay() {
if (timer) {
window.clearInterval(timer);
timer = null;
}
}
dots.forEach(function (dot) {
dot.addEventListener('click', function () {
stopPlay();
show(parseInt(this.getAttribute('data-index'), 10) || 0);
autoPlay();
});
});
if (prev) {
prev.addEventListener('click', function () {
stopPlay();
show(current - 1);
autoPlay();
});
}
if (next) {
next.addEventListener('click', function () {
stopPlay();
show(current + 1);
autoPlay();
});
}
if (slides.length > 1) {
autoPlay();
}
var tabs = document.querySelectorAll('#productTabs .li');
var boxes = document.querySelectorAll('.tabBox-right .box');
tabs.forEach(function (tab) {
tab.addEventListener('click', function () {
var target = this.getAttribute('data-tab');
tabs.forEach(function (item) { item.classList.remove('active'); });
boxes.forEach(function (box) { box.classList.remove('active'); });
this.classList.add('active');
var currentBox = document.getElementById(target);
if (currentBox) {
currentBox.classList.add('active');
}
});
});
var advSlides = document.querySelectorAll('.iyoushi-box .swiper-slide');
var advDots = document.querySelectorAll('#advDots span');
var advPrev = document.getElementById('advPrev');
var advNext = document.getElementById('advNext');
var advIndex = 0;
function showAdv(index) {
if (!advSlides.length) return;
advIndex = (index + advSlides.length) % advSlides.length;
advSlides.forEach(function (slide, i) {
slide.classList.toggle('active', i === advIndex);
});
advDots.forEach(function (dot, i) {
dot.classList.toggle('active', i === advIndex);
});
}
advDots.forEach(function (dot) {
dot.addEventListener('click', function () {
showAdv(parseInt(this.getAttribute('data-index'), 10) || 0);
});
});
if (advPrev) advPrev.addEventListener('click', function () { showAdv(advIndex - 1); });
if (advNext) advNext.addEventListener('click', function () { showAdv(advIndex + 1); });
})();
HTML;
require_once __DIR__ . '/_footer.php';
?>