feat: horário em 3 dias, horário de funcionamento compacto, textura na equipa, estrutura/SEO

- Horário de aulas: cartões mais pequenos e estreitos; a partir de 992px mostra
  o dia anterior, hoje ao centro e o seguinte (a dar a volta à semana), com as
  horas alinhadas e os dias laterais esbatidos. O JPG continua a semana toda.
- Horário de funcionamento: cartões compactos numa <dl>, ordenados por hora.
- Equipa: fundo no cinzento da parede do ginásio com juntas de blocos e grão
  muito discretos (SVG inline).
- Tira o «FitMe 3070» do header e esconde a newsletter.
- Estrutura: um <main> em todas as páginas públicas (skip link aponta-lhe),
  h2 por secção com aria-labelledby, h3 nos itens em vez de h4, sem secções
  aninhadas, alts distintos na galeria e no h1 do CrossFit.
- robots.txt e sitemap.xml gerados com o domínio da instalação; SEO_NOINDEX
  no .env tira uma cópia de staging dos motores de pesquisa.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
andreandClaude Opus 5.5 committed 2026-09-24 21:46:21 +01:00
1 parent 90ee2a93bc
commit 8ebf20f52f
11 files changed
+317 -57

No files matched your search

+23
View File
@@ -101,3 +101,26 @@ function site_horario(PDO $pdo, string $local = ''): array {
try { $st = $pdo->prepare($sql); $st->execute($args); return $st->fetchAll(PDO::FETCH_ASSOC); }
catch (Throwable $e) { return []; }
}
// ─── Indexing ─────────────────────────────────────────────────────────────────
// SEO_NOINDEX=true in .env keeps an install out of search results (meta robots
// + robots.txt "Disallow: /"). For staging copies such as fitme.andmore.pt,
// which serve the same content as the real domain and would otherwise compete
// with it as duplicate content.
function seo_noindex(): bool {
return filter_var(env('SEO_NOINDEX', 'false'), FILTER_VALIDATE_BOOLEAN);
}
// Public, indexable URLs for sitemap.xml: the fixed pages plus any live event
// landing page.
function site_sitemap_urls(PDO $pdo): array {
$urls = [
['loc' => base_url(), 'priority' => '1.0'],
['loc' => base_url('home/crossfit'), 'priority' => '0.8'],
['loc' => base_url('home/privacidade'), 'priority' => '0.2'],
];
foreach (site_active_events($pdo) as $ev) {
$urls[] = ['loc' => base_url('evento/' . rawurlencode($ev['slug'])), 'priority' => '0.6'];
}
return $urls;
}