11/02/2026
This commit is contained in:
15
src/lib/slug/resolveDesignerPage.ts
Normal file
15
src/lib/slug/resolveDesignerPage.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import { DesignerToolDetail } from "@/data/designer-tool/Detail";
|
||||
|
||||
export function resolveDesignerPage(slug: string) {
|
||||
|
||||
const data = DesignerToolDetail.find(
|
||||
(item) => item.item_info.url_index === slug
|
||||
);
|
||||
|
||||
if (!data) return null;
|
||||
|
||||
return {
|
||||
type: "designer_detail",
|
||||
data,
|
||||
};
|
||||
}
|
||||
@@ -1,17 +1,21 @@
|
||||
import { resolveArticlePage } from "./resolveArticlePage";
|
||||
import { resolveProductPage } from "./resolveProductPage";
|
||||
import { resolveJobPage } from "./resolveJobPage";
|
||||
import { resolveDesignerPage } from "./resolveDesignerPage";
|
||||
|
||||
export type SlugResult =
|
||||
| ReturnType<typeof resolveArticlePage>
|
||||
| ReturnType<typeof resolveProductPage>
|
||||
| ReturnType<typeof resolveJobPage>;
|
||||
| ReturnType<typeof resolveJobPage>
|
||||
| ReturnType<typeof resolveDesignerPage>;
|
||||
|
||||
export function findBySlug(slug?: string): SlugResult | null {
|
||||
|
||||
if (!slug || slug.trim() === '') {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
// PRODUCT
|
||||
const product = resolveProductPage(slug);
|
||||
if (product) return product;
|
||||
@@ -24,6 +28,10 @@ export function findBySlug(slug?: string): SlugResult | null {
|
||||
const job = resolveJobPage(slug);
|
||||
if (job) return job;
|
||||
|
||||
// Designer Tool
|
||||
const designer = resolveDesignerPage(slug);
|
||||
if (designer) return designer;
|
||||
|
||||
// 404
|
||||
return null;
|
||||
}
|
||||
@@ -90,4 +90,27 @@ export function normalizeKey(str: string) {
|
||||
.replace(/[\u0300-\u036f]/g, '')
|
||||
.toLowerCase()
|
||||
.replace(/\s+/g, '-');
|
||||
}
|
||||
}
|
||||
|
||||
export function convertToSlug(text: string) {
|
||||
let newText = text;
|
||||
const lastDot = text.lastIndexOf(".");
|
||||
if (lastDot > 0 && lastDot + 2 <= text.length) {
|
||||
newText = text.substring(lastDot + 2);
|
||||
}
|
||||
|
||||
return newText
|
||||
.toLowerCase()
|
||||
.replace(/à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ/g, "a")
|
||||
.replace(/è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ/g, "e")
|
||||
.replace(/ì|í|ị|ỉ|ĩ/g, "i")
|
||||
.replace(/ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ/g, "o")
|
||||
.replace(/ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ/g, "u")
|
||||
.replace(/ỳ|ý|ỵ|ỷ|ỹ/g, "y")
|
||||
.replace(/đ/g, "d")
|
||||
.normalize("NFD")
|
||||
.replace(/[\u0300-\u036f]/g, "")
|
||||
.replace(/[^\w ]+/g, "")
|
||||
.trim()
|
||||
.replace(/ +/g, "-");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user