37 lines
1.9 KiB
PHP
37 lines
1.9 KiB
PHP
<?php
|
|
$n = $n ?? null;
|
|
$layoutArr = [];
|
|
if (!empty($n['layout'])) { $d = json_decode($n['layout'], true); if (is_array($d)) $layoutArr = $d; }
|
|
// 模式渲染:可视化编辑(builder)且有 layout → 画布;否则固定版式(正文富文本)
|
|
$useBuilder = !empty($layoutArr) && ($n['mode'] ?? '') !== 'fixed';
|
|
?>
|
|
<section class="page-hero">
|
|
<div class="container">
|
|
<h1><?php echo e($n['title']); ?></h1>
|
|
<p><?php echo e(format_date($n['published_at'])); ?> · <?php echo e($n['author']); ?></p>
|
|
</div>
|
|
</section>
|
|
<div class="container">
|
|
<nav class="breadcrumb"><a href="<?php echo site_url(); ?>">首页</a> / <a href="<?php echo site_url('news'); ?>">新闻动态</a> / <?php echo e($n['title']); ?></nav>
|
|
</div>
|
|
|
|
<?php if ($useBuilder): ?>
|
|
<?php echo \Core\View::buffer('parts/canvas', ['layout' => $layoutArr, 'item' => $n, 'module' => 'news']); ?>
|
|
<?php else: ?>
|
|
<section class="section" style="padding-top:10px">
|
|
<div class="container" style="max-width:780px">
|
|
<article class="detail-desc detail-rich" style="font-size:16px"><?php echo $n['content']; ?></article>
|
|
</div>
|
|
</section>
|
|
<?php endif; ?>
|
|
|
|
<section class="section" style="padding-top:0">
|
|
<div class="container" style="max-width:780px">
|
|
<div style="display:flex;justify-content:space-between;margin-top:40px;gap:12px;flex-wrap:wrap">
|
|
<?php if ($prev): ?><a class="btn btn-ghost" href="<?php echo site_url('news/' . $prev['slug']); ?>">← <?php echo e(mb_substr($prev['title'],0,14)); ?></a><?php else: ?><span></span><?php endif; ?>
|
|
<?php if ($next): ?><a class="btn btn-ghost" href="<?php echo site_url('news/' . $next['slug']); ?>"><?php echo e(mb_substr($next['title'],0,14)); ?> →</a><?php else: ?><span></span><?php endif; ?>
|
|
</div>
|
|
<div style="text-align:center;margin-top:30px"><a class="more-link" href="<?php echo site_url('news'); ?>">返回新闻列表</a></div>
|
|
</div>
|
|
</section>
|