Migration vers architecture Svelte + Kirby inspirée de design-to-pack
- Mise en place de Svelte 4 avec Vite pour le frontend (SPA)
- Simplification des templates PHP (header/footer minimalistes)
- Création de templates JSON pour API (home, about, expertise, portfolio, jouer, game, blog, article, project)
- Ajout d'un controller de site pour définir genericData globalement
- Structure des stores Svelte (page, navigation, locale, site)
- Router avec navaid pour navigation SPA et interception des liens
- Composants layout (Header, Footer, Cursor) et vues de base
- Build Vite vers assets/dist/ (index.js/css)
- Header PHP détecte assets/dist pour basculer dev/prod
Architecture fonctionnelle de base établie, à améliorer et compléter.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 16:30:15 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
$specificData = [
|
|
|
|
|
'hero' => [
|
|
|
|
|
'title' => $page->hero_title()->value(),
|
|
|
|
|
'title_highlight' => $page->hero_title_highlight()->value(),
|
|
|
|
|
'subtitle' => $page->hero_subtitle()->value(),
|
2026-02-18 12:08:08 +01:00
|
|
|
'ctaText' => $page->ctaText()->value(),
|
|
|
|
|
'ctaPath' => $page->ctaLink()->toPage()?->id() ?? '#',
|
Migration vers architecture Svelte + Kirby inspirée de design-to-pack
- Mise en place de Svelte 4 avec Vite pour le frontend (SPA)
- Simplification des templates PHP (header/footer minimalistes)
- Création de templates JSON pour API (home, about, expertise, portfolio, jouer, game, blog, article, project)
- Ajout d'un controller de site pour définir genericData globalement
- Structure des stores Svelte (page, navigation, locale, site)
- Router avec navaid pour navigation SPA et interception des liens
- Composants layout (Header, Footer, Cursor) et vues de base
- Build Vite vers assets/dist/ (index.js/css)
- Header PHP détecte assets/dist pour basculer dev/prod
Architecture fonctionnelle de base établie, à améliorer et compléter.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 16:30:15 +01:00
|
|
|
'image' => $page->hero_image()->toFile()?->url()
|
|
|
|
|
],
|
|
|
|
|
'background_video' => $page->background_video()->toFile()?->url(),
|
|
|
|
|
'floating_bubbles' => $page->floating_bubbles()->toStructure()->map(function($bubble) {
|
|
|
|
|
return [
|
|
|
|
|
'text' => $bubble->text()->value(),
|
|
|
|
|
'position' => $bubble->position()->value()
|
|
|
|
|
];
|
|
|
|
|
})->values()
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
$pageData = array_merge($genericData, $specificData);
|
|
|
|
|
|
|
|
|
|
header('Content-Type: application/json');
|
|
|
|
|
echo json_encode($pageData);
|