{{-- Données structurées présentes sur TOUTES les pages (SEO + GEO) :
Organization + WebSite (identité de marque) + BreadcrumbList (fil d'Ariane).
Garantit ≥ 3 types schema.org par page et le chemin de navigation dans Google/IA.
Les pages ajoutent en plus leur type propre (LodgingBusiness, FAQPage, Apartment…). --}}
@php
$home = url('/');
// sameAs : profils sociaux réels (on ignore les placeholders « # » et la home
// générique https://www.facebook.com/) + maillage d'identité du réseau du groupe.
$socialSameAs = array_values(array_filter([
config('javapax.facebook'),
config('javapax.airbnb'),
config('javapax.abritel'),
], fn ($u) => $u
&& $u !== '#'
&& rtrim($u, '/') !== 'https://www.facebook.com'
&& \Illuminate\Support\Str::startsWith($u, 'http')));
$groupSameAs = [
'https://handivia.fr',
'https://offresia.fr',
'https://incluvia.fr',
];
$sameAs = array_values(array_unique(array_merge($socialSameAs, $groupSameAs)));
// Entité de marque : LocalBusiness (commerce/hébergement physique au Moulleau)
// - sous-type d'Organization, donc conserve toutes ses propriétés + signaux locaux.
$organization = array_filter([
'@context' => 'https://schema.org',
'@type' => 'LocalBusiness',
'@id' => $home . '#organization',
'name' => 'JavaPax au Moulleau',
'url' => $home,
'logo' => asset('img/logo-javapax.png'),
'image' => asset('img/og-default.jpg'),
'telephone' => '+33647353370',
'email' => 'contact@javapax.fr',
'priceRange' => '€€',
'address' => [
'@type' => 'PostalAddress',
'streetAddress' => '39 Avenue Saint Dominique',
'postalCode' => '33120',
'addressLocality' => 'Arcachon',
'addressRegion' => 'Nouvelle-Aquitaine',
'addressCountry' => 'FR',
],
'geo' => ['@type' => 'GeoCoordinates', 'latitude' => 44.6418, 'longitude' => -1.2000],
'sameAs' => $sameAs ?: null,
]);
$website = [
'@context' => 'https://schema.org',
'@type' => 'WebSite',
'@id' => $home . '#website',
'name' => 'JavaPax au Moulleau',
'url' => $home,
'inLanguage' => 'fr-FR',
'publisher' => ['@id' => $home . '#organization'],
];
// Fil d'Ariane construit depuis le chemin courant : Accueil › Segment › …
$items = [['name' => 'Accueil', 'url' => $home]];
$acc = '';
foreach (request()->segments() as $seg) {
$acc .= '/' . $seg;
$items[] = [
'name' => (string) \Illuminate\Support\Str::of($seg)->replace('-', ' ')->title(),
'url' => url($acc),
];
}
$breadcrumb = [
'@context' => 'https://schema.org',
'@type' => 'BreadcrumbList',
'itemListElement' => collect($items)->map(fn ($it, $i) => [
'@type' => 'ListItem',
'position' => $i + 1,
'name' => $it['name'],
'item' => $it['url'],
])->values()->all(),
];
@endphp
@push('jsonld')
@endpush