From 06b682bee6964f4e440269d7219f8f82cfd7885a Mon Sep 17 00:00:00 2001 From: RizqiSyahrendra Date: Thu, 6 Mar 2025 14:19:48 +0700 Subject: [PATCH 01/15] fix: remove env --- env | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 env diff --git a/env b/env deleted file mode 100644 index 1ec99f5..0000000 --- a/env +++ /dev/null @@ -1,17 +0,0 @@ -SERVICE_SUPABASESERVICE_KEY=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzdXBhYmFzZSIsImlhdCI6MTczODQ3MzA2MCwiZXhwIjo0ODk0MTQ2NjYwLCJyb2xlIjoic2VydmljZV9yb2xlIn0.nRpZfD6Uur9yzCT_BTgLH9DLWsCcCiAgWKenJ_qYu5M\ - -SERVICE_SUPABASEANON_KEY=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzdXBhYmFzZSIsImlhdCI6MTczODQ3MzA2MCwiZXhwIjo0ODk0MTQ2NjYwLCJyb2xlIjoiYW5vbiJ9.WXJvhzD1gD6Kxlq8PLFAcpaVFmh9h3xbJHh9oow2IFQ - -SUPABASE_URL=https://supabasekong-n00g8kwoos4skc0gw44k8sks.dev3vds1.link - -# payload - -DATABASE_URI=postgresql://postgres.jswmbraeandqttpcdfmj:qDY4C35XaRsmW6dW@aws-0-ap-southeast-1.pooler.supabase.com:5432/postgres -PAYLOAD_SECRET=1b7204f9ed5f7ab09706fc51 -S3_BUCKET=cochise-bucket -S3_ACCESS_KEY_ID=97394cd503ae9973efa25168ed980e51 -S3_SECRET_ACCESS_KEY=9b4e412850582aab32ffdadbe23bb7ea972b39aaf79c34da0c19d3fcafe11dd0 -S3_REGION=ap-southeast-1 -S3_ENDPOINT=https://jswmbraeandqttpcdfmj.supabase.co/storage/v1/s3 -NEXT_PUBLIC_PAYLOAD_URL=http://localhost:3000 -SITE_URL=http://localhost:3000 From b064367fd7e6da0cfcf419ef78f1ae21a84e1133 Mon Sep 17 00:00:00 2001 From: RizqiSyahrendra Date: Fri, 7 Mar 2025 23:17:40 +0700 Subject: [PATCH 02/15] fix: meta tags and jsonld --- src/app/(main)/[slug]/page.tsx | 7 +++ src/app/(main)/page.tsx | 32 +++++--------- src/components/Blogs/BlogDetail.tsx | 67 +++++++++++++++++++++++++++++ src/middleware.ts | 4 +- src/services/payload/blog.ts | 2 + src/utils/metadata.ts | 16 ++++++- 6 files changed, 104 insertions(+), 24 deletions(-) diff --git a/src/app/(main)/[slug]/page.tsx b/src/app/(main)/[slug]/page.tsx index 37e8955..7de1f14 100644 --- a/src/app/(main)/[slug]/page.tsx +++ b/src/app/(main)/[slug]/page.tsx @@ -16,6 +16,7 @@ export async function generateMetadata({ params }: { params: Promise<{ slug: str let updatedAt = ""; let imgUrl = ""; let createdByName = ""; + let canonicalUrl = ""; const slug = (await params).slug; const blog = await fetchBlogDetail(slug); @@ -39,6 +40,9 @@ export async function generateMetadata({ params }: { params: Promise<{ slug: str imgUrl = page.heroImg?.url; publishedAt = page.createdAt; updatedAt = page.updatedAt; + if (!!page.meta?.cannonical_url) { + canonicalUrl = page.meta.cannonical_url; + } if (!!page?.createdBy && typeof page.createdBy !== "number") { createdByName = page?.createdBy?.name ?? ""; @@ -55,6 +59,9 @@ export async function generateMetadata({ params }: { params: Promise<{ slug: str defaultMetadata.openGraph.description = description; defaultMetadata.openGraph.images = !!imgUrl ? [imgUrl] : undefined; } + if (!!defaultMetadata.alternates && !!canonicalUrl) { + defaultMetadata.alternates.canonical = canonicalUrl; + } defaultMetadata.twitter = { card: "summary_large_image", title: title, diff --git a/src/app/(main)/page.tsx b/src/app/(main)/page.tsx index d0dd674..7158c7d 100644 --- a/src/app/(main)/page.tsx +++ b/src/app/(main)/page.tsx @@ -1,30 +1,18 @@ import Parallax from "./home-bg-video/page"; import Homepage from "@/components/Homepage"; import { BeforeFooterBlock } from "@/components/Blocks/BeforeFooter"; +import { Metadata, Viewport } from "next"; +import { getDefaultMetadata } from "@/utils/metadata"; -export const metadata = { - title: "HomePage - Cochise Oncology", - description: "Cochise Oncology", - keywords: "Cochise Oncology, Oncology, Healthcare, Medical Services, Cancer Treatment", - author: "Cochise Oncology", - robots: "index, follow", - og: { - title: "HomePage - Cochise Oncology", - description: "Cochise Oncology", - type: "website", - url: "https://www.cochiseoncology.com", - image: "https://www.cochiseoncology.com/og-image.jpg", - }, - twitter: { - card: "summary_large_image", - site: "@CochiseOncology", - title: "HomePage - Cochise Oncology", - description: "Cochise Oncology", - image: "https://www.cochiseoncology.com/twitter-image.jpg", - }, -}; +export async function generateMetadata(): Promise { + const defaultMetadata = await getDefaultMetadata(); + defaultMetadata.title = `Homepage - ${defaultMetadata.openGraph?.siteName}`; + defaultMetadata.description = + "Get compassionate care and excellent medical services from COCHISE ONCOLOGY in Sierra Vista, Arizona. We are the largest full-service cancer treatment center between Albuquerque, New Mexico and Tucson, Arizona."; + return defaultMetadata; +} -export const viewport = { +export const viewport: Viewport = { width: "device-width", initialScale: 1, }; diff --git a/src/components/Blogs/BlogDetail.tsx b/src/components/Blogs/BlogDetail.tsx index bf05b87..a946ea8 100644 --- a/src/components/Blogs/BlogDetail.tsx +++ b/src/components/Blogs/BlogDetail.tsx @@ -13,6 +13,7 @@ export interface BlogDetailProps { export default async function BlogDetail({ slug }: BlogDetailProps) { const data = await fetchBlogDetail(slug); const headersList = await headers(); + const mainUrl = headersList.get("x-main-url"); const fullUrl = headersList.get("x-full-url"); const shareUrl = { @@ -25,8 +26,74 @@ export default async function BlogDetail({ slug }: BlogDetailProps) { notFound(); } + let author = {}; + console.log("data?.data?.createdBy", data?.data?.createdBy); + if (!!data?.data?.createdBy && typeof data?.data?.createdBy !== "number") { + author = { + author: { + name: data?.data?.createdBy?.name, + "@id": `${mainUrl}/#/schema/person/${data?.data?.createdBy?.id}`, + }, + }; + } + + const jsonLd = { + "@context": "https://schema.org", + "@graph": [ + { + "@type": "Article", + "@id": `${fullUrl}#article`, + isPartOf: { + "@id": fullUrl, + }, + ...author, + headline: data?.data?.title ?? "", + datePublished: data?.createdAt, + dateModified: data?.updatedAt, + mainEntityOfPage: { + "@id": fullUrl, + }, + publisher: { "@id": `${mainUrl}/#organization` }, + image: { + "@id": `${fullUrl}#primaryimage`, + }, + thumbnailUrl: data?.imgUrl ?? "", + inLanguage: "en-US", + }, + { + "@type": "WebPage", + "@id": fullUrl, + url: fullUrl, + name: `${data?.data?.title ?? ""} - Cochise Oncology`, + isPartOf: { "@id": `${mainUrl}/#website` }, + primaryImageOfPage: { + "@id": `${fullUrl}#primaryimage`, + }, + image: { + "@id": `${fullUrl}#primaryimage`, + }, + thumbnailUrl: data?.imgUrl ?? "", + datePublished: data?.createdAt, + dateModified: data?.updatedAt, + description: data?.data?.meta?.description, + breadcrumb: { + "@id": `${fullUrl}#breadcrumb`, + }, + inLanguage: "en-US", + potentialAction: [ + { + "@type": "ReadAction", + target: [fullUrl], + }, + ], + }, + ], + }; + return ( <> +