From f88e524bb004ea02cd92f944e1ec482c45a3a9ff Mon Sep 17 00:00:00 2001 From: Al Murad Uzzaman Date: Sat, 18 May 2024 09:49:56 +0600 Subject: [PATCH] category && tag single static path modifed --- src/layouts/partials/PostSidebar.astro | 2 +- src/lib/contentParser.astro | 8 +++---- src/lib/taxonomyParser.astro | 4 ++-- .../[...lang]/categories/[category].astro | 20 +++++++++++++++-- src/pages/[...lang]/tags/[tag].astro | 22 ++++++++++++++++--- 5 files changed, 44 insertions(+), 12 deletions(-) diff --git a/src/layouts/partials/PostSidebar.astro b/src/layouts/partials/PostSidebar.astro index 4404fde..3627d1a 100755 --- a/src/layouts/partials/PostSidebar.astro +++ b/src/layouts/partials/PostSidebar.astro @@ -17,7 +17,7 @@ const lang = getLangFromUrl(Astro.url); { categories.map((category: any) => { const count = allCategories.filter( - (c: any) => c === category, + (c: any) => c === category ).length; return (
  • diff --git a/src/lib/contentParser.astro b/src/lib/contentParser.astro index 9e0bea2..ce22d49 100644 --- a/src/lib/contentParser.astro +++ b/src/lib/contentParser.astro @@ -10,7 +10,7 @@ import config from "@/config/config.json"; export const getSinglePage = async ( collectionName: C, - lang: keyof ContentEntryMap, + lang: keyof ContentEntryMap ): Promise[]> => { const { default_language } = config.settings; const langCollection: keyof ContentEntryMap = lang as keyof ContentEntryMap; @@ -20,7 +20,7 @@ export const getSinglePage = async ( langCollection || default_language, ({ id }: any) => { return id.startsWith(collectionName) && !id.endsWith("-index.md"); - }, + } )) as CollectionEntry[]; //@ts-ignore @@ -30,7 +30,7 @@ export const getSinglePage = async ( export const getListPage = async ( collectionName: C, - lang: keyof ContentEntryMap, + lang: keyof ContentEntryMap ): Promise[]> => { const { default_language } = config.settings; const langCollection: keyof ContentEntryMap = lang as keyof ContentEntryMap; @@ -39,7 +39,7 @@ export const getListPage = async ( langCollection || default_language, ({ id }: any) => { return id.startsWith(collectionName); - }, + } )) as CollectionEntry[]; return pages; diff --git a/src/lib/taxonomyParser.astro b/src/lib/taxonomyParser.astro index c9359e0..3e14140 100644 --- a/src/lib/taxonomyParser.astro +++ b/src/lib/taxonomyParser.astro @@ -14,7 +14,7 @@ export const getTaxonomy = async (collection: any, name: string) => { actualCollection as keyof ContentEntryMap, ({ id }: any) => { return id.startsWith("blog") && !id.endsWith("-index.md"); - }, + } ); const taxonomyPages = singlePages.map((page: any) => page.data[name]); let taxonomies: string[] = []; @@ -37,7 +37,7 @@ export const getAllTaxonomy = async (collection: any, name: string) => { actualCollection as keyof ContentEntryMap, ({ id }: any) => { return id.startsWith("blog") && !id.endsWith("-index.md"); - }, + } ); const taxonomyPages = singlePages.map((page: any) => page.data[name]); let taxonomies: string[] = []; diff --git a/src/pages/[...lang]/categories/[category].astro b/src/pages/[...lang]/categories/[category].astro index a0ecf67..32c02a1 100755 --- a/src/pages/[...lang]/categories/[category].astro +++ b/src/pages/[...lang]/categories/[category].astro @@ -8,9 +8,12 @@ import { sortByDate } from "@/lib/utils/sortFunctions"; import taxonomyFilter from "@/lib/utils/taxonomyFilter"; import PageHeader from "@/partials/PageHeader.astro"; import type { ContentEntryMap } from "astro:content"; +import config from "@/config/config.json"; // get all static paths for categories export async function getStaticPaths() { + const { default_language } = config.settings; + const paths = await Promise.all( supportedLang.map(async (lang) => { const categories = await getTaxonomy(lang, "categories"); @@ -24,9 +27,22 @@ export async function getStaticPaths() { category, }, })); - }), + }) ); - return paths.flat(); + + // Handle default path (no lang) + const defaultCategories = await getTaxonomy(default_language, "categories"); + const defaultPaths = defaultCategories.map((category) => ({ + params: { + lang: undefined, + category: category, + }, + props: { + category, + }, + })); + + return [...paths.flat(), ...defaultPaths]; } const { category, lang } = Astro.params; diff --git a/src/pages/[...lang]/tags/[tag].astro b/src/pages/[...lang]/tags/[tag].astro index f25f41c..0b1286c 100644 --- a/src/pages/[...lang]/tags/[tag].astro +++ b/src/pages/[...lang]/tags/[tag].astro @@ -1,5 +1,6 @@ --- import BlogCard from "@/components/BlogCard.astro"; +import config from "@/config/config.json"; import Base from "@/layouts/Base.astro"; import { getSinglePage } from "@/lib/contentParser.astro"; import { getTaxonomy } from "@/lib/taxonomyParser.astro"; @@ -9,8 +10,10 @@ import taxonomyFilter from "@/lib/utils/taxonomyFilter"; import PageHeader from "@/partials/PageHeader.astro"; import type { ContentEntryMap } from "astro:content"; -// get all static paths for categories +// get all static paths for tags export async function getStaticPaths() { + const { default_language } = config.settings; + const paths = await Promise.all( supportedLang.map(async (lang) => { const tags = await getTaxonomy(lang, "tags"); @@ -24,9 +27,22 @@ export async function getStaticPaths() { tag, }, })); - }), + }) ); - return paths.flat(); + + // Handle default path (no lang) + const defaultCategories = await getTaxonomy(default_language, "tags"); + const defaultPaths = defaultCategories.map((tag) => ({ + params: { + lang: undefined, + tag: tag, + }, + props: { + tag, + }, + })); + + return [...paths.flat(), ...defaultPaths]; } const { tag, lang } = Astro.params;