jalil.arfaoui.net/src/layouts/PhotoLayout.astro
Jalil Arfaoui 23510f59b1 Infrastructure SEO complète : sitemap, meta descriptions, OG, Twitter Cards, JSON-LD, hreflang
- Ajout de site: 'https://jalil.arfaoui.net' et @astrojs/sitemap avec support i18n dans astro.config.mjs
- Création de src/components/SEO.astro : meta description, canonical, Open Graph, Twitter Cards, hreflang (fr/en/ar/x-default), JSON-LD Person (11 liens sameAs) sur chaque page et JSON-LD WebSite sur les pages d'accueil
- Création de src/utils/page-translations.ts : mapping centralisé des URLs entre langues
- Fix lang="en" hardcodé dans main.astro → lang dynamique + dir="rtl" pour l'arabe
- Ajout de meta descriptions ciblées sur les 13 pages principales (FR/EN/AR)
- Refactorisation du LanguageSwitcher pour utiliser le mapping centralisé
- Ajout de la directive Sitemap dans robots.txt
2026-02-21 14:37:54 +01:00

56 lines
No EOL
2.1 KiB
Text

---
import PhotoFooter from '../components/photo/PhotoFooter.astro';
import SEO from '../components/SEO.astro';
import type { Locale } from '../utils/i18n';
interface Props {
title?: string;
description?: string;
enableScroll?: boolean;
lang?: Locale;
}
const {
title = "Galerie Photo - Jalil Arfaoui",
description = "Portfolio photo de Jalil Arfaoui. Portraits, paysages, cultures, musique, nature.",
enableScroll = false,
lang = 'fr',
} = Astro.props;
---
<!doctype html>
<html lang={lang} dir={lang === 'ar' ? 'rtl' : 'ltr'}>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>{title}</title>
<SEO title={title} description={description} />
<!-- Google Fonts - Karla -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Karla:ital,wght@0,400;0,600;0,700;1,400&display=swap" rel="stylesheet">
<!-- Dark mode script (appliqué directement pour la galerie) -->
<script is:inline>
document.documentElement.classList.add('dark')
</script>
<link rel="icon" type="image/x-icon" href="/assets/images/favicon.png" />
<link rel="alternate" type="application/rss+xml" title="Jalil Arfaoui — Photo Blog" href="/rss.xml" />
<!-- Privacy-friendly analytics by Plausible -->
<script is:inline async src="https://plausible.io/js/pa-fP2pF1VtXKDIjQczHCynl.js"></script>
<script is:inline>
window.plausible=window.plausible||function(){(plausible.q=plausible.q||[]).push(arguments)},plausible.init=plausible.init||function(i){plausible.o=i||{}};
plausible.init()
</script>
<Fragment set:html={import.meta.env.HEADER_INJECT} />
</head>
<body class={`antialiased bg-black text-white ${enableScroll ? '' : 'overflow-hidden'}`} style="font-family: 'Karla', 'Helvetica Neue', Helvetica, Arial, sans-serif;">
<slot />
<PhotoFooter lang={lang} />
<Fragment set:html={import.meta.env.FOOTER_INJECT} />
</body>
</html>