add metatags

features/layout-changes
Ernest Litvinenko 2024-05-27 19:21:18 +03:00
parent 3850c55b44
commit 2c7d2e7738
9 changed files with 95 additions and 49 deletions

7
docker-compose.yml Normal file
View File

@ -0,0 +1,7 @@
services:
client:
image: 80.249.144.200:5000/relynolli_client:latest-amd
platform: linux/amd64
build: .
ports:
- "3000:3000"

View File

@ -150,15 +150,15 @@ const Header = () => {
</Tooltip>
{cart.data &&
<Badge isInvisible={!Boolean(cart.data.data)} color={"primary"} content={cart.data.data && cart.data.data.length}
className={"text-black font-semibold"}>
<Link href={'/cart'}
className={"rounded-[8px] group transition-colors cursor-pointer bg-transparent hover:bg-primary flex items-center px-3 h-[50px]"}>
<CartLogo className={"fill-white group-hover:fill-black-1 transition-colors"}/>
</Link>
</Badge>
}
{/*{cart.data &&*/}
{/* <Badge isInvisible={!Boolean(cart.data.data)} color={"primary"} content={cart.data.data && cart.data.data.length}*/}
{/* className={"text-black font-semibold"}>*/}
{/* <Link href={'/cart'}*/}
{/* className={"rounded-[8px] group transition-colors cursor-pointer bg-transparent hover:bg-primary flex items-center px-3 h-[50px]"}>*/}
{/* <CartLogo className={"fill-white group-hover:fill-black-1 transition-colors"}/>*/}
{/* </Link>*/}
{/* </Badge>*/}
{/*}*/}
</div>

View File

@ -6,6 +6,7 @@ import {News} from "@/service/types/local";
import {WrapperDark} from "@/components/reusable/wrapper";
import {Skeleton} from "@nextui-org/react";
import Link from "next/link";
import Head from "next/head";
const NewsCard = (props: News) => {
return (
@ -37,6 +38,11 @@ const News = () => {
})
return (
<>
<Head>
<title>Блог Relynolli полезные статьи о моторных маслах</title>
<meta name={"description"} content={"В нашем блоге вы найдете полезные статьи о моторных маслах, классификации, спецификациях. Рекомендации бо использовании машинных масел для двигателей от экспертов Relynolli."}/>
</Head>
<WrapperDark title={"Статьи"} breadcrumbs={[{name: "Статьи", link: "/articles"}]}>
<div className="news-container grid grid-cols-1 lg:grid-cols-3 gap-5">
@ -50,7 +56,10 @@ const News = () => {
}
</div>
</WrapperDark>)
</WrapperDark>
</>
)
}

View File

