fix: seo friendly
This commit is contained in:
+116
@@ -0,0 +1,116 @@
|
||||
const SITE_URL = 'https://miphospital.ir'
|
||||
const SITE_NAME = 'بیمارستان مهر پرند'
|
||||
const DEFAULT_DESCRIPTION = 'وبسایت رسمی بیمارستان مهر ایرانیان پرند؛ معرفی بیمارستان، بخشهای تخصصی، اخبار افتتاح، فرصتهای شغلی و راههای ارتباط با ما.'
|
||||
const DEFAULT_IMAGE = `${SITE_URL}/resource/logo/logo-green.png`
|
||||
|
||||
// This registry also defines the public, canonical pages included in the sitemap.
|
||||
const PUBLIC_PAGES = {
|
||||
'/': [SITE_NAME, DEFAULT_DESCRIPTION],
|
||||
'/landing': ['معرفی بیمارستان مهر پرند', 'با بیمارستان مهر پرند، زیرساختهای درمانی، بخشهای تخصصی، امکانات و مسیرهای ارتباط با بیمارستان آشنا شوید.'],
|
||||
'/page/about': ['درباره بیمارستان', 'معرفی بیمارستان مهر ایرانیان پرند، اهداف، امکانات و آخرین وضعیت پیشرفت پروژه بیمارستان در شهر پرند.'],
|
||||
'/page/contact-us': ['تماس با ما', 'آدرس بیمارستان مهر پرند در فاز ۵، بلوار شهید قاسم سلیمانی؛ شماره تماس ۰۲۱-۵۳۴۵۷۰۰۰، ایمیل و موقعیت بیمارستان روی نقشه.'],
|
||||
'/page/Directors': ['تیم پروژه بیمارستان', 'آشنایی با اعضای تیم و مدیران پروژه بیمارستان مهر ایرانیان پرند.'],
|
||||
'/page/docs': ['اسناد رسمی شرکت', 'دسترسی به اساسنامه و اسناد رسمی شرکت پزشکی مهر ایرانیان پرند.'],
|
||||
'/page/cooperationsales': ['همکاری در فروش', 'اطلاعات و شرایط همکاری در فروش با شرکت پزشکی مهر ایرانیان پرند.'],
|
||||
'/Gallery': ['گالری تصاویر بیمارستان', 'تصاویر ساختمان، فضاهای داخلی و روند پیشرفت پروژه بیمارستان مهر پرند.'],
|
||||
'/News': ['اخبار و اطلاعیهها', 'اخبار، اطلاعیهها و فایلهای معرفی بیمارستان مهر ایرانیان پرند.'],
|
||||
'/questions': ['سوالات متداول', 'پاسخ به سوالات متداول درباره بیمارستان مهر پرند و امکانات باشگاه سهامداران.'],
|
||||
'/recruitment': ['فرصتهای شغلی و استخدام', 'مشاهده فرصتهای شغلی و گروههای استخدامی بیمارستان مهر ایرانیان پرند و ارسال درخواست همکاری.'],
|
||||
'/medical-equipment': ['واحد تجهیزات پزشکی', 'آشنایی با واحد تجهیزات پزشکی بیمارستان مهر پرند و راههای ارتباط با این واحد.'],
|
||||
'/components/service': ['کلینیکها و بخشها', 'معرفی کلینیکها و بخشهای تخصصی بیمارستان مهر پرند و امکانات هر بخش.'],
|
||||
'/stock-unit': ['واحد امور سهام', 'اطلاعات واحد امور سهام بیمارستان مهر پرند و دسترسی به خدمات و راههای ارتباط با این واحد.']
|
||||
}
|
||||
|
||||
const UTILITY_TITLES = {
|
||||
'/CooperationRequest': 'درخواست همکاری',
|
||||
'/recruitment/inquiry': 'استعلام وضعیت درخواست استخدام',
|
||||
'/stock-unit/stock-check': 'پیگیری درخواست سهام',
|
||||
'/stock-unit/stock-sales': 'درخواست خرید سهام',
|
||||
'/stock-unit/stock-transfer': 'درخواست انتقال سهام',
|
||||
'/stock-price': 'قیمت سهام بیمارستان مهر پرند',
|
||||
'/page/stock-price': 'نمودار قیمت سهام',
|
||||
'/page/sales': 'ارتباط با واحد فروش',
|
||||
'/smartadvice': 'مشاوره سرمایهگذاری'
|
||||
}
|
||||
|
||||
function canonicalUrl(path = '/') {
|
||||
const clean = String(path).split(/[?#]/)[0]
|
||||
if (!clean.startsWith('/') || clean.startsWith('//') || clean.includes('\\')) return `${SITE_URL}/`
|
||||
return SITE_URL + (clean.replace(/\/+$/, '') || '/')
|
||||
}
|
||||
|
||||
function getSeo(path = '/', overrides = {}) {
|
||||
const canonical = canonicalUrl(path)
|
||||
const pathname = canonical.slice(SITE_URL.length)
|
||||
const page = PUBLIC_PAGES[pathname]
|
||||
const dynamicPublic = /^\/page\/news\/[^/]+$/.test(pathname) || /^\/recruitment\/item\/[^/]+$/.test(pathname)
|
||||
return {
|
||||
title: page ? page[0] : UTILITY_TITLES[pathname] || (pathname.startsWith('/recruitment/item/request/') ? 'ثبت درخواست استخدام' : SITE_NAME),
|
||||
description: page ? page[1] : DEFAULT_DESCRIPTION,
|
||||
image: DEFAULT_IMAGE,
|
||||
type: 'website',
|
||||
noindex: !page && !dynamicPublic,
|
||||
...overrides,
|
||||
canonical
|
||||
}
|
||||
}
|
||||
|
||||
function newsSeo(post, slug) {
|
||||
const text = String(post.text || '')
|
||||
.replace(/<(script|style)\b[^>]*>[\s\S]*?<\/\1>/gi, '')
|
||||
.replace(/<[^>]*>/g, ' ')
|
||||
.replace(/ | /g, ' ')
|
||||
.replace(/&/g, '&')
|
||||
.replace(/\s+/g, ' ').trim()
|
||||
const description = text.slice(0, 160) || post.title
|
||||
const image = post.cover ? `https://mehrara-api.iran.liara.run/panel-public/uploads/${post.cover}` : DEFAULT_IMAGE
|
||||
const canonical = canonicalUrl(`/page/news/${encodeURIComponent(slug)}`)
|
||||
return {
|
||||
title: post.title,
|
||||
description,
|
||||
image,
|
||||
type: 'article',
|
||||
structuredData: {
|
||||
'@context': 'https://schema.org',
|
||||
'@type': 'NewsArticle',
|
||||
headline: post.title,
|
||||
description,
|
||||
image: [image],
|
||||
mainEntityOfPage: canonical,
|
||||
publisher: { '@id': `${SITE_URL}/#hospital` }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const hospitalSchema = {
|
||||
'@context': 'https://schema.org',
|
||||
'@type': 'Hospital',
|
||||
'@id': `${SITE_URL}/#hospital`,
|
||||
name: SITE_NAME,
|
||||
alternateName: 'بیمارستان مهر ایرانیان پرند',
|
||||
url: `${SITE_URL}/`,
|
||||
logo: DEFAULT_IMAGE,
|
||||
telephone: '+98-21-53457000',
|
||||
email: 'contact-us@miphospital.ir',
|
||||
address: {
|
||||
'@type': 'PostalAddress',
|
||||
addressCountry: 'IR',
|
||||
addressRegion: 'تهران',
|
||||
addressLocality: 'پرند',
|
||||
streetAddress: 'فاز ۵، بلوار شهید قاسم سلیمانی، نبش بلوار رسول اکرم (ص)'
|
||||
},
|
||||
sameAs: ['https://www.instagram.com/miphospital/']
|
||||
}
|
||||
|
||||
function serializeJsonLd(value) {
|
||||
return JSON.stringify(value).replace(/</g, '\\u003c')
|
||||
}
|
||||
|
||||
function sitemapLinks(news = []) {
|
||||
const articles = news
|
||||
.filter(post => post && /^\d+$/.test(String(post.id)))
|
||||
.map(post => `/page/news/${post.id}`)
|
||||
return [...new Set([...Object.keys(PUBLIC_PAGES), ...articles])]
|
||||
}
|
||||
|
||||
module.exports = { SITE_URL, SITE_NAME, canonicalUrl, getSeo, newsSeo, hospitalSchema, serializeJsonLd, sitemapLinks }
|
||||
Reference in New Issue
Block a user