All checks were successful
Deploy / Deploy to Production (push) Successful in 24s
- Footer global fixé en bas (App.svelte), masqué par le contenu des slides - margin-bottom sur .page-scrollable pour l'effet footer reveal (about, blog, article) - About : champ intro remplacé par heading (text) + subtitle (writer), blueprint + API + vue mis à jour - LanguageSwitcher : div → button avec hitbox élargie - i18n : clé our_team (fr: NOTRE ÉQUIPE / en: OUR TEAM) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
29 lines
780 B
PHP
29 lines
780 B
PHP
<?php
|
|
|
|
$bodyBlocks = [];
|
|
foreach ($page->body()->toBlocks() as $block) {
|
|
if ($block->type() === 'text') {
|
|
$bodyBlocks[] = [
|
|
'type' => 'text',
|
|
'html' => $block->content()->text()->value()
|
|
];
|
|
}
|
|
}
|
|
|
|
$specificData = [
|
|
'heading' => $page->heading()->value(),
|
|
'subtitle' => $page->subtitle()->value(),
|
|
'body' => $bodyBlocks,
|
|
'team' => $page->files()->template('member')->sort('sort')->map(function ($file) {
|
|
return [
|
|
'name' => $file->memberName()->value(),
|
|
'role' => $file->role()->value(),
|
|
'photo' => $file->url(),
|
|
];
|
|
})->values()
|
|
];
|
|
|
|
$pageData = array_merge($genericData, $specificData);
|
|
|
|
header('Content-Type: application/json');
|
|
echo json_encode($pageData);
|