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>
This commit is contained in:
parent
2352b621e5
commit
3ab4b21e8c
3 changed files with 258 additions and 28 deletions
|
|
@ -1,23 +1,25 @@
|
|||
<?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' => [
|
||||
'title' => $page->introTitle()->value(),
|
||||
'text' => $page->introText()->value()
|
||||
],
|
||||
'articles' => $page->children()->listed()->sortBy('date', 'desc')->map(function($article) {
|
||||
return [
|
||||
'title' => $article->title()->value(),
|
||||
'slug' => $article->slug(),
|
||||
'url' => $article->url(),
|
||||
'date' => $article->date()->toDate('Y-m-d'),
|
||||
'dateFormatted' => $article->date()->toDate('d/m/Y'),
|
||||
'intro' => $article->intro()->excerpt(200),
|
||||
'cover' => $article->cover()->toFile()?->url(),
|
||||
'authorName' => $article->authorName()->value(),
|
||||
'authorPhoto' => $article->authorPhoto()->toFile()?->url()
|
||||
];
|
||||
})->values()
|
||||
'intro' => $page->intro()->value(),
|
||||
'featured' => $featured ? $mapArticle($featured) : null,
|
||||
'articles' => ($featured ? $articles->not($featured) : $articles)
|
||||
->map($mapArticle)
|
||||
->values(),
|
||||
];
|
||||
|
||||
$pageData = array_merge($genericData, $specificData);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue