--- import Layout from "../../../layouts/Layout.astro"; import { getBrandsByIds, getSite, getSiteConfig, getSiteHomePage } from "../../../data/api-client"; import { genericPageForBrand } from "../../../lib/page-from-models"; import { SupportedLocales } from "../../../data/internals/LocalizedT"; import type { Page } from "../../../data/models/multis/Page"; import type { Site } from "../../../data/models/singles/Site"; import { pick as pickLanguage } from "../../../lib/accept-language-parser"; import { overrideLocaleFromUrl, localeFromLang } from "../../../lib/locales"; import Banner from "../../../components/Banner.astro"; import ComponentRouter from "../../../components/ComponentRouter.astro"; import Disclaimers from "../../../components/Disclaimers.astro"; const { brandLookup, resource, id } = Astro.params; const locale = overrideLocaleFromUrl(brandLookup!, localeFromLang(pickLanguage(['en', 'es', 'fr'], Astro.request.headers.get('Accept-Language')||'en-US', { loose: true })||'en')); const brandLookupParts = brandLookup?.split('/')||[]; if (brandLookupParts?.length < 2) { return Astro.rewrite(`${locale}/404/`); } const brandId = brandLookupParts[1]; const brandDto = await getBrandsByIds(brandId); if (brandDto.items.length < 1) { return Astro.rewrite(`${locale}/404/`); } else if (brandDto.items[0].data && brandDto.items[0].data.brandPage && brandDto.items[0].data.brandPage.iv && brandDto.items[0].data.brandPage.iv.length) { return Astro.rewrite(`/views/pages/${locale}/${brandDto.items[0].data.brandPage.iv[0]}`); } const siteConfigDto = await getSiteConfig(); const siteConfig = siteConfigDto.items[0].data!; const siteDto = await getSite(); const site: Site = siteDto.items[0].data!; const siteEditToken = siteDto.items[0].editToken; const homePageId = site.homePage.iv[0]; const homePageDto = await getSiteHomePage(site); const homePage: Page = homePageDto.items[0].data!; const brand = brandDto.items[0].data!; Astro.response.headers.set('Content-Type', 'text/html; charset=utf-8'); const page = genericPageForBrand({brand, brandId, homePageId}); const pageEditToken = brandDto.items[0].editToken; const title = page?.title[locale]||''; const metaDescription = page?.seo[locale]?.metaDescription || ''; const siteName = site.siteName[locale]; const pageContent = page?.content[locale]!; const shouldEmbedSquidexSDK = import.meta.env.MODE === 'development'; const renderContext = { ...Astro.params, title, metaDescription, siteName, pageComponents: pageContent, page, site, isHomePage: false, isLocaleHomepage: false, shouldEmbedSquidexSDK, } --- { metaDescription && } { Object.entries(SupportedLocales).map((supportedLanguage) => { return ( ); }) }