117 lines
6.6 KiB
JavaScript
117 lines
6.6 KiB
JavaScript
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 }
|