Feat: Livres blancs — nouveau template collection + livre blanc individuel
- Blueprints white-papers / white-paper (intro, cover, PDF, date) - Templates PHP + JSON API (liste avec singleSlug, détail avec fileUrl) - Route POST (:any)/(:any)/download pour le téléchargement gated - Panel : entrée white-papers ajoutée au menu après blog - collection.css : styles partagés extraits de Blog (collection-*) - Blog.svelte : classes renommées blog-* → collection-* - WhitePapers.svelte : vue liste, URLs dynamiques via data.uri - WhitePaper.svelte : vue détail deux colonnes + formulaire de téléchargement - i18n : clés white paper (label, form, consentement, statuts) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
42ee58c18d
commit
d4f05d6157
17 changed files with 870 additions and 183 deletions
26
site/templates/white-papers.json.php
Normal file
26
site/templates/white-papers.json.php
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
<?php
|
||||
|
||||
$items = $page->children()->listed()->sortBy('published', 'desc');
|
||||
|
||||
$mapItem = function ($item) {
|
||||
return [
|
||||
'title' => $item->title()->value(),
|
||||
'slug' => $item->slug(),
|
||||
'published' => $item->published()->toDate('d/m/Y'),
|
||||
'intro' => $item->intro()->value(),
|
||||
'cover' => $item->cover()->toFile()?->url(),
|
||||
];
|
||||
};
|
||||
|
||||
$singleSlug = $items->count() === 1 ? $items->first()->slug() : null;
|
||||
|
||||
$specificData = [
|
||||
'intro' => $page->intro()->value(),
|
||||
'items' => $items->map($mapItem)->values(),
|
||||
'singleSlug' => $singleSlug,
|
||||
];
|
||||
|
||||
$pageData = array_merge($genericData, $specificData);
|
||||
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode($pageData);
|
||||
Loading…
Add table
Add a link
Reference in a new issue