@ -84,15 +84,15 @@ const OilCard = ({product}: InferGetStaticPropsType<typeof getStaticProps>) => {
<span className={"block text-base text-[#E0E3E3] font-normal"}>1 шт</span>
</span>
{isClient &&
<Button onClick={() => toggleCart.mutate({productId: product.id, quantity: 1})}
color={"primary"}
className={"order-3 col-span-2 lg:order-none text-black font-extrabold uppercase italic h-[70px]"}
startContent={<Cart/>}>
{/*{isClient &&*/}
{/* <Button onClick={() => toggleCart.mutate({productId: product.id, quantity: 1})}*/}
{/* color={"primary"}*/}
{/* className={"order-3 col-span-2 lg:order-none text-black font-extrabold uppercase italic h-[70px]"}*/}
{/* startContent={<Cart/>}>*/}
{(cartItems.data && cartItems.data.data && cartItems.data.data.map((item) => item.product.id).includes(product.id)) ? "В корзине" : "Добавить в корзину"}
{/* {(cartItems.data && cartItems.data.data && cartItems.data.data.map((item) => item.product.id).includes(product.id)) ? "В корзине" : "Добавить в корзину"}*/}
</Button>}
{/* </Button>}*/}
{
isClient &&
<Button onClick={() => toggleFavourite(product.id)}

View File

@ -23,6 +23,7 @@ import LocalAPI from "@/service/localAPI";
import { Img } from "react-image";
import { Dispatch, SetStateAction, useEffect, useState } from "react";
import { Product } from "@/service/types/local";
import Head from "next/head";
type SelectedFiltersStruct = {
[key: string]: string[];
@ -189,25 +190,25 @@ const CatalogCard = (product: Product & { isFavourite: boolean }) => {
{`${product.price.BASE}`.replace(/\B(?=(\d{3})+(?!\d))/g, " ")}
</span>
{(cartItems.data) ? (
<Button
onClick={() =>
toggleCart.mutate({
productId: product.id,
quantity: 1,
})
}
className={
"bg-green-2 text-black-3 relative z-20 text-lg font-bold uppercase italic"
}
>
{(cartItems.data && cartItems.data.data && cartItems.data.data
.map(({ productId }) => productId)
.includes(product.id))
? "В корзине"
: "В корзину"}
</Button>
) : null}
{/*{(cartItems.data) ? (*/}
{/* <Button*/}
{/* onClick={() =>*/}
{/* toggleCart.mutate({*/}
{/* productId: product.id,*/}
{/* quantity: 1,*/}
{/* })*/}
{/* }*/}
{/* className={*/}
{/* "bg-green-2 text-black-3 relative z-20 text-lg font-bold uppercase italic"*/}
{/* }*/}
{/* >*/}
{/* {(cartItems.data && cartItems.data.data && cartItems.data.data*/}
{/* .map(({ productId }) => productId)*/}
{/* .includes(product.id))*/}
{/* ? "В корзине"*/}
{/* : "В корзину"}*/}
{/* </Button>*/}
{/*) : null}*/}
<Link
href={"/catalog/" + product.code}
@ -242,6 +243,11 @@ const Catalog = (props: InferGetStaticPropsType<typeof getStaticProps>) => {
});
return (
<>
<Head>
<title>Каталог Relynolli купить моторное масло для автомобиля и техники на официальном сайте</title>
<meta name={"description"} content={"Relynolli предлагает большой выбор моторных масел для легковых автомобилей, коммерческого транспорта и спецтехник: цены и характеристики в каталоге. Выбирайте лучшее машинное масло."}/>
</Head>
<Wrapper
title={"Каталог"}
breadcrumbs={[{name: "Каталог", link: "/catalog"}]}
@ -293,6 +299,7 @@ const Catalog = (props: InferGetStaticPropsType<typeof getStaticProps>) => {
/>
</div>
</Wrapper>
</>
);
};

View File

@ -1,6 +1,7 @@
import Wrapper from "@/components/reusable/wrapper";
import Stepper from "@/components/reusable/stepper";
import CallbackForm from "@/components/reusable/contacts/callbackForm";
import Head from "next/head";
const Form1 = () => (
<>
@ -537,6 +538,13 @@ const Contact = () => {
]
return (
<>
<Head>
<title>Контакты Relynolli: телефоны, адреса, почта</title>
<meta name={"description"} content={"Контактная информация Relynolli: телефон, график работы компании, адреса, email. Обратная связь."}/>
</Head>
<Wrapper title={"Контакты"} breadcrumbs={[{name: "Контакты", link: "/contacts"}]}>
<iframe className={"rounded-[20px] mb-24"} src="https://yandex.ru/map-widget/v1/?um=constructor%3Aa9c71bba18ffe78a2028d1851bd205ecebc04063c76af8dedab6bceff5c73b24&amp;source=constructor" width="100%" height="500"></iframe>
@ -576,6 +584,7 @@ const Contact = () => {
</Wrapper>
</>
)
}

View File

@ -15,6 +15,7 @@ import {News, Wrapper} from "@/service/types/local";
import useClient from "@/hooks/useClient";
import {useQuery} from "@tanstack/react-query";
import LocalAPI from "@/service/localAPI";
import Head from "next/head";
const Hero = () => {
return (
@ -359,6 +360,10 @@ const ArticlesSlider = () => {
export default function Home() {
return (
<>
<Head>
<title>Relynolli купить моторное масло на официальном сайте российского производителя по выгодной цене</title>
<meta name={"description"} content={"Официальный сайт производителя моторного масла Relynolli ®. Российское автомобильное масло Релиноли важнейшая «деталь» двигателя вашего автомобиля. Купить в интернет-магазине оптом и в розницу."}/>
</Head>
<Hero/>
<MainInfo/>
<Achievements/>

View File

@ -6,6 +6,7 @@ import {News} from "@/service/types/local";
import {WrapperDark} from "@/components/reusable/wrapper";
import {Skeleton} from "@nextui-org/react";
import Link from "next/link";
import Head from "next/head";
const NewsCard = (props: News) => {
return (
@ -37,6 +38,11 @@ const News = () => {
})
return (
<>
<Head>
<title>Новости Relynolli актуальная информация о бренде, публикации в СМИ</title>
<meta name="description" content="Все новости от бренда моторных масел Relynolli: акции, актуальная информация, видео и публикации в СМИ. Узнайте о профильных мероприятиях с участием Релиноли и ТД ТЕХНОХИМ ГРУПП."/>
</Head>
<WrapperDark title={"Новости"} breadcrumbs={[{name: "Новости", link: "/news"}]}>
<div className="news-container grid grid-cols-1 lg:grid-cols-3 gap-5">
@ -50,7 +56,10 @@ const News = () => {
}
</div>
</WrapperDark>)
</WrapperDark>
</>
)
}

View File

@ -53,7 +53,7 @@ const Support = () => {
на все Ваши вопросы!</p>
<Button className="text-black text-xl font-extrabold h-[70px] uppercase gap-5 "
color={"primary"}
href={""}
href={"https://yandex.ru/business/widget/request/company/32353164529"}
as={Link}
endContent={<ChevronBannerIcon className={"stroke-[3px] stroke-black"}/>}>
<i>Задать вопрос</i>