diff --git a/apps/web-app/app/components/user/ProfileCard.vue b/apps/web-app/app/components/user/ProfileCard.vue index ef8cdbd..b3c1544 100644 --- a/apps/web-app/app/components/user/ProfileCard.vue +++ b/apps/web-app/app/components/user/ProfileCard.vue @@ -35,9 +35,10 @@ const { app } = useAppConfig() useSchemaOrg([ definePerson({ - name: user.name, - image: user.avatarUrl, - url: `${app.url}/u/${user.username}`, + '@type': 'Person', + 'name': user.name, + 'image': user.avatarUrl, + 'url': `${app.url}/u/${user.username}`, }), ]) diff --git a/apps/web-app/app/pages/[pageSlug].vue b/apps/web-app/app/pages/[pageSlug].vue index fe56efd..a50741b 100644 --- a/apps/web-app/app/pages/[pageSlug].vue +++ b/apps/web-app/app/pages/[pageSlug].vue @@ -81,16 +81,19 @@ const submenuItems = computed(() => [ ]) useSchemaOrg([ - defineLocalBusiness({ - url: `${app.url}/${params.pageSlug}`, - name: page.value?.title, - }), - defineAggregateRating({ - '@type': 'AggregateRating', - 'ratingValue': page.value?.rating, - 'ratingCount': page.value?.reviewsCount, - 'bestRating': 5, - 'worstRating': 1, + defineOrganization({ + '@type': 'LocalBusiness', + 'name': page.value?.title, + 'url': `${app.url}/${page.value?.slug}`, + 'priceRange': '₽', + 'aggregateRating': { + '@type': 'AggregateRating', + 'ratingValue': page.value?.rating, + 'ratingCount': page.value?.reviewsCount, + 'reviewCount': page.value?.reviewsCount, + 'bestRating': 5, + 'worstRating': 1, + }, }), ]) diff --git a/apps/web-app/app/pages/[pageSlug]/index.vue b/apps/web-app/app/pages/[pageSlug]/index.vue index e5e0c23..1732b9a 100644 --- a/apps/web-app/app/pages/[pageSlug]/index.vue +++ b/apps/web-app/app/pages/[pageSlug]/index.vue @@ -19,7 +19,7 @@ const { data: page } = await useFetch(`/api/page/slug/${params.pageSlug}`) const mainCategory = computed(() => page.value?.categories[0]?.category) -useBreadcrumb().setItems([ +const breadcrumbItems = computed(() => [ { label: 'Главная', icon: 'i-lucide-house', @@ -32,6 +32,20 @@ useBreadcrumb().setItems([ }, ]) +useBreadcrumb().setItems(breadcrumbItems.value) + +useSchemaOrg([ + defineBreadcrumb({ + '@type': 'BreadcrumbList', + 'itemListElement': breadcrumbItems.value.map((item, index) => ({ + '@type': 'ListItem', + 'position': index + 1, + 'name': item.label, + 'item': item.to ?? undefined, + })), + }), +]) + useHead({ title: `${mainCategory.value?.title ?? ''} «${page.value?.title}»`, }) diff --git a/apps/web-app/app/pages/[pageSlug]/points.vue b/apps/web-app/app/pages/[pageSlug]/points.vue index 97ce1d3..ad46a36 100644 --- a/apps/web-app/app/pages/[pageSlug]/points.vue +++ b/apps/web-app/app/pages/[pageSlug]/points.vue @@ -25,7 +25,7 @@ const { data: page } = await useFetch(`/api/page/slug/${params.pageSlug}`) const mainCategory = computed(() => page.value?.categories[0]?.category) -useBreadcrumb().setItems([ +const breadcrumbItems = computed(() => [ { label: 'Главная', icon: 'i-lucide-house', @@ -43,6 +43,20 @@ useBreadcrumb().setItems([ }, ]) +useBreadcrumb().setItems(breadcrumbItems.value) + +useSchemaOrg([ + defineBreadcrumb({ + '@type': 'BreadcrumbList', + 'itemListElement': breadcrumbItems.value.map((item, index) => ({ + '@type': 'ListItem', + 'position': index + 1, + 'name': item.label, + 'item': item.to ?? undefined, + })), + }), +]) + useHead({ title: `Адреса «${page.value?.title}»`, }) diff --git a/apps/web-app/app/pages/[pageSlug]/reviews.vue b/apps/web-app/app/pages/[pageSlug]/reviews.vue index 3986546..8007f17 100644 --- a/apps/web-app/app/pages/[pageSlug]/reviews.vue +++ b/apps/web-app/app/pages/[pageSlug]/reviews.vue @@ -53,7 +53,7 @@ function updateData() { const mainCategory = computed(() => page.value?.categories[0]?.category) -useBreadcrumb().setItems([ +const breadcrumbItems = computed(() => [ { label: 'Главная', icon: 'i-lucide-house', @@ -71,6 +71,20 @@ useBreadcrumb().setItems([ }, ]) +useBreadcrumb().setItems(breadcrumbItems.value) + +useSchemaOrg([ + defineBreadcrumb({ + '@type': 'BreadcrumbList', + 'itemListElement': breadcrumbItems.value.map((item, index) => ({ + '@type': 'ListItem', + 'position': index + 1, + 'name': item.label, + 'item': item.to ?? undefined, + })), + }), +]) + useHead({ title: `Отзывы «${page.value?.title}»`, })