From 182e245fd7ddfbb188db026695481745572c04e8 Mon Sep 17 00:00:00 2001 From: Henrik Larsson Date: Fri, 5 May 2023 14:11:25 +0200 Subject: [PATCH] SEO and language tests --- app/[locale]/[[...slug]]/page.tsx | 45 +++++++- app/[locale]/layout.tsx | 21 +++- messages/en.json | 3 - messages/nn.json | 176 ------------------------------ messages/sv.json | 3 - public/og-image.jpg | Bin 0 -> 52041 bytes 6 files changed, 62 insertions(+), 186 deletions(-) delete mode 100644 messages/nn.json create mode 100644 public/og-image.jpg diff --git a/app/[locale]/[[...slug]]/page.tsx b/app/[locale]/[[...slug]]/page.tsx index 99f208150..4b5b37d51 100644 --- a/app/[locale]/[[...slug]]/page.tsx +++ b/app/[locale]/[[...slug]]/page.tsx @@ -1,14 +1,16 @@ -// 'use client'; - import getQueryFromSlug from 'helpers/getQueryFromSlug'; import { docQuery } from 'lib/sanity/queries'; import { client } from 'lib/sanity/sanity.client'; +import type { Metadata } from 'next'; import { groq } from 'next-sanity'; import CategoryPage from './category-page'; import HomePage from './home-page'; import ProductPage from './product-page'; import SinglePage from './single-page'; +/** + * Get paths for each page. + */ export async function generateStaticParams() { const paths = await client.fetch(groq`${docQuery}`, { next: { revalidate: 10 }, @@ -43,6 +45,45 @@ function filterDataToSingleItem(data: any, preview = false) { return data[0] } +/** + * Generate metadata for each page. + */ +export async function generateMetadata({ params }: {params: { slug: string[], locale: string }}): Promise { + const { slug, locale } = params + + const { query = '', queryParams } = getQueryFromSlug(slug, locale) + + const pageData = await client.fetch(query, queryParams) + + const data = filterDataToSingleItem(pageData, false) + + const { seo, title } = data + + return { + title: seo?.title ? seo?.title : title, + description: seo?.description + ? seo.description + : 'Webb och digitalbyrå från Göteborg', + openGraph: { + images: [ + { + url: seo?.image?.asset?.url + ? seo.image.asset.url + : '/og-image.jpg', + width: 1200, + height: 630, + alt: seo?.coverImage?.alt + ? seo.coverImage.alt + : 'Kodamera AB', + }, + ], + }, + } +} + +/** + * Render pages depending on type. + */ export default async function Page({ params, }: { diff --git a/app/[locale]/layout.tsx b/app/[locale]/layout.tsx index 751c98bc8..10b80c3ce 100644 --- a/app/[locale]/layout.tsx +++ b/app/[locale]/layout.tsx @@ -6,13 +6,29 @@ import { notFound } from 'next/navigation'; import { ReactNode } from 'react'; import './globals.css'; -const { TWITTER_CREATOR, TWITTER_SITE, SITE_NAME } = process.env; +const SITE_NAME = "KM Storefront" +const SITE_DESCRIPTION = "Webb och digitalbyrå från Göteborg" +const TWITTER_CREATOR = "@kodamera.se" +const TWITTER_SITE = "https://kodamera.se" +const OG_IMAGE_URL = "/og-image.jpg" +const OG_IMAGE_ALT = "Kodamera" export const metadata = { title: { default: SITE_NAME, template: `%s | ${SITE_NAME}` }, + description: SITE_DESCRIPTION, + openGraph: { + images: [ + { + url: OG_IMAGE_URL, + width: 1200, + height: 630, + alt: OG_IMAGE_ALT + }, + ], + }, robots: { follow: true, index: true @@ -34,7 +50,7 @@ const inter = Inter({ }); export function generateStaticParams() { - return [{locale: 'sv'}, {locale: 'en'}, {locale: 'nn'}]; + return [{locale: 'sv'}, {locale: 'en'}]; } interface LocaleLayoutProps { @@ -46,6 +62,7 @@ interface LocaleLayoutProps { export default async function LocaleLayout({children, params: {locale}}: LocaleLayoutProps) { let messages; + try { messages = (await import(`../../messages/${locale}.json`)).default; } catch (error) { diff --git a/messages/en.json b/messages/en.json index 3dff17e4d..755839b26 100644 --- a/messages/en.json +++ b/messages/en.json @@ -1,7 +1,4 @@ { - "Index": { - "title": "Welcome" - }, "ui": { "button": { "close": "Close", diff --git a/messages/nn.json b/messages/nn.json deleted file mode 100644 index 8c7f9b7f7..000000000 --- a/messages/nn.json +++ /dev/null @@ -1,176 +0,0 @@ -{ - "Index": { - "title": "Velkommen" - }, - "ui": { - "button": { - "close": "Lukk", - "back": "Tilbake", - "wishList": "Legg til i favorittlisten" - }, - "previewBanner": { - "titlePart": "Forhåndsvisning av:", - "exitPreviewLabel": "Avslutt forhåndsvisning" - }, - "copyright": "Alle rettigheter forbeholdt." - }, - "search": { - "search": "Søk", - "placeholder": "Søk etter produkter...", - "globalPlaceholder": "Søk produkter og kategorier...", - "categories": "Kategorier", - "priceRange": "Prisklasse", - "clearAllFilters": "Fjern alle filtre", - "submitTitle": "Send inn søket ditt", - "clearTitle": "Fjern søket ditt", - "resetTitle": "Tilbakestill søket ditt", - "seo": { - "title": "Søk", - "description": "Søk etter produkt eller kategori" - } - }, - "product": { - "description": "Beskrivelse", - "specification": "Spesifikasjon", - "shippingAndReturns": "Frakt og retur", - "reviews": "anmeldelser", - "noReviews": "Ingen recensioner", - "addToCart": "Legg i handlekurv", - "notAvailable": "Ikke tilgjengelig", - "related": "Relaterte produkter", - "selectSize": "Velg størrelse" - }, - "cart": { - "myCarttitle": "Handlekurven min", - "subTotal": "Delsum", - "taxes": "Skatter", - "calculatedAtCheckout": "Beregned i kassen", - "free": "Gratis", - "shipping": "Shipping", - "estimatedShipping": "Estimert shipping", - "total": "Totalt", - "proceedToCheckout": "Fortsett til utsjekking", - "empty": { - "title": "Handlekurven din er tom", - "text": "Legg til et produkt for å begynne å handle." - }, - "error": "Vi kunne ikke fullføre kjøpet ditt. Sjekk kortinformasjonen din og prøv igjen.", - "success": "Takk for din bestilling.", - "addShippingAddress": "+ Legg til leveringsadresse", - "addShippingMethod": "+ Legg til leveringsmetode", - "addPaymentMethod": "+ Legg til betalingsmåte", - "continueShopping": "Fortsette å handle", - "seo": { - "title": "Min handlekurv", - "description": "Alle produktene i handlekurven din vises her" - } - }, - "checkout": { - "checkoutTitle": "Kasse", - "subTotal": "Delsum", - "taxes": "Skatter", - "calculatedAtCheckout": "Beregned i kassen", - "free": "Gratis", - "shipping": "Shipping", - "total": "Totalt", - "confirmPurchase": "Bekreft kjøp" - }, - "paymentMethod": { - "paymentMethodTitle": "Betalingsmåte", - "cardHolderName": "Kortholder", - "cardNumber": "Kortnummer", - "expires": "Utløpsdato", - "cvc": "CVC", - "firstName": "Fornavn", - "lastName": "Etternavn", - "company": "Firma (valgfritt)", - "streetAndHouseNumber": "Gate og husnummer", - "apartment": "Leilighet, suite osv. (valgfritt)", - "postalCode": "Post kode", - "city": "By", - "countryAndRegion": "Land/Region", - "continue": "Fortsette" - }, - "shipping": { - "shippingTitle": "Shipping", - "shippingAdress": { - "same": "Samme som betalingsadresse", - "different": "Bruk en annen leveringsadresse" - }, - "addShippingAddress": "Legg til leveringsadresse", - "firstName": "Fornavn", - "lastName": "Etternavn", - "company": "Firma (valgfritt)", - "streetAndHouseNumber": "Gate og husnummer", - "apartment": "Leilighet, suite osv. (valgfritt)", - "postalCode": "Post kode", - "city": "By", - "countryAndRegion": "Land/Region", - "continue": "Fortsette" - }, - "orders": { - "title": "Mine bestillinger", - "notFound": "Ingen bestillinger funnet", - "seo": { - "title": "Mine bestillinger", - "description": "Mine bestillinger vises her" - } - }, - "profile": { - "title": "Min profil", - "fullName": "Navn", - "email": "E-post", - "seo": { - "title": "Min profil", - "description": "Se og konfigurer kontoen min" - } - }, - "wishlist": { - "title": "Min ønskeliste", - "empty": "Din ønskeliste er tom", - "seo": { - "title": "Min ønskeliste", - "description": "Ønskelisten min vises her" - } - }, - "auth": { - "signUp": { - "firstName": "Fornavn", - "lastName": "Etternavn", - "email": "E-post", - "password": "Passord", - "informationPre": "Info", - "information": "Passord må være lengre enn 7 bokstaver og inneholde tall.", - "register": "Registrere", - "existingAccount": "Har du en konto?", - "loginLabel": "Logg inn" - }, - "login": { - "email": "E-post", - "password": "Passord", - "logIn": "Logg inn", - "noExistingAccount": "Har du ikke en konto?", - "noExistingAccountLabel": "Registrere", - "forgotPasswordText": "E-post og passord er obligatorisk for å logge inn, har du", - "forgotPasswordLinkLabel": "glemt passordet?" - }, - "forgotPassword": { - "email": "E-post", - "recover": "Tilbakestille passord", - "existingAccount": "Har du en konto?", - "loginLabel": "Logg inn" - } - }, - "customerMenu": { - "myOrders": "Mine bestillinger", - "myProfile": "Min profil", - "myCart": "Min handlekurv", - "logOut": "Logg ut" - }, - "notFound": { - "seo": { - "title": "Siden kan ikke bli funnet", - "description": "Siden kan ikke bli funnet" - } - } -} diff --git a/messages/sv.json b/messages/sv.json index 733e794e7..1fcdec833 100644 --- a/messages/sv.json +++ b/messages/sv.json @@ -1,7 +1,4 @@ { - "Index": { - "title": "Välkommen" - }, "ui": { "button": { "close": "Stäng", diff --git a/public/og-image.jpg b/public/og-image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..83cbaa886c8f1b631484dfffb94c7d9bb60a0635 GIT binary patch literal 52041 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