cai-exos-systems/daveadmin-exos-new:blog.php
blog.php
```text
<?php
/**
* Exos Systems - Blog
*/
require_once __DIR__ . '/config/config.php';
enforcePublicModuleVisible('page_blog', [
'current_page' => 'blog',
'page_title' => 'Blog unavailable | Exos Systems',
'page_description' => 'The blog page is not currently public.',
]);
$page = getPage('blog');
$posts = getBlogPosts([
'public_only' => true,
]);
$currentPage = 'insights';
$pageTitle = $page['meta_title'] ?? 'Blog | Exos Systems';
$pageDescription = $page['meta_description'] ?? 'Read Exos blog posts on telecom delivery, BSS transformation, AI enablement, and operating model change.';
$pageSeoExtra = [
'og_title' => $pageTitle,
'og_description' => $pageDescription,
'og_image' => $page['og_image'] ?? '',
'twitter_card' => 'summary_large_image',
'canonical_url' => SITE_URL . '/blog.php',
'meta_title' => $pageTitle,
'meta_description' => $pageDescription,
];
$pageJsonLd = getJsonLd('BreadcrumbList', [
'items' => [
['label' => 'Home', 'url' => 'index.php'],
['label' => 'Insights', 'url' => 'insights.php'],
['label' => 'Blog', 'url' => 'blog.php'],
],
]);
require_once EXOS_INCLUDES_PATH . '/header.php';
?>
<section class="page-hero">
<div class="container" data-animate="fade-up">
<?= buildBreadcrumb([['label' => 'Insights', 'url' => 'insights.php'], ['label' => 'Blog']]) ?>
<h1 class="page-hero__title"><?= sanitize($page['title'] ?? 'Blog') ?></h1>
<p class="page-hero__subtitle"><?= sanitize($page['subtitle'] ?? 'Opinionated notes, observations, and practical telecom delivery commentary.') ?></p>
</div>
</section>
<?php if (!empty($page['content'])): ?>
<section class="section">
<div class="container" data-animate="fade-up">
<div class="cms-content"><?= $page['content'] ?></div>
</div>
</section>
<?php endif; ?>
<section class="section">
<div class="container">
<?php if ($posts): ?>
<div class="blog-grid">
<?php foreach ($posts as $i => $post): ?>
<a href="<?= sanitize(getBlogPostUrl($post)) ?>" class="blog-card" data-animate="fade-up" data-delay="<?= $i * 80 ?>">
<?php if (!empty($post['cover_image'])): ?>
<div class="blog-card__media">
<img src="<?= sanitize(getPublicAssetUrl($post['cover_image'])) ?>" alt="<?= sanitize($post['title']) ?>">
</div>
<?php endif; ?>
<div class="blog-card__meta">
<span><?= sanitize($post['author_name'] ?: 'Exos Systems') ?></span>
<?php if (!empty($post['published_at'])): ?>
<span><?= sanitize(formatDate($post['published_at'], 'M j, Y')) ?></span>
<?php endif; ?>
</div>
<h2 class="blog-card__title"><?= sanitize($post['title']) ?></h2>
<p class="blog-card__excerpt"><?= sanitize($post['excerpt']) ?></p>
<span class="service-card__cta">Read Exos viewpoint</span>
</a>
<?php endforeach; ?>
</div>
<?php else: ?>
<div class="glass-card" data-animate="fade-up">
<p>No blog posts are published yet.</p>
</div>
<?php endif; ?>
</div>
</section>
<?php require_once EXOS_INCLUDES_PATH . '/footer.php'; ?>
```