3741ce34ac
Il documento MODIFICHE_PER_SITO.pdf porta cinque cose.
1. "Small Group" si chiama "Personalized Training Group". Il nome vive anche
nel database dei contenuti, dove `resolveContent` legge prima della copia
nel codice: `scripts/testi-17-agosto.mjs` aggiorna le 19 righe rimaste,
una volta sola, correggendo anche gli articoli ("Lo Small Group" -> "Il
Personalized Training Group"). Lo slug della scheda resta `small-group`:
cambiarlo romperebbe i link gia' girati su WhatsApp.
2. Dalla pagina Servizi le card instradano dove serve. "One to One" apre la
vista Training con One to One, Personalized Training Group e Rehab;
"Class" quella con Holistic e Reformer. Le viste sono `/training/<vista>`;
una vista inventata e' 404, non l'elenco intero, altrimenti un indirizzo
rotto continuerebbe a sembrare buono.
3. La Performance Class non si eroga piu': la scheda che la spiegava
risponde 404, la card "Class" resta in griglia. Con la scheda e' caduta la
tabella prezzi, che era solo sua.
4. Il Check-up racconta Base e Avanzato: trafiletto nuovo nella card e
sezione "Check-up Avanzato" nella scheda, con la Wellness Tower e i cinque
punti. Il calendario delle class si apre ora anche dalla card Class in
griglia e dalla scheda Reformer, oltre che da Holistic.
5. "Promo ed eventi" diventa una pagina di scelta: le promozioni restano su
/promo-eventi/promo, l'inaugurazione del 19 settembre sta su
/promo-eventi/eventi. Il testo dice che il programma della giornata manca
ancora, ed e' editabile dal pannello.
Corretti due link del footer che portavano a schede inesistenti
(`/services/personal-training` non e' mai stato uno slug).
181 test verdi (157 + 24 nuovi), build ok, `astro check` invariato.
57 lines
2.9 KiB
Plaintext
57 lines
2.9 KiB
Plaintext
---
|
|
import Base from '../../layouts/Base.astro';
|
|
import PageHero from '../../components/PageHero.astro';
|
|
import T from '../../components/content/T.astro';
|
|
import { t } from '../../lib/content';
|
|
import { edizioneAttiva } from '../../data/promo-edizioni';
|
|
export const prerender = false;
|
|
|
|
// Chi entra da «Promo ed eventi» sceglie: le promozioni in corso oppure gli eventi del
|
|
// centro (chiesto dal cliente il 17/08/2026). Erano la stessa pagina, e chi cercava
|
|
// l'inaugurazione finiva in mezzo ai prezzi dei pacchetti.
|
|
//
|
|
// Il bottone delle promo dice se ce n'è davvero una in corso: mandare su una pagina che
|
|
// risponde «nessuna promozione» senza averlo detto prima è un giro a vuoto.
|
|
const ed = edizioneAttiva(new Date());
|
|
// La pagina cambia contenuto col passare del tempo (l'edizione promo scade da sola): una
|
|
// copia in cache la congelerebbe a com'era.
|
|
Astro.response.headers.set('Cache-Control', 'no-store');
|
|
---
|
|
<Base title={t('promo-eventi.meta.title')} description={t('promo-eventi.meta.description')}>
|
|
<PageHero title={t('promo-eventi.hero.title')} />
|
|
|
|
<section class="section">
|
|
<div class="container">
|
|
<div class="section-heading">
|
|
<T tag="promo-eventi.intro" as="p" />
|
|
</div>
|
|
<div class="scelta">
|
|
<a class="scelta__card" href="/promo-eventi/promo">
|
|
<T tag="promo-eventi.promo.label" as="h2" />
|
|
<T tag="promo-eventi.promo.desc" as="p" />
|
|
{!ed && <T tag="promo-eventi.promo.nessuna" as="p" class="scelta__nota" />}
|
|
<span class="btn">{t('promo-eventi.promo.cta')}</span>
|
|
</a>
|
|
<a class="scelta__card scelta__card--dark" href="/promo-eventi/eventi">
|
|
<T tag="promo-eventi.eventi.label" as="h2" />
|
|
<T tag="promo-eventi.eventi.desc" as="p" />
|
|
<span class="btn btn--light">{t('promo-eventi.eventi.cta')}</span>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
</Base>
|
|
|
|
<style>
|
|
.scelta { display: grid; grid-template-columns: 1fr 1fr; gap: 30px; }
|
|
.scelta__card { display: flex; flex-direction: column; align-items: flex-start; gap: 14px; padding: 48px 40px; background: #fff; box-shadow: 0 6px 24px rgba(0,0,0,.08); text-decoration: none; transition: transform .3s ease, box-shadow .3s ease; }
|
|
.scelta__card:hover { transform: translateY(-4px); box-shadow: 0 12px 32px rgba(0,0,0,.12); }
|
|
.scelta__card :global(h2) { text-transform: uppercase; letter-spacing: .12em; font-size: 1.4rem; margin: 0; }
|
|
.scelta__card :global(p) { font-size: .92rem; margin: 0; }
|
|
.scelta__card .btn { margin-top: auto; }
|
|
.scelta__card--dark { background: var(--c-dark); }
|
|
.scelta__card--dark :global(h2), .scelta__card--dark :global(p) { color: #efe9e3; }
|
|
.scelta__nota { font-family: var(--font-heading); font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; color: var(--c-accent-dark); }
|
|
@media (max-width: 767px) { .scelta { grid-template-columns: 1fr; } .scelta__card { padding: 34px 26px; } }
|
|
</style>
|