2026-04-01 14:12:17 +00:00
|
|
|
<?php
|
|
|
|
|
$pageTitle = $title ?? 'Post';
|
|
|
|
|
$contentHtml = (string)($content_html ?? '');
|
|
|
|
|
$publishedAt = (string)($published_at ?? '');
|
|
|
|
|
$authorName = (string)($author_name ?? '');
|
|
|
|
|
$category = (string)($category ?? '');
|
|
|
|
|
$tags = (string)($tags ?? '');
|
|
|
|
|
$tagList = array_filter(array_map('trim', explode(',', $tags)));
|
|
|
|
|
$publishedDisplay = '';
|
|
|
|
|
if ($publishedAt !== '') {
|
|
|
|
|
try {
|
|
|
|
|
$publishedDisplay = (new DateTime($publishedAt))->format('d M Y');
|
|
|
|
|
} catch (Throwable $e) {
|
|
|
|
|
$publishedDisplay = $publishedAt;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
ob_start();
|
|
|
|
|
?>
|
|
|
|
|
<section class="card article-shell-fluid">
|
|
|
|
|
<div class="article-fluid-grid">
|
|
|
|
|
<aside class="article-fluid-meta">
|
|
|
|
|
<div class="badge">News</div>
|
|
|
|
|
<h1 class="article-fluid-title"><?= htmlspecialchars($pageTitle, ENT_QUOTES, 'UTF-8') ?></h1>
|
|
|
|
|
<div class="article-fluid-meta-list">
|
|
|
|
|
<?php if ($publishedDisplay !== ''): ?>
|
|
|
|
|
<div class="article-fluid-meta-item">
|
|
|
|
|
<span>Date</span>
|
|
|
|
|
<strong><?= htmlspecialchars($publishedDisplay, ENT_QUOTES, 'UTF-8') ?></strong>
|
|
|
|
|
</div>
|
|
|
|
|
<?php endif; ?>
|
|
|
|
|
<?php if ($authorName !== ''): ?>
|
|
|
|
|
<div class="article-fluid-meta-item">
|
|
|
|
|
<span>Author</span>
|
|
|
|
|
<strong><?= htmlspecialchars($authorName, ENT_QUOTES, 'UTF-8') ?></strong>
|
|
|
|
|
</div>
|
|
|
|
|
<?php endif; ?>
|
|
|
|
|
<?php if ($category !== ''): ?>
|
|
|
|
|
<div class="article-fluid-meta-item">
|
|
|
|
|
<span>Category</span>
|
|
|
|
|
<strong><?= htmlspecialchars($category, ENT_QUOTES, 'UTF-8') ?></strong>
|
|
|
|
|
</div>
|
|
|
|
|
<?php endif; ?>
|
|
|
|
|
</div>
|
|
|
|
|
<?php if ($tagList): ?>
|
|
|
|
|
<div class="article-fluid-tags">
|
|
|
|
|
<?php foreach ($tagList as $tag): ?>
|
|
|
|
|
<span><?= htmlspecialchars((string)$tag, ENT_QUOTES, 'UTF-8') ?></span>
|
|
|
|
|
<?php endforeach; ?>
|
|
|
|
|
</div>
|
|
|
|
|
<?php endif; ?>
|
|
|
|
|
<a href="/news" class="article-fluid-back">Back to news</a>
|
|
|
|
|
</aside>
|
|
|
|
|
|
|
|
|
|
<div class="article-fluid-content-shell">
|
|
|
|
|
<div class="article-fluid-post-box">
|
|
|
|
|
<?= $contentHtml ?>
|
|
|
|
|
</div>
|
2026-03-04 20:46:11 +00:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</section>
|
2026-04-01 14:12:17 +00:00
|
|
|
|
|
|
|
|
<style>
|
|
|
|
|
.article-shell-fluid {
|
|
|
|
|
padding: 0;
|
|
|
|
|
}
|
|
|
|
|
.article-fluid-grid {
|
|
|
|
|
display: grid;
|
|
|
|
|
grid-template-columns: 280px minmax(0, 1fr);
|
|
|
|
|
gap: 0;
|
|
|
|
|
align-items: start;
|
|
|
|
|
min-height: 100%;
|
|
|
|
|
}
|
|
|
|
|
.article-fluid-meta {
|
|
|
|
|
display: grid;
|
|
|
|
|
gap: 18px;
|
|
|
|
|
align-content: start;
|
|
|
|
|
min-height: 100%;
|
|
|
|
|
padding: 32px 24px;
|
|
|
|
|
}
|
|
|
|
|
.article-fluid-title {
|
|
|
|
|
margin: 0;
|
|
|
|
|
color: #f5f7ff;
|
|
|
|
|
font-size: clamp(34px, 3vw, 56px);
|
|
|
|
|
line-height: .94;
|
|
|
|
|
word-break: break-word;
|
|
|
|
|
}
|
|
|
|
|
.article-fluid-meta-list {
|
|
|
|
|
display: grid;
|
|
|
|
|
gap: 14px;
|
|
|
|
|
}
|
|
|
|
|
.article-fluid-meta-item span {
|
|
|
|
|
display: block;
|
|
|
|
|
margin-bottom: 6px;
|
|
|
|
|
color: rgba(255,255,255,.56);
|
|
|
|
|
font-family: 'IBM Plex Mono', monospace;
|
|
|
|
|
font-size: 10px;
|
|
|
|
|
letter-spacing: .18em;
|
|
|
|
|
text-transform: uppercase;
|
|
|
|
|
}
|
|
|
|
|
.article-fluid-meta-item strong {
|
|
|
|
|
color: #e8eefc;
|
|
|
|
|
font-size: 15px;
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
}
|
|
|
|
|
.article-fluid-tags {
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-wrap: wrap;
|
|
|
|
|
gap: 8px;
|
|
|
|
|
}
|
|
|
|
|
.article-fluid-tags span {
|
|
|
|
|
display: inline-flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
padding: 7px 10px;
|
|
|
|
|
border-radius: 999px;
|
|
|
|
|
border: 1px solid rgba(255,255,255,.12);
|
|
|
|
|
background: rgba(255,255,255,.04);
|
|
|
|
|
color: #dce5f6;
|
|
|
|
|
font-size: 11px;
|
|
|
|
|
}
|
|
|
|
|
.article-fluid-back {
|
|
|
|
|
display: inline-flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
min-height: 42px;
|
|
|
|
|
padding: 0 14px;
|
|
|
|
|
border-radius: 999px;
|
|
|
|
|
border: 1px solid rgba(255,255,255,.14);
|
|
|
|
|
background: rgba(255,255,255,.04);
|
|
|
|
|
color: #eef4ff;
|
|
|
|
|
text-decoration: none;
|
|
|
|
|
font-family: 'IBM Plex Mono', monospace;
|
|
|
|
|
font-size: 11px;
|
|
|
|
|
letter-spacing: .16em;
|
|
|
|
|
text-transform: uppercase;
|
|
|
|
|
}
|
|
|
|
|
.article-fluid-back:hover {
|
|
|
|
|
border-color: rgba(34,242,165,.36);
|
|
|
|
|
color: #9ff8d8;
|
|
|
|
|
}
|
|
|
|
|
.article-fluid-content-shell {
|
|
|
|
|
min-width: 0;
|
|
|
|
|
min-height: 100%;
|
|
|
|
|
margin: 0;
|
|
|
|
|
padding: 40px 44px;
|
|
|
|
|
border-radius: 0 28px 28px 0;
|
|
|
|
|
background: #f4f1ec;
|
|
|
|
|
box-shadow: none;
|
|
|
|
|
}
|
|
|
|
|
.article-fluid-post-box {
|
|
|
|
|
min-width: 0;
|
|
|
|
|
padding: 0;
|
|
|
|
|
color: #26272d;
|
|
|
|
|
}
|
|
|
|
|
.article-fluid-post-box,
|
|
|
|
|
.article-fluid-post-box p,
|
|
|
|
|
.article-fluid-post-box li,
|
|
|
|
|
.article-fluid-post-box blockquote,
|
|
|
|
|
.article-fluid-post-box figcaption,
|
|
|
|
|
.article-fluid-post-box td,
|
|
|
|
|
.article-fluid-post-box th {
|
|
|
|
|
color: #3a3d45;
|
|
|
|
|
}
|
|
|
|
|
.article-fluid-post-box h1,
|
|
|
|
|
.article-fluid-post-box h2,
|
|
|
|
|
.article-fluid-post-box h3,
|
|
|
|
|
.article-fluid-post-box h4,
|
|
|
|
|
.article-fluid-post-box h5,
|
|
|
|
|
.article-fluid-post-box h6,
|
|
|
|
|
.article-fluid-post-box strong {
|
|
|
|
|
color: #202228;
|
|
|
|
|
}
|
|
|
|
|
.article-fluid-post-box,
|
|
|
|
|
.article-fluid-post-box > *,
|
|
|
|
|
.article-fluid-post-box > * > *,
|
|
|
|
|
.article-fluid-post-box > * > * > * {
|
|
|
|
|
max-width: none !important;
|
|
|
|
|
}
|
|
|
|
|
.article-fluid-post-box > * {
|
|
|
|
|
width: 100% !important;
|
|
|
|
|
margin: 0 !important;
|
|
|
|
|
}
|
|
|
|
|
.article-fluid-post-box > div,
|
|
|
|
|
.article-fluid-post-box > section,
|
|
|
|
|
.article-fluid-post-box > article,
|
|
|
|
|
.article-fluid-post-box > main,
|
|
|
|
|
.article-fluid-post-box > figure {
|
|
|
|
|
width: 100% !important;
|
|
|
|
|
max-width: none !important;
|
|
|
|
|
margin: 0 !important;
|
|
|
|
|
}
|
|
|
|
|
.article-fluid-post-box * {
|
|
|
|
|
margin-left: 0 !important;
|
|
|
|
|
margin-right: 0 !important;
|
|
|
|
|
}
|
|
|
|
|
.article-fluid-post-box [style*="max-width"],
|
|
|
|
|
.article-fluid-post-box [style*="width"],
|
|
|
|
|
.article-fluid-post-box [style*="margin: auto"],
|
|
|
|
|
.article-fluid-post-box [style*="margin-left:auto"],
|
|
|
|
|
.article-fluid-post-box [style*="margin-right:auto"] {
|
|
|
|
|
max-width: none !important;
|
|
|
|
|
width: 100% !important;
|
|
|
|
|
margin-left: 0 !important;
|
|
|
|
|
margin-right: 0 !important;
|
|
|
|
|
}
|
|
|
|
|
.article-fluid-post-box > div,
|
|
|
|
|
.article-fluid-post-box > section,
|
|
|
|
|
.article-fluid-post-box > article,
|
|
|
|
|
.article-fluid-post-box > main,
|
|
|
|
|
.article-fluid-post-box > figure,
|
|
|
|
|
.article-fluid-post-box > div > div:first-child {
|
|
|
|
|
background: transparent !important;
|
|
|
|
|
box-shadow: none !important;
|
|
|
|
|
border: 0 !important;
|
|
|
|
|
border-radius: 0 !important;
|
|
|
|
|
}
|
|
|
|
|
.article-fluid-post-box img {
|
|
|
|
|
max-width: 100%;
|
|
|
|
|
height: auto;
|
|
|
|
|
display: block;
|
|
|
|
|
}
|
|
|
|
|
.article-fluid-post-box iframe,
|
|
|
|
|
.article-fluid-post-box video,
|
|
|
|
|
.article-fluid-post-box table,
|
|
|
|
|
.article-fluid-post-box pre {
|
|
|
|
|
max-width: 100%;
|
|
|
|
|
}
|
|
|
|
|
@media (max-width: 980px) {
|
|
|
|
|
.article-fluid-grid {
|
|
|
|
|
grid-template-columns: 1fr;
|
|
|
|
|
gap: 20px;
|
|
|
|
|
}
|
|
|
|
|
.article-fluid-meta {
|
|
|
|
|
padding: 24px 24px 8px;
|
|
|
|
|
}
|
|
|
|
|
.article-fluid-content-shell {
|
|
|
|
|
margin: 0;
|
|
|
|
|
border-radius: 0 0 28px 28px;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@media (max-width: 720px) {
|
|
|
|
|
.article-shell-fluid {
|
|
|
|
|
padding: 0;
|
|
|
|
|
}
|
|
|
|
|
.article-fluid-content-shell {
|
|
|
|
|
padding: 28px 24px;
|
|
|
|
|
}
|
|
|
|
|
.article-fluid-post-box {
|
|
|
|
|
padding: 0;
|
|
|
|
|
}
|
|
|
|
|
.article-fluid-title {
|
|
|
|
|
font-size: 42px;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</style>
|
|
|
|
|
<?php
|
|
|
|
|
$content = ob_get_clean();
|
|
|
|
|
require __DIR__ . '/../../../../views/site/layout.php';
|