diff --git a/app/de/solution/[slug]/page.js b/app/de/solution/[slug]/page.js index 8b804ecd..a111338e 100644 --- a/app/de/solution/[slug]/page.js +++ b/app/de/solution/[slug]/page.js @@ -1,7 +1,7 @@ import getContentList from "../../../../lib/getContentList.js"; import { getSolutionSlugProps } from "../../../../lib/getProps.js"; import { generateSolutionSlugMetadata } from "../../../../lib/getMetadata.js"; -import Slug from "../../../../components/SolutionArtcile.js"; +import Slug from "../../../../components/SolutionArticle.js"; export async function generateMetadata({ params: { slug } }) { const md = await generateSolutionSlugMetadata("de", slug); diff --git a/app/en/solution/[slug]/page.js b/app/en/solution/[slug]/page.js index b015278d..f33217d9 100644 --- a/app/en/solution/[slug]/page.js +++ b/app/en/solution/[slug]/page.js @@ -1,7 +1,7 @@ import getContentList from "../../../../lib/getContentList.js"; import { getSolutionSlugProps } from "../../../../lib/getProps.js"; import { generateSolutionSlugMetadata } from "../../../../lib/getMetadata.js"; -import Slug from "../../../../components/SolutionArtcile.js"; +import Slug from "../../../../components/SolutionArticle.js"; export async function generateMetadata({ params: { slug } }) { const md = await generateSolutionSlugMetadata("en", slug); diff --git a/components/SolutionArtcile.js b/components/SolutionArticle.js similarity index 100% rename from components/SolutionArtcile.js rename to components/SolutionArticle.js diff --git a/lib/getContentList.js b/lib/getContentList.js index 2229c846..40ac326f 100644 --- a/lib/getContentList.js +++ b/lib/getContentList.js @@ -38,15 +38,20 @@ export default function getContentList(language, options) { if (order) { const orderConditions = order.map((condition) => { const [[field, direction]] = Object.entries(condition); - return { field, direction }; + return { field, direction, compareFunction: condition.compareFunction }; }); + return list.sort((a, b) => - orderConditions.reduce((prev, { field, direction }) => { + orderConditions.reduce((prev, { field, direction, compareFunction }) => { let result = 0; - if (a[field] < b[field]) { - result = -1; - } else if (a[field] > b[field]) { - result = 1; + if (compareFunction && typeof compareFunction === "function") { + result = compareFunction(a, b); + } else { + if (a[field] < b[field]) { + result = -1; + } else if (a[field] > b[field]) { + result = 1; + } } if (prev === 1) { diff --git a/lib/getProps.js b/lib/getProps.js index 46fb8a27..c4cce633 100644 --- a/lib/getProps.js +++ b/lib/getProps.js @@ -114,6 +114,22 @@ export async function getAboutProps(language) { const team = getContentList(language, { collections: ["person"], fields: ["name", "photo", "position", "email", "telephone", "github"], + order: [ + { + photo: "asc", + compareFunction: (a, b) => { + const aIsAvatar = a["photo"].includes("avatar"); + const bIsAvatar = b["photo"].includes("avatar"); + if (aIsAvatar && !bIsAvatar) { + return 1; + } + if (!aIsAvatar && bIsAvatar) { + return -1; + } + return 0; + }, + }, + ], }); const content = getContentItem(language, "page", "about.json");