/** Минимум элементов в листинге, при котором страницу ещё имеет смысл индексировать. */ export const MIN_INDEXABLE_ITEMS = 5; /** * Помечает страницу как noindex для поисковиков (ссылки при этом проходятся — follow). * Для приватных/служебных страниц, результатов внутреннего поиска и «тонких» листингов. * Условие реактивное: пока оно false, тег не выпускается и hreflang-кластер остаётся. */ export function useNoindex(when: MaybeRefOrGetter = true) { const isNoindex = computed(() => toValue(when)); useHead(() => ({ meta: isNoindex.value ? [{ name: 'robots', content: 'noindex, follow' }] : [], })); useSetSeoOverride(() => ({ noindex: isNoindex.value })); } /** * Закрывает от индексации «тонкий» листинг — страницу, где основных элементов * (роликов, а на листинге моделей — моделей) меньше порога. Считается по фактически * выданным на этом URL элементам, поэтому хвост пагинации и пустые выборки * по фильтрам тоже уходят в noindex. */ export function useNoindexThinListing(count: MaybeRefOrGetter) { useNoindex(() => (toValue(count) ?? 0) < MIN_INDEXABLE_ITEMS); }