Servizi e landing Promo ed eventi: rinomine, pulizia contenuti e nuova pagina
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>
This commit is contained in:
+12
-1
@@ -98,7 +98,6 @@ export function createDb(path?: string): Database.Database {
|
||||
['services.meta.title', 'Programmi'],
|
||||
['services.meta.description', 'I programmi InsanityLab: Personal Training, Performance Class, Coaching, Pilates Flow, Rehab e Nutrizione.'],
|
||||
['services.hero.title', 'Programmi'],
|
||||
['services.intro.title', 'Programmi'],
|
||||
["services.intro.body", "Questi sono i programmi delle classi di Insanity Lab selezionati per voi. Abbiamo scelto i migliori percorsi per offrirvi un'esperienza di allenamento completa e mirata."],
|
||||
['service.side.others-label', 'Altri programmi'],
|
||||
['service.pricing.empty-note', 'Contattaci per i dettagli di questo programma. <a href="/contact">Scrivici →</a>'],
|
||||
@@ -111,6 +110,18 @@ export function createDb(path?: string): Database.Database {
|
||||
}
|
||||
});
|
||||
renameTx();
|
||||
|
||||
// Modifiche 03: "Personal Training" → "One to One" (nuovo slug one-to-one). Rinomina i tag
|
||||
// esistenti prima del seed per preservare le modifiche da pannello; il title di default viene
|
||||
// aggiornato solo se non modificato. La nuova pagina "Small Group" (slug small-group) è un
|
||||
// servizio nuovo e viene inserita dal seed più sotto. Idempotente.
|
||||
const oneToOneTx = db.transaction(() => {
|
||||
renameUpd.run('service.one-to-one.', 'service.personal-training.'.length + 1, 'service.personal-training.%');
|
||||
renameDel.run('service.personal-training.%');
|
||||
db.prepare("UPDATE content_blocks SET value = 'One to One' WHERE tag = 'service.one-to-one.title' AND value = 'Personal Training'").run();
|
||||
});
|
||||
oneToOneTx();
|
||||
|
||||
const ins = db.prepare('INSERT OR IGNORE INTO content_blocks (tag, type, value, guid) VALUES (?, ?, ?, ?)');
|
||||
const syncTx = db.transaction(() => { for (const e of contentSeed) ins.run(e.tag, e.type, e.value, randomUUID()); });
|
||||
syncTx();
|
||||
|
||||
Reference in New Issue
Block a user