diff --git a/public/images/static-recruit-bg-1.png b/public/images/static-recruit-bg-1.png new file mode 100644 index 0000000..37260c8 Binary files /dev/null and b/public/images/static-recruit-bg-1.png differ diff --git a/public/images/static-sprite.png b/public/images/static-sprite.png new file mode 100644 index 0000000..ada7d71 Binary files /dev/null and b/public/images/static-sprite.png differ diff --git a/src/app/[slug]/metadataBySlug.tsx b/src/app/(main)/[slug]/metadataBySlug.tsx similarity index 100% rename from src/app/[slug]/metadataBySlug.tsx rename to src/app/(main)/[slug]/metadataBySlug.tsx diff --git a/src/app/[slug]/page.tsx b/src/app/(main)/[slug]/page.tsx similarity index 75% rename from src/app/[slug]/page.tsx rename to src/app/(main)/[slug]/page.tsx index 43aef52..1c0bafa 100644 --- a/src/app/[slug]/page.tsx +++ b/src/app/(main)/[slug]/page.tsx @@ -6,7 +6,6 @@ import { findBySlug } from "@/lib/slug/slugMap"; import { notFound } from "next/navigation"; import type { Metadata } from "next"; -// Cache findBySlug để tránh gọi 2 lần const getCachedSlugData = cache(async (slug: string) => { if (!slug) return null; // fetch data @@ -19,11 +18,13 @@ export async function generateMetadata({ }: { params: Promise<{ slug: string }>; }): Promise { - const { slug } = await params; - const result = await getCachedSlugData(slug); + const { slug } = await params; + const result = await getCachedSlugData(slug); if (!result) { - return { title: "Local PC" }; + return { + title: "Local PC" + }; } return metadataBySlug(result); @@ -34,12 +35,11 @@ export default async function SlugPage({ }: { params: Promise<{ slug: string }>; }) { - const { slug } = await params; - const result = await getCachedSlugData(slug); + const { slug } = await params; + const result = await getCachedSlugData(slug); if (!result) { notFound(); } - return renderBySlug(result, slug); } \ No newline at end of file diff --git a/src/app/[slug]/renderBySlug.tsx b/src/app/(main)/[slug]/renderBySlug.tsx similarity index 94% rename from src/app/[slug]/renderBySlug.tsx rename to src/app/(main)/[slug]/renderBySlug.tsx index a60577c..a9e97df 100644 --- a/src/app/[slug]/renderBySlug.tsx +++ b/src/app/(main)/[slug]/renderBySlug.tsx @@ -7,6 +7,7 @@ import ArticleDetail from "@/components/article/detail"; import ArticleHome from "@/components/article/home"; export function renderBySlug(result: any, slug: string) { + switch (result.type) { case "product_category": return ; @@ -15,7 +16,7 @@ export function renderBySlug(result: any, slug: string) { return ; case "article_home": - return ; + return ; case "article_category": return ; diff --git a/src/app/cart/page.tsx b/src/app/(main)/cart/page.tsx similarity index 100% rename from src/app/cart/page.tsx rename to src/app/(main)/cart/page.tsx diff --git a/src/app/(main)/layout.tsx b/src/app/(main)/layout.tsx new file mode 100644 index 0000000..76a02bf --- /dev/null +++ b/src/app/(main)/layout.tsx @@ -0,0 +1,13 @@ +import type { ReactNode } from 'react'; +import Header from "@/components/other/header"; +import Footer from "@/components/other/footer"; + +export default function MainLayout({ children }: { children: ReactNode }) { + return ( + <> +
+ {children} +