world-game/site/templates/blog.json.php
isUnknown 3ab4b21e8c Feat: implémentation front page Blog
- blog.json.php : réécriture — intro (writer), featured (pages field),
  articles triés par date desc (featured exclu de la liste)
- layout.css : .page-scrollable + .page-container (styles génériques
  pour pages scrollables type blog/article)
- Blog.svelte : page scrollable avec header intro, article featured
  (image large + excerpt), liste articles avec dividers, responsive
  mobile/tablet via @custom-media

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-10 16:47:49 +01:00

28 lines
761 B
PHP

<?php
$featured = $page->featured()->toPages()->first();
$mapArticle = function($article) {
return [
'title' => $article->title()->value(),
'slug' => $article->slug(),
'date' => $article->date()->toDate('d/m/Y'),
'intro' => $article->intro()->excerpt(200),
'cover' => $article->cover()->toFile()?->url(),
];
};
$articles = $page->children()->listed()->sortBy('date', 'desc');
$specificData = [
'intro' => $page->intro()->value(),
'featured' => $featured ? $mapArticle($featured) : null,
'articles' => ($featured ? $articles->not($featured) : $articles)
->map($mapArticle)
->values(),
];
$pageData = array_merge($genericData, $specificData);
header('Content-Type: application/json');
echo json_encode($pageData);