Files
asphp/app/seo.js
T
2026-09-06 00:14:09 +03:30

57 lines
1.7 KiB
JavaScript

export const SITE_ORIGIN = "https://www.asphp.ir";
export const SITE_NAME = "آریا شبکه پیشرو";
export const DEFAULT_DESCRIPTION =
"خرید سرور HP، رم سرور، هارد سرور، CPU و تجهیزات شبکه از آریا شبکه پیشرو همراه با مشاوره تخصصی، تضمین کیفیت و خدمات پس از فروش.";
export function pageMetadata({ title, description = DEFAULT_DESCRIPTION, path = "/", image }) {
const canonical = absoluteUrl(path);
const metaTitle = title.includes(SITE_NAME) ? title : `${title} | ${SITE_NAME}`;
return {
title: metaTitle,
description,
alternates: {
canonical
},
openGraph: {
title: metaTitle,
description,
url: canonical,
siteName: SITE_NAME,
locale: "fa_IR",
type: "website",
...(image ? { images: [{ url: absoluteUrl(image), alt: title }] } : {})
},
twitter: {
card: image ? "summary_large_image" : "summary",
title: metaTitle,
description,
...(image ? { images: [absoluteUrl(image)] } : {})
}
};
}
export function productCanonicalPath(item) {
const id = item.productId || item.id;
return `/products/${encodeURIComponent(id)}/${slugifyFa(item.title)}`;
}
export function blogCanonicalPath(blog) {
return `/blog/${encodeURIComponent(blog.id)}/${slugifyFa(blog.title)}`;
}
export function absoluteUrl(path = "/") {
if (/^https?:\/\//.test(path)) return path;
return `${SITE_ORIGIN}${path.startsWith("/") ? path : `/${path}`}`;
}
export function slugifyFa(value = "") {
return String(value)
.trim()
.normalize("NFKC")
.replace(/[^\p{L}\p{N}\s-]+/gu, "")
.replace(/\s+/g, "-")
.replace(/-+/g, "-")
.replace(/^-|-$/g, "");
}