seo uodate

This commit is contained in:
Samandar Turgunboyev
2025-12-23 12:18:53 +05:00
parent 61a4f981de
commit c2a4064951
17 changed files with 831 additions and 32 deletions

View File

@@ -1,7 +1,88 @@
// app/category/page.tsx
import Category from '@/features/category/ui/Category';
import { category_api } from '@/shared/config/api/category/api';
import { Metadata } from 'next';
import { Suspense } from 'react';
const page = () => {
const fetchCategoryData = async () => {
try {
const res = await category_api.getCategory({ page: 1, page_size: 99 });
return res.data.results;
} catch {
return [];
}
};
interface PageProps {
params: {
locale: 'uz' | 'ru';
};
}
export async function generateMetadata({
params,
}: PageProps): Promise<Metadata> {
const { locale } = await params;
const categories = await fetchCategoryData();
const categoryNames = categories.map((c) => c.name).join(', ');
if (locale === 'ru') {
return {
title: 'Категории | GASTRO',
description: `Категории в нашем магазине: ${categoryNames}`,
keywords: `категории, продукты, магазин, ${categoryNames}`,
openGraph: {
title: 'Категории | GASTRO',
description: `Категории в нашем магазине: ${categoryNames}`,
siteName: 'GASTRO',
images: [
{
url: '/logos/logo.png',
width: 1200,
height: 1200,
alt: 'Категории',
},
],
type: 'website',
},
twitter: {
card: 'summary_large_image',
title: 'Категории | GASTRO',
description: `Категории в нашем магазине: ${categoryNames}`,
images: ['/logos/logo.png'],
},
};
}
// default: Uzbek
return {
title: 'Kategoriyalar | GASTRO',
description: `Bizning dokonimizdagi kategoriyalar: ${categoryNames}`,
keywords: `kategoriyalar, mahsulotlar, dokon, ${categoryNames}`,
openGraph: {
title: 'Kategoriyalar | GASTRO',
description: `Bizning dokonimizdagi kategoriyalar: ${categoryNames}`,
siteName: 'GASTRO',
images: [
{
url: '/logos/logo.png',
width: 1200,
height: 1200,
alt: 'Kategoriyalar',
},
],
type: 'website',
},
twitter: {
card: 'summary_large_image',
title: 'Kategoriyalar | GASTRO',
description: `Bizning dokonimizdagi kategoriyalar: ${categoryNames}`,
images: ['/logos/logo.png'],
},
};
}
const Page = () => {
return (
<Suspense>
<Category />
@@ -9,4 +90,4 @@ const page = () => {
);
};
export default page;
export default Page;