OGP meta tags and SEO optimization
This commit is contained in:
@@ -9,14 +9,16 @@ import { groups } from '@/shared/data/groups'
|
||||
import crypto from 'crypto'
|
||||
import React from 'react'
|
||||
import { getDayOfWeek } from '@/shared/utils'
|
||||
import Head from 'next/head'
|
||||
|
||||
type PageProps = NextSerialized<{
|
||||
schedule: Day[]
|
||||
group: string
|
||||
parsedAt: Date
|
||||
}>
|
||||
|
||||
export default function HomePage(props: PageProps) {
|
||||
const { schedule, parsedAt } = nextDeserializer(props)
|
||||
const { schedule, group, parsedAt } = nextDeserializer(props)
|
||||
|
||||
React.useEffect(() => {
|
||||
if (typeof window !== 'undefined') {
|
||||
@@ -39,6 +41,12 @@ export default function HomePage(props: PageProps) {
|
||||
|
||||
return (
|
||||
<>
|
||||
<Head>
|
||||
<title>Группа {group} — Расписание занятий в Колледже Связи</title>
|
||||
<meta name="description" content={`Расписание занятий группы ${group} на неделю в Колледже Связи ПГУТИ. Расписание пар, материалы для подготовки и изменения в расписании.`} />
|
||||
<meta property="og:title" content={`Группа ${group} — Расписание занятий в Колледже Связи`} />
|
||||
<meta property="og:description" content={`Расписание занятий группы ${group} на неделю в Колледже Связи ПГУТИ. Расписание пар, материалы для подготовки и изменения в расписании.`} />
|
||||
</Head>
|
||||
<NavBar />
|
||||
<LastUpdateAt date={parsedAt} />
|
||||
<Schedule days={schedule} />
|
||||
@@ -94,7 +102,8 @@ export async function getServerSideProps(context: GetServerSidePropsContext<{ gr
|
||||
return {
|
||||
props: nextSerialized({
|
||||
schedule: schedule,
|
||||
parsedAt: parsedAt
|
||||
parsedAt: parsedAt,
|
||||
group: groups[group][1]
|
||||
})
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -4,8 +4,7 @@ export default function Document() {
|
||||
return (
|
||||
<Html lang="ru">
|
||||
<Head>
|
||||
<title>Расписание в Колледже Связи</title>
|
||||
<meta name="description" content={'Расписание группы на неделю. Самый удобный и лучший сайт для просмотра расписания КС ПГУТИ.'} />
|
||||
<meta property="og:site_name" content="Расписание занятий в Колледже связи ПГУТИ" />
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
|
||||
|
||||
@@ -33,7 +33,7 @@ const CardTitle = React.forwardRef<
|
||||
HTMLParagraphElement,
|
||||
React.HTMLAttributes<HTMLHeadingElement>
|
||||
>(({ className, ...props }, ref) => (
|
||||
<h3
|
||||
<span
|
||||
ref={ref}
|
||||
className={cn(
|
||||
"text-2xl font-semibold leading-none tracking-tight",
|
||||
|
||||
@@ -25,13 +25,13 @@ export function Day({ day }: {
|
||||
|
||||
return (
|
||||
<div className="flex flex-col gap-3 md:gap-5">
|
||||
<h1 className={cx('scroll-m-20 text-2xl md:text-4xl font-extrabold tracking-tight lg:text-5xl', { 'text-[hsl(var(--grayed-out))]': dayPassed })} id={getDayOfWeek(day.date)}>
|
||||
<h2 className={cx('scroll-m-20 text-2xl md:text-4xl font-extrabold tracking-tight lg:text-5xl', { 'text-[hsl(var(--grayed-out))]': dayPassed })} id={getDayOfWeek(day.date)}>
|
||||
{dayOfWeek} <span className={cx('ml-3', { 'text-border': !dayPassed })}>{Intl.DateTimeFormat('ru-RU', {
|
||||
day: 'numeric',
|
||||
month: 'long',
|
||||
// year: 'numeric'
|
||||
}).format(day.date)}</span>
|
||||
</h1>
|
||||
</h2>
|
||||
<div>
|
||||
<div className='overflow-auto md:snap-x md:snap-proximity md:-translate-x-16 md:w-[calc(100%+8rem)] scrollbar-hide'>
|
||||
<div className="flex flex-col md:flex-row gap-4 w-full md:w-max">
|
||||
|
||||
Reference in New Issue
Block a user