tp/public/themes/default/index.php
2026-03-10 22:59:46 +08:00

684 lines
25 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html class="no-js" lang="">
<head>
<meta charset="utf-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<title>Nova - Bootstrap 5 Template</title>
<meta name="description" content="" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="assets/css/bootstrap-5.0.0-beta1.min.css" />
<link rel="stylesheet" href="assets/css/LineIcons.2.0.css" />
<link rel="stylesheet" href="assets/css/tiny-slider.css" />
<link rel="stylesheet" href="assets/css/animate.css" />
<link rel="stylesheet" href="assets/css/lindy-uikit.css" />
<link rel="stylesheet" href="assets/css/all.min.css" />
<!-- Swiper CSS -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css" />
</head>
<body>
<!--[if lte IE 9]>
<p class="browserupgrade">
You are using an <strong>outdated</strong> browser. Please
<a href="https://browsehappy.com/">upgrade your browser</a> to improve
your experience and security.
</p>
<![endif]-->
<div class="preloader">
<div class="loader">
<div class="spinner">
<div class="spinner-container">
<div class="spinner-rotator">
<div class="spinner-left">
<div class="spinner-circle"></div>
</div>
<div class="spinner-right">
<div class="spinner-circle"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<section id="home" class="hero-section-wrapper-5">
<header class="header header-6">
<div class="navbar-area">
<div class="container">
<div class="row align-items-center">
<div class="col-lg-12">
<nav class="navbar navbar-expand-lg">
<a class="navbar-brand" href="index.html">
<img src="assets/img/logo/logo.svg" alt="Logo" />
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent6" aria-controls="navbarSupportedContent6" aria-expanded="false" aria-label="Toggle navigation">
<span class="toggler-icon"></span>
<span class="toggler-icon"></span>
<span class="toggler-icon"></span>
</button>
<div class="collapse navbar-collapse sub-menu-bar" id="navbarSupportedContent6">
<ul id="nav6" class="navbar-nav ms-auto">
<li class="nav-item">
<a class="page-scroll active" href="#home">主页</a>
</li>
<li class="nav-item">
<a class="page-scroll" href="#feature">文章中心</a>
</li>
<li class="nav-item">
<a class="page-scroll" href="#about">关于我们</a>
</li>
<li class="nav-item">
<a class="page-scroll" href="#pricing">Pricing</a>
</li>
<li class="nav-item">
<a class="page-scroll" href="#contact">联系我们</a>
</li>
</ul>
</div>
</nav>
</div>
</div>
</div>
</div>
</header>
<!-- Banner 轮播图 -->
<div class="swiper banner-swiper">
<div class="swiper-wrapper" id="banner-container">
<!-- Banner 将通过 JavaScript 动态加载 -->
</div>
<div class="swiper-pagination"></div>
<div class="swiper-button-next"></div>
<div class="swiper-button-prev"></div>
</div>
</section>
<section id="feature" class="feature-section feature-style-5">
<div class="container">
<div class="row justify-content-center">
<div class="col-xxl-5 col-xl-5 col-lg-7 col-md-8">
<div class="section-title text-center mb-60">
<h3 class="mb-15 wow fadeInUp" data-wow-delay=".2s">文章中心</h3>
</div>
</div>
</div>
<div class="row" id="news-container">
<!-- 卡片将通过 JavaScript 动态加载 -->
</div>
</div>
</section>
<section id="about" class="about-section about-style-4">
<div class="container">
<div class="row align-items-center">
<div class="col-xl-5 col-lg-6">
<div class="about-content-wrapper">
<div class="section-title mb-30">
<h3 class="mb-25 wow fadeInUp" data-wow-delay=".2s">The future of designing starts here</h3>
<p class="wow fadeInUp" data-wow-delay=".3s">Stop wasting time and money designing and managing a website that doesnt get results. Happiness guaranteed,</p>
</div>
<ul>
<li class="wow fadeInUp" data-wow-delay=".35s">
<i class="lni lni-checkmark-circle"></i>
Stop wasting time and money designing and managing a website that doesnt get results.
</li>
<li class="wow fadeInUp" data-wow-delay=".4s">
<i class="lni lni-checkmark-circle"></i>
Stop wasting time and money designing and managing.
</li>
<li class="wow fadeInUp" data-wow-delay=".45s">
<i class="lni lni-checkmark-circle"></i>
Stop wasting time and money designing and managing a website that doesnt get results.
</li>
</ul>
<a href="#0" class="button button-lg radius-10 wow fadeInUp" data-wow-delay=".5s">Learn More</a>
</div>
</div>
<div class="col-xl-7 col-lg-6">
<div class="about-image text-lg-right wow fadeInUp" data-wow-delay=".5s">
<img src="assets/img/about/about-4/about-img.svg" alt="">
</div>
</div>
</div>
</div>
</section>
<section id="pricing" class="pricing-section pricing-style-4 bg-light">
<div class="container">
<div class="row align-items-center">
<div class="col-xl-5 col-lg-6">
<div class="section-title mb-60">
<h3 class="mb-15 wow fadeInUp" data-wow-delay=".2s">Pricing Plan</h3>
<p class="wow fadeInUp" data-wow-delay=".4s">Stop wasting time and money designing and managing a website that doesnt get results. Happiness guaranteed!Stop wasting time and money designing and managing a website that doesnt get results. Happiness guaranteed!</p>
</div>
</div>
<div class="col-xl-7 col-lg-6">
<div class="pricing-active-wrapper wow fadeInUp" data-wow-delay=".4s">
<div class="pricing-active">
<div class="single-pricing-wrapper">
<div class="single-pricing">
<h6>Basic Design</h6>
<h4>Web Design</h4>
<h3>$ 29.00</h3>
<ul>
<li>Carefully crafted components</li>
<li>Amazing page examples</li>
<li>Super friendly support team</li>
<li>Awesome Support</li>
</ul>
<a href="#0" class="button radius-30">Get Started</a>
</div>
</div>
<div class="single-pricing-wrapper">
<div class="single-pricing">
<h6>Standard Design</h6>
<h4>Web Development</h4>
<h3>$ 89.00</h3>
<ul>
<li>Carefully crafted components</li>
<li>Amazing page examples</li>
<li>Super friendly support team</li>
<li>Awesome Support</li>
</ul>
<a href="#0" class="button radius-30">Get Started</a>
</div>
</div>
<div class="single-pricing-wrapper">
<div class="single-pricing">
<h6>Pro Design</h6>
<h4>Design & Develop</h4>
<h3>$ 199.00</h3>
<ul>
<li>Carefully crafted components</li>
<li>Amazing page examples</li>
<li>Super friendly support team</li>
<li>Awesome Support</li>
</ul>
<a href="#0" class="button radius-30">Get Started</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="contact" class="contact-section contact-style-3">
<div class="container">
<div class="row justify-content-center">
<div class="col-xxl-5 col-xl-5 col-lg-7 col-md-10">
<div class="section-title text-center mb-50">
<h3 class="mb-15">联系我们</h3>
<p>如果您有任何需求,欢迎联系我们!</p>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-8">
<div class="contact-form-wrapper">
<form action="" method="">
<div class="row">
<div class="col-md-6">
<div class="single-input">
<input type="text" id="name" name="name" class="form-input" placeholder="姓名">
<i class="lni lni-user"></i>
</div>
</div>
<div class="col-md-6">
<div class="single-input">
<input type="email" id="email" name="email" class="form-input" placeholder="邮箱">
<i class="lni lni-envelope"></i>
</div>
</div>
<div class="col-md-6">
<div class="single-input">
<input type="text" id="number" name="number" class="form-input" placeholder="手机号">
<i class="lni lni-phone"></i>
</div>
</div>
<div class="col-md-6">
<div class="single-input">
<input type="text" id="subject" name="subject" class="form-input" placeholder="您的标题">
<i class="lni lni-text-format"></i>
</div>
</div>
<div class="col-md-12">
<div class="single-input">
<textarea name="message" id="message" class="form-input" placeholder="您的需求" rows="6"></textarea>
<i class="lni lni-comments-alt"></i>
</div>
</div>
<div class="col-md-12">
<div class="form-button">
<button type="submit" class="button"> <i class="lni lni-telegram-original"></i> 提交</button>
</div>
</div>
</div>
</form>
</div>
</div>
<div class="col-lg-4">
<div class="left-wrapper">
<div class="row">
<div class="col-lg-12 col-md-6">
<div class="single-item">
<div class="icon">
<i class="lni lni-phone"></i>
</div>
<div class="text">
<p>+86 19895983967</p>
</div>
</div>
</div>
<div class="col-lg-12 col-md-6">
<div class="single-item">
<div class="icon">
<i class="lni lni-envelope"></i>
</div>
<div class="text">
<p>lygyunze@gmail.com</p>
<p>357099073@qq.com</p>
</div>
</div>
</div>
<div class="col-lg-12 col-md-6">
<div class="single-item">
<div class="icon">
<i class="lni lni-map-marker"></i>
</div>
<div class="text">
<p>江苏省连云港市海州区润潮国际大厦</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="clients-logo-section pt-100 pb-100">
<div class="container">
<div class="row">
<div class="col-lg-12">
<div class="client-logo wow fadeInUp" data-wow-delay=".2s">
<img src="assets/img/clients/brands.svg" alt="" class="w-100">
</div>
</div>
</div>
</div>
</section>
<footer class="footer footer-style-4">
<div class="container">
<div class="widget-wrapper">
<div class="row">
<div class="col-xl-3 col-lg-4 col-md-6">
<div class="footer-widget wow fadeInUp" data-wow-delay=".2s">
<div class="logo">
<a href="#0"> <img src="assets/img/logo/logo.svg" alt=""> </a>
</div>
<p class="desc">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Facilisis nulla placerat amet amet congue.</p>
<ul class="socials">
<li> <a href="#0"> <i class="fa-brands fa-qq"></i> </a> </li>
<li> <a href="#0"> <i class="fa-brands fa-weixin"></i> </a> </li>
<li> <a href="#0"> <i class="fa-brands fa-weibo"></i> </a> </li>
</ul>
</div>
</div>
<div class="col-xl-2 offset-xl-1 col-lg-2 col-md-6 col-sm-6">
<div class="footer-widget wow fadeInUp" data-wow-delay=".3s">
<h6>快捷链接</h6>
<ul class="links">
<li> <a href="#0">主页</a> </li>
<li> <a href="#0">关于我们</a> </li>
<li> <a href="#0">服务</a> </li>
<li> <a href="#0">客户评价</a> </li>
<li> <a href="#0">联系</a> </li>
</ul>
</div>
</div>
<div class="col-xl-3 col-lg-3 col-md-6 col-sm-6">
<div class="footer-widget wow fadeInUp" data-wow-delay=".4s">
<h6>服务</h6>
<ul class="links">
<li> <a href="#0">Web Design</a> </li>
<li> <a href="#0">Web Development</a> </li>
<li> <a href="#0">Seo Optimization</a> </li>
<li> <a href="#0">Blog Writing</a> </li>
</ul>
</div>
</div>
<div class="col-xl-3 col-lg-3 col-md-6">
<div class="footer-widget wow fadeInUp" data-wow-delay=".5s">
<h6>软件下载</h6>
<ul class="download-app">
<li>
<a href="#0">
<span class="icon"><i class="lni lni-apple"></i></span>
<span class="text">Download on the <b>App Store</b> </span>
</a>
</li>
<li>
<a href="#0">
<span class="icon"><i class="lni lni-play-store"></i></span>
<span class="text">GET IT ON <b>Play Store</b> </span>
</a>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="copyright-wrapper wow fadeInUp" data-wow-delay=".2s">
<p>Design and Developed by <a href="https://www.yunzer.cn" rel="nofollow" target="_blank">云泽网</a></p>
</div>
</div>
</footer>
<a href="#" class="scroll-top"> <i class="lni lni-chevron-up"></i> </a>
<script src="assets/js/bootstrap-5.0.0-beta1.min.js"></script>
<script src="assets/js/tiny-slider.js"></script>
<script src="assets/js/wow.min.js"></script>
<script src="assets/js/main.js"></script>
<script src="assets/js/all.min.js"></script>
<!-- Swiper JS -->
<script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>
<!-- 加载新闻数据 -->
<script>
// API 接口地址配置
const API_BASE_URL = 'https://api.yunzer.cn';
// 加载 Banner 轮播图
function loadBanners() {
const bannerContainer = document.getElementById('banner-container');
if (!bannerContainer) return;
fetch(API_BASE_URL + '/getBanners')
.then(res => res.json())
.then(result => {
if (result.code !== 200 || !result.list || result.list.length === 0) {
// 没有 Banner 时显示默认内容
bannerContainer.innerHTML = '<div class="swiper-slide"><div class="hero-section hero-style-5 img-bg" style="background-image: url(\'assets/img/hero/hero-5/hero-bg.svg\')"><div class="container"><div class="row"><div class="col-lg-6"><div class="hero-content-wrapper"><h2 class="mb-30">欢迎来到我们的网站</h2><p class="mb-30">精彩从这里开始</p></div></div><div class="col-lg-6 align-self-end"><div class="hero-image"><img src="assets/img/hero/hero-5/hero-img.svg" alt=""></div></div></div></div></div></div>';
initSwiper();
return;
}
let html = '';
result.list.forEach((item) => {
const title = item.title || '';
const desc = item.desc || '';
const imageUrl = item.image || '';
const url = item.url || '#';
html += '<div class="swiper-slide">' +
'<div class="hero-section hero-style-5 img-bg" style="background-image: url(\'assets/img/hero/hero-5/hero-bg.svg\')">' +
'<div class="container">' +
'<div class="row">' +
'<div class="col-lg-6">' +
'<div class="hero-content-wrapper">' +
'<h2 class="mb-30 wow fadeInUp" data-wow-delay=".2s">' + title + '</h2>' +
'<p class="mb-30 wow fadeInUp" data-wow-delay=".4s">' + desc + '</p>' +
(url !== '#' ? '<a href="' + url + '" class="button button-lg radius-50 wow fadeInUp" data-wow-delay=".6s">了解更多 <i class="lni lni-chevron-right"></i></a>' : '') +
'</div>' +
'</div>' +
'<div class="col-lg-6 align-self-end">' +
'<div class="hero-image wow fadeInUp" data-wow-delay=".5s">' +
'<img src="' + imageUrl + '" alt="' + title + '">' +
'</div>' +
'</div>' +
'</div>' +
'</div>' +
'</div>' +
'</div>';
});
bannerContainer.innerHTML = html;
initSwiper();
})
.catch(err => {
console.error('加载 Banner 失败:', err);
bannerContainer.innerHTML = '<div class="swiper-slide"><div class="hero-section hero-style-5 img-bg" style="background-image: url(\'assets/img/hero/hero-5/hero-bg.svg\')"><div class="container"><div class="row"><div class="col-lg-6"><div class="hero-content-wrapper"><h2 class="mb-30">欢迎来到我们的网站</h2><p class="mb-30">精彩从这里开始</p></div></div><div class="col-lg-6 align-self-end"><div class="hero-image"><img src="assets/img/hero/hero-5/hero-img.svg" alt=""></div></div></div></div></div></div>';
initSwiper();
});
}
// 初始化 Swiper
function initSwiper() {
new Swiper('.banner-swiper', {
loop: true,
autoplay: {
delay: 5000,
disableOnInteraction: false,
},
pagination: {
el: '.swiper-pagination',
clickable: true,
},
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
}
});
}
// 去除 HTML 标签,提取纯文本
function stripHtml(html) {
if (!html) return '';
// 先替换所有 HTML 标签为空格
var text = html.replace(/<[^>]+>/g, ' ');
// 替换多个空格为单个空格
text = text.replace(/\s+/g, ' ');
// 去除首尾空格
return text.trim();
}
// 获取完整图片地址
function getFullImageUrl(imagePath) {
if (!imagePath) return '';
// 如果已经是完整 URL直接返回
if (imagePath.startsWith('http://') || imagePath.startsWith('https://')) {
return imagePath;
}
// 拼接完整 URL
return API_BASE_URL + (imagePath.startsWith('/') ? imagePath : '/' + imagePath);
}
// 页面加载完成后执行
document.addEventListener('DOMContentLoaded', function() {
// 加载 Banner 轮播图
loadBanners();
// 加载新闻数据
const container = document.getElementById('news-container');
if (!container) return;
// 请求数据(后端从 Referer 自动识别租户域名)
fetch(API_BASE_URL + '/getCenterNews')
.then(res => res.json())
.then(result => {
if (result.code !== 200 || !result.list || result.list.length === 0) {
container.innerHTML = '<p style="text-align:center;width:100%">暂无新闻</p>';
return;
}
let html = '';
result.list.forEach((item, i) => {
const title = item.title || '无标题';
let desc = item.summary || item.description || '';
// 去除 HTML 标签后截取
if (!desc && item.content) {
desc = stripHtml(item.content);
}
if (!desc) desc = '暂无描述';
// 获取缩略图地址(优先使用 thumb其次使用 image
const thumbUrl = getFullImageUrl(item.thumb || item.image);
const thumbHtml = thumbUrl ?
'<img src="' + thumbUrl + '" alt="' + title + '" class="news-thumb">' :
'<div class="news-thumb-placeholder">暂无图片</div>';
html += '<div class="col-lg-3 col-md-6 mb-4">' +
'<div class="news-card wow fadeInUp" data-wow-delay=".2s">' +
'<div class="news-thumb-wrap">' +
thumbHtml +
'</div>' +
'<div class="news-body">' +
'<h5 class="news-title">' + title + '</h5>' +
'<p class="news-desc">' + desc + '</p>' +
'</div>' +
'</div>' +
'</div>';
});
container.innerHTML = html;
})
.catch(err => {
console.error('加载失败:', err);
container.innerHTML = '<p style="text-align:center;width:100%">加载失败</p>';
});
});
</script>
<!-- Banner 轮播图样式 -->
<style>
.banner-swiper {
width: 100%;
}
.banner-swiper .swiper-slide {
height: auto;
}
.banner-swiper .hero-section {
margin-bottom: 0;
}
.banner-swiper .swiper-pagination {
bottom: 20px;
}
.banner-swiper .swiper-pagination-bullet {
background: #333;
opacity: 0.3;
width: 10px;
height: 10px;
}
.banner-swiper .swiper-pagination-bullet-active {
opacity: 1;
background: #5864FF;
}
.banner-swiper .swiper-button-next,
.banner-swiper .swiper-button-prev {
color: #5864FF;
width: 40px;
height: 40px;
background: rgba(255, 255, 255, 0.8);
border-radius: 50%;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
}
.banner-swiper .swiper-button-next:after,
.banner-swiper .swiper-button-prev:after {
font-size: 18px;
font-weight: bold;
}
.banner-swiper .swiper-button-next:hover,
.banner-swiper .swiper-button-prev:hover {
background: #fff;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.15);
}
</style>
<!-- 新闻卡片样式 -->
<style>
.feature-section {
background-color: #fafafa;
}
.news-card {
background: #fff;
border-radius: 8px;
overflow: hidden;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
transition: transform 0.3s ease, box-shadow 0.3s ease;
height: 100%;
display: flex;
flex-direction: column;
}
.news-card:hover {
transform: translateY(-4px);
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
}
.news-thumb-wrap {
width: 100%;
height: 160px;
overflow: hidden;
}
.news-thumb {
width: 100%;
height: 100%;
object-fit: cover;
}
.news-thumb-placeholder {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
background: #f0f0f0;
color: #999;
font-size: 14px;
}
.news-body {
padding: 16px;
flex: 1;
display: flex;
flex-direction: column;
}
.news-title {
font-size: 16px;
font-weight: 600;
line-height: 1.4;
margin-bottom: 8px;
color: #333;
/* 显示2行超出省略 */
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
text-overflow: ellipsis;
min-height: 44px;
}
.news-desc {
font-size: 14px;
line-height: 1.5;
color: #666;
margin: 0;
/* 显示2行超出省略 */
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
text-overflow: ellipsis;
min-height: 42px;
}
</style>
</body>
</html>