Files
nobat724_front/lib/listingRobots.js
T

30 lines
1.5 KiB
JavaScript

// سیاست ایندکس صفحات لیست (/doctors و /clinics) — یک پیاده‌سازی مشترک تا دو مسیر واگرا نشوند.
//
// هر کوئری جستجو/فیلتر یک صفحهٔ داینامیک با محتوای تکراری می‌سازد و نباید ایندکس شود.
// صفحهٔ فرود قابل‌ایندکسِ یک تخصص، /specialties/[slug] است نه /doctors?specialty=.
// پس فقط لیست خام (/doctors و /clinics) ایندکس می‌شود.
//
// page استثناست: pagination فیلتر جستجو نیست و صفحات ۲+ محتوای واقعاً متفاوتی دارند
// (یاسوج به‌تنهایی ~۳۸ صفحه)؛ noindex کردنشان مسیر کشف پزشکان آن صفحات را می‌بندد.
//
// follow در همهٔ حالت‌ها می‌ماند تا لینک‌های داخلی صفحه (پروفایل پزشک، صفحهٔ تخصص) دنبال شوند.
const NON_FILTER_KEYS = new Set(["page"]);
const isEmpty = (value) =>
value === undefined || value === null || value === "";
/** آیا این صفحهٔ لیست، فیلتر یا جستجوی واقعی کاربر دارد؟ */
export function hasListingFilters(params) {
if (!params) return false;
return Object.entries(params).some(
([key, value]) => !NON_FILTER_KEYS.has(key) && !isEmpty(value)
);
}
export function listingRobots(params) {
return hasListingFilters(params)
? { robots: { index: false, follow: true } }
: {};
}