category && tag single static path modifed

This commit is contained in:
Al Murad Uzzaman
2024-05-18 09:49:56 +06:00
parent 6017d83cdb
commit f88e524bb0
5 changed files with 44 additions and 12 deletions
+1 -1
View File
@@ -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 (
<li>
+4 -4
View File
@@ -10,7 +10,7 @@ import config from "@/config/config.json";
export const getSinglePage = async <C extends CollectionKey>(
collectionName: C,
lang: keyof ContentEntryMap,
lang: keyof ContentEntryMap
): Promise<CollectionEntry<C>[]> => {
const { default_language } = config.settings;
const langCollection: keyof ContentEntryMap = lang as keyof ContentEntryMap;
@@ -20,7 +20,7 @@ export const getSinglePage = async <C extends CollectionKey>(
langCollection || default_language,
({ id }: any) => {
return id.startsWith(collectionName) && !id.endsWith("-index.md");
},
}
)) as CollectionEntry<C>[];
//@ts-ignore
@@ -30,7 +30,7 @@ export const getSinglePage = async <C extends CollectionKey>(
export const getListPage = async <C extends CollectionKey>(
collectionName: C,
lang: keyof ContentEntryMap,
lang: keyof ContentEntryMap
): Promise<CollectionEntry<C>[]> => {
const { default_language } = config.settings;
const langCollection: keyof ContentEntryMap = lang as keyof ContentEntryMap;
@@ -39,7 +39,7 @@ export const getListPage = async <C extends CollectionKey>(
langCollection || default_language,
({ id }: any) => {
return id.startsWith(collectionName);
},
}
)) as CollectionEntry<C>[];
return pages;
+2 -2
View File
@@ -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[] = [];
@@ -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;
+19 -3
View File
@@ -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;