Skip to content

Commit 4f08fcc

Browse files
authored
Merge pull request #30 from Manuel10i/seo/destination-hub-internal-links
2 parents e1466aa + cbca25b commit 4f08fcc

5 files changed

Lines changed: 62 additions & 0 deletions

File tree

src/app/(marketing)/destination/[slug]/page.tsx

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import {
2020
getWeeklyBusyness,
2121
} from "@/lib/services/destination-busyness";
2222
import { quietAlternatives } from "@/lib/quiet-alternatives";
23+
import { MONTH_SLUGS } from "@/lib/quiet-months";
2324
import { slugForDestination } from "@/lib/destinations";
2425
import { getCountryFlag } from "@/lib/data";
2526
import {
@@ -155,6 +156,7 @@ export default async function DestinationPage({
155156
const tSaved = await getTranslations({ locale, namespace: "saved" });
156157
const tShare = await getTranslations({ locale, namespace: "share" });
157158
const tAlt = await getTranslations({ locale, namespace: "alternatives" });
159+
const tExplore = await getTranslations({ locale, namespace: "explore" });
158160
const alts = localizedSlugsForSlug(slug);
159161
const hrefByLocale = alts ? switcherHrefs(alts) : undefined;
160162

@@ -359,6 +361,38 @@ export default async function DestinationPage({
359361
</div>
360362
)}
361363

364+
<div className="mt-12">
365+
<h2 className="font-display text-2xl text-ink">{tExplore("title")}</h2>
366+
<ul className="mt-5 divide-y divide-line border-y border-line">
367+
<li className="py-4">
368+
<Link
369+
href={hasQuiet ? `/least-crowded/${MONTH_SLUGS[quietIdx[0]]}` : "/least-crowded"}
370+
className="text-accent underline underline-offset-2 hover:text-accent-2"
371+
>
372+
{hasQuiet
373+
? tExplore("monthHub", { month: long[quietIdx[0]] })
374+
: tExplore("monthHubGeneric")}
375+
</Link>
376+
</li>
377+
<li className="py-4">
378+
<Link
379+
href="/crowd-index"
380+
className="text-accent underline underline-offset-2 hover:text-accent-2"
381+
>
382+
{tExplore("crowdIndex")}
383+
</Link>
384+
</li>
385+
<li className="py-4">
386+
<Link
387+
href="/guides"
388+
className="text-accent underline underline-offset-2 hover:text-accent-2"
389+
>
390+
{tExplore("guides")}
391+
</Link>
392+
</li>
393+
</ul>
394+
</div>
395+
362396
<div className="mt-14">
363397
<h2 className="font-display text-2xl text-ink">{t("faqTitle")}</h2>
364398
<dl className="mt-6 divide-y divide-line border-y border-line">

src/messages/de.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -772,5 +772,12 @@
772772
"ctaBestTime": "Beste Zeit für einen Ort finden",
773773
"ctaMap": "Crowd-Karte öffnen",
774774
"disclaimer": "Crowd-Werte sind relative Saison-Schätzungen aus unserem Modell, keine Live-Besucherzahlen. Wetter und Öffnungszeiten variieren; prüfe die Bedingungen vor der Buchung."
775+
},
776+
"explore": {
777+
"title": "Weiter erkunden",
778+
"monthHub": "Wohin im {month}, um Menschenmassen zu vermeiden",
779+
"monthHubGeneric": "Den ruhigsten Monat für jedes Reiseziel finden",
780+
"crowdIndex": "Die vollsten Reiseziele, nach Crowd-Daten sortiert",
781+
"guides": "Unsere Reiseführer zu weniger überlaufenen Zielen lesen"
775782
}
776783
}

src/messages/en.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -772,5 +772,12 @@
772772
"ctaBestTime": "Find the best time for a place",
773773
"ctaMap": "Open the crowd map",
774774
"disclaimer": "Crowd levels are relative seasonal estimates from our model, not live visitor counts. Weather and opening times vary; check local conditions before you book."
775+
},
776+
"explore": {
777+
"title": "Keep exploring",
778+
"monthHub": "Where to go in {month} to avoid the crowds",
779+
"monthHubGeneric": "Find the least crowded month for any destination",
780+
"crowdIndex": "See the most crowded destinations, ranked by crowd data",
781+
"guides": "Read our less crowded travel guides"
775782
}
776783
}

src/messages/es.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -772,5 +772,12 @@
772772
"ctaBestTime": "Encontrar la mejor época para un lugar",
773773
"ctaMap": "Abrir el mapa de afluencia",
774774
"disclaimer": "Los niveles de afluencia son estimaciones estacionales relativas de nuestro modelo, no recuentos de visitantes en vivo. El clima y los horarios varían; comprueba las condiciones antes de reservar."
775+
},
776+
"explore": {
777+
"title": "Sigue explorando",
778+
"monthHub": "Adónde ir en {month} para evitar las multitudes",
779+
"monthHubGeneric": "Encuentra el mes con menos gente para cualquier destino",
780+
"crowdIndex": "Los destinos más concurridos, clasificados por datos de afluencia",
781+
"guides": "Lee nuestras guías de destinos menos concurridos"
775782
}
776783
}

src/messages/fr.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -772,5 +772,12 @@
772772
"ctaBestTime": "Trouver la meilleure période pour un lieu",
773773
"ctaMap": "Ouvrir la carte de fréquentation",
774774
"disclaimer": "Les niveaux de fréquentation sont des estimations saisonnières relatives issues de notre modèle, pas des comptages en direct. La météo et les horaires varient ; vérifiez les conditions avant de réserver."
775+
},
776+
"explore": {
777+
"title": "Continuer l'exploration",
778+
"monthHub": "Où aller en {month} pour éviter la foule",
779+
"monthHubGeneric": "Trouvez le mois le moins fréquenté pour chaque destination",
780+
"crowdIndex": "Les destinations les plus fréquentées, classées par données d'affluence",
781+
"guides": "Lisez nos guides des destinations moins fréquentées"
775782
}
776783
}

0 commit comments

Comments
 (0)