{{-- 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