add metatags
parent
3850c55b44
commit
2c7d2e7738
|
@ -0,0 +1,7 @@
|
|||
services:
|
||||
client:
|
||||
image: 80.249.144.200:5000/relynolli_client:latest-amd
|
||||
platform: linux/amd64
|
||||
build: .
|
||||
ports:
|
||||
- "3000:3000"
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
||||
</>
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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)}
|
||||
|
|
|
@ -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>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
|
|
|
@ -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&source=constructor" width="100%" height="500"></iframe>
|
||||
|
||||
|
@ -576,6 +584,7 @@ const Contact = () => {
|
|||
|
||||
|
||||
</Wrapper>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
@ -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/>
|
||||
|
|
|
@ -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>
|
||||
</>
|
||||
)
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue