feat: separate About/Clients/Partners into individual pages
- /[lang]/about/ — О компании (AboutSection standalone) - /[lang]/clients/ — Нам доверяют (ClientsSection standalone) - /[lang]/partners/ — Партнёры (PartnersSection standalone) - Remove /o-kompanii/ page - Update Header nav with all three links - Add clients/partners keys to ru/en dictionaries - sections: standalone prop → h1 heading, adjusted padding Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,8 +1,6 @@
|
||||
import type { Metadata } from 'next'
|
||||
import { getDictionary, LOCALES, type Locale } from '@/lib/i18n'
|
||||
import AboutSection from '@/components/sections/AboutSection'
|
||||
import ClientsSection from '@/components/sections/ClientsSection'
|
||||
import PartnersSection from '@/components/sections/PartnersSection'
|
||||
|
||||
export function generateStaticParams() {
|
||||
return LOCALES.map(lang => ({ lang }))
|
||||
@@ -14,22 +12,22 @@ export async function generateMetadata({ params }: { params: Promise<{ lang: str
|
||||
return {
|
||||
title: isRu ? 'О компании — Сисадмингрупп' : 'About Us — SysadminGroup',
|
||||
description: isRu
|
||||
? 'Сисадмингрупп — IT-аутсорсинг в Пушкино и Московской области. Более 10 лет опыта, 150+ клиентов, надёжные партнёры.'
|
||||
: 'SysadminGroup — IT outsourcing in Pushkino and Moscow Region. Over 10 years experience, 150+ clients, trusted partners.',
|
||||
? 'Сисадмингрупп — IT-аутсорсинг в Пушкино и Московской области. Более 10 лет опыта, 150+ клиентов.'
|
||||
: 'SysadminGroup — IT outsourcing in Pushkino and Moscow Region. Over 10 years experience, 150+ clients.',
|
||||
alternates: {
|
||||
canonical: `https://sag24.ru/${lang}/o-kompanii/`,
|
||||
canonical: `https://sag24.ru/${lang}/about/`,
|
||||
languages: {
|
||||
'ru': 'https://sag24.ru/ru/o-kompanii/',
|
||||
'en': 'https://sag24.ru/en/o-kompanii/',
|
||||
'x-default': 'https://sag24.ru/ru/o-kompanii/',
|
||||
'ru': 'https://sag24.ru/ru/about/',
|
||||
'en': 'https://sag24.ru/en/about/',
|
||||
'x-default': 'https://sag24.ru/ru/about/',
|
||||
},
|
||||
},
|
||||
openGraph: {
|
||||
title: isRu ? 'О компании — Сисадмингрупп' : 'About Us — SysadminGroup',
|
||||
description: isRu
|
||||
? 'Сисадмингрупп — IT-аутсорсинг в Пушкино и Московской области. Более 10 лет опыта, 150+ клиентов.'
|
||||
: 'SysadminGroup — IT outsourcing in Pushkino and Moscow Region. Over 10 years experience, 150+ clients.',
|
||||
url: `https://sag24.ru/${lang}/o-kompanii/`,
|
||||
? 'Сисадмингрупп — IT-аутсорсинг в Пушкино и Московской области. 10+ лет опыта, 150+ клиентов.'
|
||||
: 'SysadminGroup — IT outsourcing in Pushkino and Moscow Region. 10+ years experience, 150+ clients.',
|
||||
url: `https://sag24.ru/${lang}/about/`,
|
||||
images: [{ url: '/og-image.png' }],
|
||||
},
|
||||
}
|
||||
@@ -42,8 +40,6 @@ export default async function AboutPage({ params }: { params: Promise<{ lang: st
|
||||
return (
|
||||
<div className="pt-16">
|
||||
<AboutSection d={d} standalone />
|
||||
<ClientsSection d={d} />
|
||||
<PartnersSection d={d} />
|
||||
</div>
|
||||
)
|
||||
}
|
||||
45
src/app/[lang]/clients/page.tsx
Normal file
45
src/app/[lang]/clients/page.tsx
Normal file
@@ -0,0 +1,45 @@
|
||||
import type { Metadata } from 'next'
|
||||
import { getDictionary, LOCALES, type Locale } from '@/lib/i18n'
|
||||
import ClientsSection from '@/components/sections/ClientsSection'
|
||||
|
||||
export function generateStaticParams() {
|
||||
return LOCALES.map(lang => ({ lang }))
|
||||
}
|
||||
|
||||
export async function generateMetadata({ params }: { params: Promise<{ lang: string }> }): Promise<Metadata> {
|
||||
const { lang } = await params
|
||||
const isRu = lang === 'ru'
|
||||
return {
|
||||
title: isRu ? 'Наши клиенты — Сисадмингрупп' : 'Our Clients — SysadminGroup',
|
||||
description: isRu
|
||||
? 'Компании, которые доверяют IT-инфраструктуру Сисадмингрупп. 150+ клиентов в Пушкино и Московской области.'
|
||||
: 'Companies that trust SysadminGroup with their IT infrastructure. 150+ clients in Moscow Region.',
|
||||
alternates: {
|
||||
canonical: `https://sag24.ru/${lang}/clients/`,
|
||||
languages: {
|
||||
'ru': 'https://sag24.ru/ru/clients/',
|
||||
'en': 'https://sag24.ru/en/clients/',
|
||||
'x-default': 'https://sag24.ru/ru/clients/',
|
||||
},
|
||||
},
|
||||
openGraph: {
|
||||
title: isRu ? 'Наши клиенты — Сисадмингрупп' : 'Our Clients — SysadminGroup',
|
||||
description: isRu
|
||||
? '150+ компаний доверяют нам своё IT в Пушкино и Московской области.'
|
||||
: '150+ companies trust us with their IT in Moscow Region.',
|
||||
url: `https://sag24.ru/${lang}/clients/`,
|
||||
images: [{ url: '/og-image.png' }],
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
export default async function ClientsPage({ params }: { params: Promise<{ lang: string }> }) {
|
||||
const { lang: langStr } = await params
|
||||
const lang = langStr as Locale
|
||||
const d = getDictionary(lang)
|
||||
return (
|
||||
<div className="pt-16">
|
||||
<ClientsSection d={d} standalone />
|
||||
</div>
|
||||
)
|
||||
}
|
||||
45
src/app/[lang]/partners/page.tsx
Normal file
45
src/app/[lang]/partners/page.tsx
Normal file
@@ -0,0 +1,45 @@
|
||||
import type { Metadata } from 'next'
|
||||
import { getDictionary, LOCALES, type Locale } from '@/lib/i18n'
|
||||
import PartnersSection from '@/components/sections/PartnersSection'
|
||||
|
||||
export function generateStaticParams() {
|
||||
return LOCALES.map(lang => ({ lang }))
|
||||
}
|
||||
|
||||
export async function generateMetadata({ params }: { params: Promise<{ lang: string }> }): Promise<Metadata> {
|
||||
const { lang } = await params
|
||||
const isRu = lang === 'ru'
|
||||
return {
|
||||
title: isRu ? 'Партнёры — Сисадмингрупп' : 'Partners — SysadminGroup',
|
||||
description: isRu
|
||||
? 'Технологические партнёры Сисадмингрупп: RU-CENTER, REG.RU, МТВ, КОНТУР. Официальные представители.'
|
||||
: 'Technology partners of SysadminGroup: RU-CENTER, REG.RU, MTV, Kontur. Authorized representatives.',
|
||||
alternates: {
|
||||
canonical: `https://sag24.ru/${lang}/partners/`,
|
||||
languages: {
|
||||
'ru': 'https://sag24.ru/ru/partners/',
|
||||
'en': 'https://sag24.ru/en/partners/',
|
||||
'x-default': 'https://sag24.ru/ru/partners/',
|
||||
},
|
||||
},
|
||||
openGraph: {
|
||||
title: isRu ? 'Партнёры — Сисадмингрупп' : 'Partners — SysadminGroup',
|
||||
description: isRu
|
||||
? 'Технологические партнёры: RU-CENTER, REG.RU, МТВ, КОНТУР.'
|
||||
: 'Technology partners: RU-CENTER, REG.RU, MTV, Kontur.',
|
||||
url: `https://sag24.ru/${lang}/partners/`,
|
||||
images: [{ url: '/og-image.png' }],
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
export default async function PartnersPage({ params }: { params: Promise<{ lang: string }> }) {
|
||||
const { lang: langStr } = await params
|
||||
const lang = langStr as Locale
|
||||
const d = getDictionary(lang)
|
||||
return (
|
||||
<div className="pt-16">
|
||||
<PartnersSection d={d} standalone />
|
||||
</div>
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user