OGP meta tags and SEO optimization

This commit is contained in:
VityaSchel
2023-10-12 16:03:43 +04:00
parent 23e32a63c4
commit 3af808d77c
5 changed files with 17 additions and 7 deletions

2
public/robots.txt Normal file
View File

@@ -0,0 +1,2 @@
User-agent: *
Disallow:

View File

@@ -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 {

View File

@@ -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" />

View File

@@ -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",

View File

@@ -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">