增加企业产品分类

This commit is contained in:
2026-03-21 14:12:21 +08:00
parent 9281c1dc35
commit 2a6b14f698
13 changed files with 1139 additions and 277 deletions
+137 -78
View File
@@ -1,107 +1,166 @@
<?php
$pageTitle = '新闻中心详情 - Nova';
$pageDescription = 'Nova Bootstrap Template 的新闻中心详情页面';
$pageKeywords = 'blog, details, nova';
require_once __DIR__ . '/header.php';
?>
<!-- Page Title -->
<div class="page-title dark-background" data-aos="fade" style="background-image: url(<?php echo $baseUrl; ?>/themes/template3/assets/img/blog-page-title-bg.jpg);">
<div class="container">
<h1>博客详情</h1>
<nav class="breadcrumbs">
<ol>
<li><a href="<?php echo $baseUrl; ?>/">主页</a></li>
<li class="current">博客详情</li>
</ol>
</nav>
</div>
</div><!-- End Page Title -->
<?php
// 支持 Index@articleDetail 注入 $pageTitle 等;直接访问 /blog-details 时用默认文案
$pageTitle = (isset($pageTitle) && $pageTitle !== '') ? $pageTitle : '新闻中心详情 - Nova';
$pageDescription = (isset($pageDescription) && $pageDescription !== '') ? $pageDescription : 'Nova Bootstrap Template 的新闻中心详情页面';
$pageKeywords = (isset($pageKeywords) && $pageKeywords !== '') ? $pageKeywords : 'blog, details, nova';
$article = (isset($article) && is_array($article)) ? $article : [];
$hasArticle = !empty($article['id']);
// 面包屑第三段:文章分类名(与控制器注入的 $articleCategoryName 一致)
$cateName = (isset($articleCategoryName) && (string) $articleCategoryName !== '') ? (string) $articleCategoryName : '未分类';
require_once __DIR__ . '/header.php';
?>
<!-- Page Title -->
<div class="page-title dark-background" data-aos="fade" style="background-image: url(<?php echo $baseUrl; ?>/themes/template3/assets/img/blog-page-title-bg.jpg);">
<div class="container">
<div class="row">
<h1><?php echo $hasArticle ? htmlspecialchars($article['title'] ?? '博客详情') : '博客详情'; ?></h1>
<nav class="breadcrumbs">
<ol>
<li><a href="<?php echo htmlspecialchars($baseUrl); ?>/">主页</a></li>
<li><a href="<?php echo htmlspecialchars($baseUrl . '/blog'); ?>">新闻中心</a></li>
<li class="current"><?php echo htmlspecialchars($cateName); ?></li>
</ol>
</nav>
</div>
</div><!-- End Page Title -->
<div class="col-lg-12">
<div class="container">
<div class="row">
<!-- Blog Details Section -->
<section id="blog-details" class="blog-details section">
<div class="container">
<div class="col-lg-12">
<article class="article">
<!-- Blog Details Section -->
<section id="blog-details" class="blog-details section">
<div class="container">
<div class="post-img">
<img src="<?php echo $baseUrl; ?>/themes/template3/assets/img/blog/blog-1.jpg" alt="" class="img-fluid">
</div>
<article class="article">
<?php if ($hasArticle): ?>
<?php
$detailTitle = $article['title'] ?? '无标题';
$detailAuthor = $article['author'] ?? '';
$publishRaw = $article['publish_date'] ?? ($article['create_time'] ?? '');
$publishTs = ($publishRaw !== '') ? strtotime((string) $publishRaw) : false;
$publishDateAttr = ($publishTs !== false) ? date('c', $publishTs) : '';
$publishDateText = ($publishTs !== false) ? date('Y年m月d日', $publishTs) : '';
$views = (int) ($article['views'] ?? 0);
$coverSrc = !empty($articleCoverUrl)
? $articleCoverUrl
: ($baseUrl . '/themes/template3/assets/img/blog/blog-1.jpg');
?>
<h2 class="title">Dolorum optio tempore voluptas dignissimos cumque fuga qui quibusdam quia</h2>
<h2 class="title"><?php echo htmlspecialchars($detailTitle); ?></h2>
<div class="meta-top">
<ul>
<li class="d-flex align-items-center"><i class="bi bi-person"></i> <a href="<?php echo $baseUrl; ?>/blog-details">John Doe</a></li>
<li class="d-flex align-items-center"><i class="bi bi-clock"></i> <a href="<?php echo $baseUrl; ?>/blog-details"><time datetime="2020-01-01">Jan 1, 2022</time></a></li>
<li class="d-flex align-items-center"><i class="bi bi-chat-dots"></i> <a href="<?php echo $baseUrl; ?>/blog-details">12 Comments</a></li>
<li class="d-flex align-items-center"><i class="bi bi-person"></i> <span><?php echo htmlspecialchars($detailAuthor !== '' ? $detailAuthor : '—'); ?></span></li>
<li class="d-flex align-items-center"><i class="bi bi-clock"></i> <?php if ($publishDateText !== ''): ?><time datetime="<?php echo htmlspecialchars($publishDateAttr); ?>"><?php echo htmlspecialchars($publishDateText); ?></time><?php else: ?><span>—</span><?php endif; ?></li>
<li class="d-flex align-items-center"><i class="bi bi-eye"></i> <span id="article-views-count">阅读 <?php echo $views; ?></span></li>
</ul>
</div><!-- End meta top -->
<div class="content">
<p>
Similique neque nam consequuntur ad non maxime aliquam quas. Quibusdam animi praesentium. Aliquam et laboriosam eius aut nostrum quidem aliquid dicta.
Et eveniet enim. Qui velit est ea dolorem doloremque deleniti aperiam unde soluta. Est cum et quod quos aut ut et sit sunt. Voluptate porro consequatur assumenda perferendis dolore.
</p>
<p>
Sit repellat hic cupiditate hic ut nemo. Quis nihil sunt non reiciendis. Sequi in accusamus harum vel aspernatur. Excepturi numquam nihil cumque odio. Et voluptate cupiditate.
</p>
<blockquote>
<p>
Et vero doloremque tempore voluptatem ratione vel aut. Deleniti sunt animi aut. Aut eos aliquam doloribus minus autem quos.
</p>
</blockquote>
<p>
Sed quo laboriosam qui architecto. Occaecati repellendus omnis dicta inventore tempore provident voluptas mollitia aliquid. Id repellendus quia. Asperiores nihil magni dicta est suscipit perspiciatis. Voluptate ex rerum assumenda dolores nihil quaerat.
Dolor porro tempora et quibusdam voluptas. Beatae aut at ad qui tempore corrupti velit quisquam rerum. Omnis dolorum exercitationem harum qui qui blanditiis neque.
Iusto autem itaque. Repudiandae hic quae aspernatur ea neque qui. Architecto voluptatem magni. Vel magnam quod et tempora deleniti error rerum nihil tempora.
</p>
<h3>Et quae iure vel ut odit alias.</h3>
<p>
Officiis animi maxime nulla quo et harum eum quis a. Sit hic in qui quos fugit ut rerum atque. Optio provident dolores atque voluptatem rem excepturi molestiae qui. Voluptatem laborum omnis ullam quibusdam perspiciatis nulla nostrum. Voluptatum est libero eum nesciunt aliquid qui.
Quia et suscipit non sequi. Maxime sed odit. Beatae nesciunt nesciunt accusamus quia aut ratione aspernatur dolor. Sint harum eveniet dicta exercitationem minima. Exercitationem omnis asperiores natus aperiam dolor consequatur id ex sed. Quibusdam rerum dolores sint consequatur quidem ea.
Beatae minima sunt libero soluta sapiente in rem assumenda. Et qui odit voluptatem. Cum quibusdam voluptatem voluptatem accusamus mollitia aut atque aut.
</p>
<img src="<?php echo $baseUrl; ?>/themes/template3/assets/img/blog/blog-inside-post.jpg" class="img-fluid" alt="">
<h3>Ut repellat blanditiis est dolore sunt dolorum quae.</h3>
<p>
Rerum ea est assumenda pariatur quasi et quam. Facilis nam porro amet nostrum. In assumenda quia quae a id praesentium. Quos deleniti libero sed occaecati aut porro autem. Consectetur sed excepturi sint non placeat quia repellat incidunt labore. Autem facilis hic dolorum dolores vel.
Consectetur quasi id et optio praesentium aut asperiores eaque aut. Explicabo omnis quibusdam esse. Ex libero illum iusto totam et ut aut blanditiis. Veritatis numquam ut illum ut a quam vitae.
</p>
<p>
Alias quia non aliquid. Eos et ea velit. Voluptatem maxime enim omnis ipsa voluptas incidunt. Nulla sit eaque mollitia nisi asperiores est veniam.
</p>
<div class="content article-body">
<?php echo $article['content'] ?? ''; ?>
</div><!-- End post content -->
<div class="meta-bottom">
<i class="bi bi-folder"></i>
<ul class="cats">
<li><a href="#">Business</a></li>
<li><span><?php echo htmlspecialchars($cateName); ?></span></li>
</ul>
</div><!-- End meta bottom -->
<?php else: ?>
<p class="text-center py-5">暂无文章数据,请从<a href="<?php echo htmlspecialchars($baseUrl . '/blog'); ?>">新闻列表</a>进入详情。</p>
<?php endif; ?>
</article>
</article>
</div>
</section>
</div>
</section><!-- /Blog Details Section -->
</div>
</div>
</div>
</div>
</main>
<?php require_once __DIR__ . '/footer.php'; ?>
<?php if ($hasArticle): ?>
<script>
(function () {
var id = <?php echo (int) ($article['id'] ?? 0); ?>;
if (!id) return;
var url = <?php echo json_encode(rtrim($baseUrl, '/') . '/articleViews/', JSON_UNESCAPED_SLASHES); ?> + id;
var el = document.getElementById('article-views-count');
fetch(url, { method: 'POST', credentials: 'same-origin', headers: { 'Accept': 'application/json' } })
.then(function (r) { return r.json(); })
.then(function (res) {
if (res && res.code === 200 && res.data && typeof res.data.views !== 'undefined' && el) {
el.textContent = '阅读 ' + res.data.views;
}
})
.catch(function () { /* 静默失败,保留服务端渲染的阅读量 */ });
})();
</script>
<script>
(function () {
var root = document.querySelector('.blog-details .content.article-body');
if (!root) return;
root.querySelectorAll('pre').forEach(function (pre) {
if (pre.closest('.article-code-block')) return;
var wrap = document.createElement('div');
wrap.className = 'article-code-block';
pre.parentNode.insertBefore(wrap, pre);
wrap.appendChild(pre);
var btn = document.createElement('button');
btn.type = 'button';
btn.className = 'article-code-copy';
btn.setAttribute('aria-label', '复制代码');
btn.textContent = '复制';
wrap.insertBefore(btn, pre);
btn.addEventListener('click', function () {
var text = (pre.innerText !== undefined ? pre.innerText : pre.textContent) || '';
function showDone() {
btn.textContent = '已复制';
btn.classList.add('is-done');
clearTimeout(btn._copyReset);
btn._copyReset = setTimeout(function () {
btn.textContent = '复制';
btn.classList.remove('is-done');
}, 2000);
}
function showFail() {
btn.textContent = '复制失败';
clearTimeout(btn._copyReset);
btn._copyReset = setTimeout(function () { btn.textContent = '复制'; }, 2000);
}
if (navigator.clipboard && typeof navigator.clipboard.writeText === 'function') {
navigator.clipboard.writeText(text).then(showDone).catch(function () {
fallbackCopy();
});
} else {
fallbackCopy();
}
function fallbackCopy() {
var ta = document.createElement('textarea');
ta.value = text;
ta.setAttribute('readonly', '');
ta.style.position = 'fixed';
ta.style.left = '-9999px';
document.body.appendChild(ta);
ta.select();
try {
if (document.execCommand('copy')) showDone();
else showFail();
} catch (e) {
showFail();
}
document.body.removeChild(ta);
}
});
});
})();
</script>
<?php endif; ?>
<?php require_once __DIR__ . '/footer.php'; ?>