11fc2b3e54
Servizi: - Personal Training rinominato "One to One" (slug /services/one-to-one) con redirect 301 dal vecchio URL e migrazione DB idempotente dei contenuti taggati - Nuova pagina "Small Group" (slug /services/small-group, fuori dalla griglia) - Rimossi i titoli intro di /training e /services e le liste feature di One to One, Small Group, Rehab e Osteopatia; la lista feature ora è condizionale - Fix elenco puntato nel long-description (white-space: pre-line, selettore ancorato al container per gli elementi resi dal componente <T>) - Immagine di Performance Class aggiornata - Nella griglia Servizi i riquadri "One to One" e "Performance Class" rimandano a /training; nella pagina Training i riquadri One to One e Small Group aprono le rispettive schede servizio Landing: - Pagina "Promo ed eventi" (slug /promo-eventi) integrata nel sito con header e footer condivisi, basata sul nuovo mockup di lancio - Card a 5 incontri con prezzi edizione apertura, FAQ ad accordion e acquisto tramite gestionale bsport - Nuova voce di menu "Promo ed eventi" Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
19 lines
911 B
TypeScript
19 lines
911 B
TypeScript
import type { APIRoute } from 'astro';
|
|
import { getDb } from '../lib/db';
|
|
import { services } from '../data/services';
|
|
export const prerender = false;
|
|
|
|
const STATIC = ['/', '/about', '/contact', '/training', '/services', '/blog', '/promo-eventi'];
|
|
|
|
export const GET: APIRoute = ({ site }) => {
|
|
const base = (site ?? new URL('https://insanitylab.tielogic.xyz')).toString().replace(/\/$/, '');
|
|
const posts = getDb().prepare('SELECT slug FROM posts WHERE draft = 0').all() as { slug: string }[];
|
|
const urls = [
|
|
...STATIC,
|
|
...services.map((p) => `/services/${p.slug}`),
|
|
...posts.map((p) => `/blog/${p.slug}`),
|
|
];
|
|
const xml = `<?xml version="1.0" encoding="UTF-8"?>\n<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n${urls.map((u) => ` <url><loc>${base}${u}</loc></url>`).join('\n')}\n</urlset>`;
|
|
return new Response(xml, { headers: { 'Content-Type': 'application/xml' } });
|
|
};
|