fix: update metatags gen #2

Merged
redrockjs merged 1 commits from dev into main 2025-12-11 12:13:54 +00:00
18 changed files with 319 additions and 82 deletions

80
.idea/workspace.xml generated
View File

@@ -5,8 +5,24 @@
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="2a96f817-9dc2-4f3c-893a-c4974c750774" name="Changes" comment=""> <list default="true" id="2a96f817-9dc2-4f3c-893a-c4974c750774" name="Changes" comment="">
<change beforePath="$PROJECT_DIR$/package-lock.json" beforeDir="false" afterPath="$PROJECT_DIR$/package-lock.json" afterDir="false" /> <change afterPath="$PROJECT_DIR$/src/shared/types/metainfo.ts" afterDir="false" />
<change beforePath="$PROJECT_DIR$/package.json" beforeDir="false" afterPath="$PROJECT_DIR$/package.json" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/app/contacts/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/contacts/page.tsx" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/app/cookies/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/cookies/page.tsx" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/app/experts/borodin-vitalij-petrovich/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/experts/borodin-vitalij-petrovich/page.tsx" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/app/experts/gjulmamedov-javar-firmamed-ogly/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/experts/gjulmamedov-javar-firmamed-ogly/page.tsx" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/app/experts/jancen-jana-nikolaevna/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/experts/jancen-jana-nikolaevna/page.tsx" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/app/experts/kaminskij-dmitrij-olegovich/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/experts/kaminskij-dmitrij-olegovich/page.tsx" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/app/experts/kolodij-aleksandr-sergeevich/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/experts/kolodij-aleksandr-sergeevich/page.tsx" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/app/experts/mikova-inna-georgievna/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/experts/mikova-inna-georgievna/page.tsx" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/app/experts/mitjaev-aleksej-aleksandrovich/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/experts/mitjaev-aleksej-aleksandrovich/page.tsx" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/app/experts/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/experts/page.tsx" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/app/experts/polinov-andrej-vladimirovich/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/experts/polinov-andrej-vladimirovich/page.tsx" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/app/experts/volkova-goncharova-tatjana-anatolevna/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/experts/volkova-goncharova-tatjana-anatolevna/page.tsx" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/app/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/page.tsx" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/app/privacy-policy/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/privacy-policy/page.tsx" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/app/user-agreement/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/user-agreement/page.tsx" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/shared/lib/metaInfo/metaInfo.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/shared/lib/metaInfo/metaInfo.ts" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -14,7 +30,7 @@
<option name="LAST_RESOLUTION" value="IGNORE" /> <option name="LAST_RESOLUTION" value="IGNORE" />
</component> </component>
<component name="DarkyenusTimeTracker"> <component name="DarkyenusTimeTracker">
<option name="totalTimeSeconds" value="226258" /> <option name="totalTimeSeconds" value="234128" />
<option name="gitIntegration" value="true" /> <option name="gitIntegration" value="true" />
<option name="naggedAbout" value="1" /> <option name="naggedAbout" value="1" />
</component> </component>
@@ -42,37 +58,38 @@
<option name="hideEmptyMiddlePackages" value="true" /> <option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" /> <option name="showLibraryContents" value="true" />
</component> </component>
<component name="PropertiesComponent"><![CDATA[{ <component name="PropertiesComponent">{
"keyToString": { &quot;keyToString&quot;: {
"ASKED_SHARE_PROJECT_CONFIGURATION_FILES": "true", &quot;ASKED_SHARE_PROJECT_CONFIGURATION_FILES&quot;: &quot;true&quot;,
"ModuleVcsDetector.initialDetectionPerformed": "true", &quot;ModuleVcsDetector.initialDetectionPerformed&quot;: &quot;true&quot;,
"RunOnceActivity.ShowReadmeOnStart": "true", &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
"RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true", &quot;RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252&quot;: &quot;true&quot;,
"RunOnceActivity.git.unshallow": "true", &quot;RunOnceActivity.git.unshallow&quot;: &quot;true&quot;,
"RunOnceActivity.typescript.service.memoryLimit.init": "true", &quot;RunOnceActivity.typescript.service.memoryLimit.init&quot;: &quot;true&quot;,
"SHARE_PROJECT_CONFIGURATION_FILES": "true", &quot;SHARE_PROJECT_CONFIGURATION_FILES&quot;: &quot;true&quot;,
"com.intellij.ml.llm.matterhorn.ej.ui.settings.DefaultModelSelectionForGA.v1": "true", &quot;com.intellij.ml.llm.matterhorn.ej.ui.settings.DefaultModelSelectionForGA.v1&quot;: &quot;true&quot;,
"git-widget-placeholder": "dev", &quot;git-widget-placeholder&quot;: &quot;dev&quot;,
"ignore.virus.scanning.warn.message": "true", &quot;ignore.virus.scanning.warn.message&quot;: &quot;true&quot;,
"js.debugger.nextJs.config.created.client": "true", &quot;js.debugger.nextJs.config.created.client&quot;: &quot;true&quot;,
"js.debugger.nextJs.config.created.server": "true", &quot;js.debugger.nextJs.config.created.server&quot;: &quot;true&quot;,
"junie.onboarding.icon.badge.shown": "true", &quot;junie.onboarding.icon.badge.shown&quot;: &quot;true&quot;,
"list.type.of.created.stylesheet": "SCSS", &quot;list.type.of.created.stylesheet&quot;: &quot;SCSS&quot;,
"node.js.detected.package.eslint": "true", &quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
"node.js.detected.package.tslint": "true", &quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
"node.js.selected.package.eslint": "(autodetect)", &quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
"node.js.selected.package.tslint": "(autodetect)", &quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
"nodejs_package_manager_path": "npm", &quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
"npm.Next.js: server-side.executor": "Run", &quot;npm.Next.js: server-side.executor&quot;: &quot;Run&quot;,
"prettierjs.PrettierConfiguration.Package": "C:\\dev-personal\\ocenka-web\\node_modules\\prettier", &quot;prettierjs.PrettierConfiguration.Package&quot;: &quot;C:\\dev-personal\\ocenka-web\\node_modules\\prettier&quot;,
"settings.editor.selected.configurable": "terminal", &quot;settings.editor.selected.configurable&quot;: &quot;terminal&quot;,
"to.speed.mode.migration.done": "true", &quot;to.speed.mode.migration.done&quot;: &quot;true&quot;,
"ts.external.directory.path": "C:\\dev-personal\\ocenka-web\\node_modules\\typescript\\lib", &quot;ts.external.directory.path&quot;: &quot;C:\\dev-personal\\ocenka-web\\node_modules\\typescript\\lib&quot;,
"vue.rearranger.settings.migration": "true" &quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
} }
}]]></component> }</component>
<component name="RecentsManager"> <component name="RecentsManager">
<key name="MoveFile.RECENT_KEYS"> <key name="MoveFile.RECENT_KEYS">
<recent name="C:\dev-personal\ocenka-web" />
<recent name="C:\dev-personal\ocenka-web\public\images" /> <recent name="C:\dev-personal\ocenka-web\public\images" />
<recent name="C:\dev-personal\ocenka-web\src\widgets" /> <recent name="C:\dev-personal\ocenka-web\src\widgets" />
<recent name="C:\dev-personal\ocenka-web\src\widgets\sidebar" /> <recent name="C:\dev-personal\ocenka-web\src\widgets\sidebar" />
@@ -119,6 +136,7 @@
<workItem from="1765196704782" duration="4455000" /> <workItem from="1765196704782" duration="4455000" />
<workItem from="1765279298291" duration="3813000" /> <workItem from="1765279298291" duration="3813000" />
<workItem from="1765435962765" duration="4004000" /> <workItem from="1765435962765" duration="4004000" />
<workItem from="1765453944194" duration="1010000" />
</task> </task>
<servers /> <servers />
</component> </component>

View File

@@ -1,19 +1,33 @@
import { headers } from 'next/headers';
import { Contacts } from '@/views'; import { Contacts } from '@/views';
import type { Metadata } from 'next'; import type { Metadata } from 'next';
import { metaInfo } from '@shared/lib'; import { metaInfo } from '@shared/lib';
import { TMetainfo } from '@shared/types/metainfo';
const metainfo = { const metainfo: TMetainfo = {
title: 'Контакты', title: 'Контакты',
description: description:
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.', 'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.',
companyName: 'Компания ДИТРАСО', companyName: 'Компания ДИТРАСО',
phone: '+7 (900) 241-34-34', phone: '+7 (900) 241-34-34',
url: 'https://ocenka-sochi.ru',
ogImageTitle: 'Оценка и экспертиза', ogImageTitle: 'Оценка и экспертиза',
ogImageDescription: 'Независимая оценка и судебная экспертиза', ogImageDescription: 'Независимая оценка и судебная экспертиза',
}; };
export const metadata: Metadata = metaInfo(metainfo); export async function generateMetadata(): Promise<Metadata> {
const h = await headers();
const referer = h.get('referer') ?? '';
const host = h.get('host') ?? '';
const proto = h.get('x-forwarded-proto') ?? '';
const path = referer ? new URL(referer).pathname : '';
const metainfoExtended = Object.assign({}, metainfo, {
host: `${proto}://${host}`,
path: path,
});
return metaInfo(metainfoExtended);
}
export default function Page() { export default function Page() {
return <Contacts />; return <Contacts />;

View File

@@ -1,19 +1,33 @@
import { Cookie } from '@/views'; import { Cookie } from '@/views';
import type { Metadata } from 'next'; import type { Metadata } from 'next';
import { metaInfo } from '@shared/lib'; import { metaInfo } from '@shared/lib';
import { headers } from 'next/headers';
import { TMetainfo } from '@shared/types/metainfo';
const metainfo = { const metainfo: TMetainfo = {
title: 'Независимая оценка и судебная экспертиза', title: 'Независимая оценка и судебная экспертиза',
description: description:
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.', 'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.',
companyName: 'Компания ДИТРАСО', companyName: 'Компания ДИТРАСО',
phone: '+7 (900) 241-34-34', phone: '+7 (900) 241-34-34',
url: 'https://ocenka-sochi.ru',
ogImageTitle: 'Оценка и экспертиза', ogImageTitle: 'Оценка и экспертиза',
ogImageDescription: 'Независимая оценка и судебная экспертиза', ogImageDescription: 'Независимая оценка и судебная экспертиза',
}; };
export const metadata: Metadata = metaInfo(metainfo); export async function generateMetadata(): Promise<Metadata> {
const h = await headers();
const referer = h.get('referer') ?? '';
const host = h.get('host') ?? '';
const proto = h.get('x-forwarded-proto') ?? '';
const path = referer ? new URL(referer).pathname : '';
const metainfoExtended = Object.assign({}, metainfo, {
host: `${proto}://${host}`,
path: path,
});
return metaInfo(metainfoExtended);
}
export default function Page() { export default function Page() {
return <Cookie />; return <Cookie />;

View File

@@ -1,19 +1,33 @@
import { ExpertBorodin } from '@/views'; import { ExpertBorodin } from '@/views';
import type { Metadata } from 'next'; import type { Metadata } from 'next';
import { metaInfo } from '@shared/lib'; import { metaInfo } from '@shared/lib';
import { headers } from 'next/headers';
import { TMetainfo } from '@shared/types/metainfo';
const metainfo = { const metainfo: TMetainfo = {
title: 'Эксперт - Бородин Виталий Петрович', title: 'Эксперт - Бородин Виталий Петрович',
description: description:
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.', 'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.',
companyName: 'Компания ДИТРАСО', companyName: 'Компания ДИТРАСО',
phone: '+7 (900) 241-34-34', phone: '+7 (900) 241-34-34',
url: 'https://ocenka-sochi.ru',
ogImageTitle: 'Оценка и экспертиза', ogImageTitle: 'Оценка и экспертиза',
ogImageDescription: 'Независимая оценка и судебная экспертиза', ogImageDescription: 'Независимая оценка и судебная экспертиза',
}; };
export const metadata: Metadata = metaInfo(metainfo); export async function generateMetadata(): Promise<Metadata> {
const h = await headers();
const referer = h.get('referer') ?? '';
const host = h.get('host') ?? '';
const proto = h.get('x-forwarded-proto') ?? '';
const path = referer ? new URL(referer).pathname : '';
const metainfoExtended = Object.assign({}, metainfo, {
host: `${proto}://${host}`,
path: path,
});
return metaInfo(metainfoExtended);
}
export default function Page() { export default function Page() {
return <ExpertBorodin />; return <ExpertBorodin />;

View File

@@ -1,19 +1,33 @@
import { ExpertGulmamedov } from '@/views'; import { ExpertGulmamedov } from '@/views';
import type { Metadata } from 'next'; import type { Metadata } from 'next';
import { metaInfo } from '@shared/lib'; import { metaInfo } from '@shared/lib';
import { headers } from 'next/headers';
import { TMetainfo } from '@shared/types/metainfo';
const metainfo = { const metainfo: TMetainfo = {
title: 'Эксперт - Гюльмамедов Явар Фирмамед-оглы', title: 'Эксперт - Гюльмамедов Явар Фирмамед-оглы',
description: description:
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.', 'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.',
companyName: 'Компания ДИТРАСО', companyName: 'Компания ДИТРАСО',
phone: '+7 (900) 241-34-34', phone: '+7 (900) 241-34-34',
url: 'https://ocenka-sochi.ru',
ogImageTitle: 'Оценка и экспертиза', ogImageTitle: 'Оценка и экспертиза',
ogImageDescription: 'Независимая оценка и судебная экспертиза', ogImageDescription: 'Независимая оценка и судебная экспертиза',
}; };
export const metadata: Metadata = metaInfo(metainfo); export async function generateMetadata(): Promise<Metadata> {
const h = await headers();
const referer = h.get('referer') ?? '';
const host = h.get('host') ?? '';
const proto = h.get('x-forwarded-proto') ?? '';
const path = referer ? new URL(referer).pathname : '';
const metainfoExtended = Object.assign({}, metainfo, {
host: `${proto}://${host}`,
path: path,
});
return metaInfo(metainfoExtended);
}
export default function Page() { export default function Page() {
return <ExpertGulmamedov />; return <ExpertGulmamedov />;

View File

@@ -1,19 +1,33 @@
import { ExpertYancen } from '@/views'; import { ExpertYancen } from '@/views';
import type { Metadata } from 'next'; import type { Metadata } from 'next';
import { metaInfo } from '@shared/lib'; import { metaInfo } from '@shared/lib';
import { headers } from 'next/headers';
import { TMetainfo } from '@shared/types/metainfo';
const metainfo = { const metainfo: TMetainfo = {
title: 'Эксперт - Янцен Яна Николаевна', title: 'Эксперт - Янцен Яна Николаевна',
description: description:
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.', 'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.',
companyName: 'Компания ДИТРАСО', companyName: 'Компания ДИТРАСО',
phone: '+7 (900) 241-34-34', phone: '+7 (900) 241-34-34',
url: 'https://ocenka-sochi.ru',
ogImageTitle: 'Оценка и экспертиза', ogImageTitle: 'Оценка и экспертиза',
ogImageDescription: 'Независимая оценка и судебная экспертиза', ogImageDescription: 'Независимая оценка и судебная экспертиза',
}; };
export const metadata: Metadata = metaInfo(metainfo); export async function generateMetadata(): Promise<Metadata> {
const h = await headers();
const referer = h.get('referer') ?? '';
const host = h.get('host') ?? '';
const proto = h.get('x-forwarded-proto') ?? '';
const path = referer ? new URL(referer).pathname : '';
const metainfoExtended = Object.assign({}, metainfo, {
host: `${proto}://${host}`,
path: path,
});
return metaInfo(metainfoExtended);
}
export default function Page() { export default function Page() {
return <ExpertYancen />; return <ExpertYancen />;

View File

@@ -1,19 +1,33 @@
import { ExpertKaminskiy } from '@/views'; import { ExpertKaminskiy } from '@/views';
import type { Metadata } from 'next'; import type { Metadata } from 'next';
import { metaInfo } from '@shared/lib'; import { metaInfo } from '@shared/lib';
import { headers } from 'next/headers';
import { TMetainfo } from '@shared/types/metainfo';
const metainfo = { const metainfo: TMetainfo = {
title: 'Эксперт - Каминский Дмитрий Олегович', title: 'Эксперт - Каминский Дмитрий Олегович',
description: description:
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.', 'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.',
companyName: 'Компания ДИТРАСО', companyName: 'Компания ДИТРАСО',
phone: '+7 (900) 241-34-34', phone: '+7 (900) 241-34-34',
url: 'https://ocenka-sochi.ru',
ogImageTitle: 'Оценка и экспертиза', ogImageTitle: 'Оценка и экспертиза',
ogImageDescription: 'Независимая оценка и судебная экспертиза', ogImageDescription: 'Независимая оценка и судебная экспертиза',
}; };
export const metadata: Metadata = metaInfo(metainfo); export async function generateMetadata(): Promise<Metadata> {
const h = await headers();
const referer = h.get('referer') ?? '';
const host = h.get('host') ?? '';
const proto = h.get('x-forwarded-proto') ?? '';
const path = referer ? new URL(referer).pathname : '';
const metainfoExtended = Object.assign({}, metainfo, {
host: `${proto}://${host}`,
path: path,
});
return metaInfo(metainfoExtended);
}
export default function Page() { export default function Page() {
return <ExpertKaminskiy />; return <ExpertKaminskiy />;

View File

@@ -1,19 +1,33 @@
import { ExpertKolodiy } from '@/views'; import { ExpertKolodiy } from '@/views';
import type { Metadata } from 'next'; import type { Metadata } from 'next';
import { metaInfo } from '@shared/lib'; import { metaInfo } from '@shared/lib';
import { headers } from 'next/headers';
import { TMetainfo } from '@shared/types/metainfo';
const metainfo = { const metainfo: TMetainfo = {
title: 'Эксперт - Колодий Александр Сергеевич', title: 'Эксперт - Колодий Александр Сергеевич',
description: description:
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.', 'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.',
companyName: 'Компания ДИТРАСО', companyName: 'Компания ДИТРАСО',
phone: '+7 (900) 241-34-34', phone: '+7 (900) 241-34-34',
url: 'https://ocenka-sochi.ru',
ogImageTitle: 'Оценка и экспертиза', ogImageTitle: 'Оценка и экспертиза',
ogImageDescription: 'Независимая оценка и судебная экспертиза', ogImageDescription: 'Независимая оценка и судебная экспертиза',
}; };
export const metadata: Metadata = metaInfo(metainfo); export async function generateMetadata(): Promise<Metadata> {
const h = await headers();
const referer = h.get('referer') ?? '';
const host = h.get('host') ?? '';
const proto = h.get('x-forwarded-proto') ?? '';
const path = referer ? new URL(referer).pathname : '';
const metainfoExtended = Object.assign({}, metainfo, {
host: `${proto}://${host}`,
path: path,
});
return metaInfo(metainfoExtended);
}
export default function Page() { export default function Page() {
return <ExpertKolodiy />; return <ExpertKolodiy />;

View File

@@ -1,19 +1,33 @@
import { ExpertMikova } from '@/views'; import { ExpertMikova } from '@/views';
import type { Metadata } from 'next'; import type { Metadata } from 'next';
import { metaInfo } from '@shared/lib'; import { metaInfo } from '@shared/lib';
import { headers } from 'next/headers';
import { TMetainfo } from '@shared/types/metainfo';
const metainfo = { const metainfo: TMetainfo = {
title: 'Эксперт - Микова Инна Георгиевна', title: 'Эксперт - Микова Инна Георгиевна',
description: description:
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.', 'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.',
companyName: 'Компания ДИТРАСО', companyName: 'Компания ДИТРАСО',
phone: '+7 (900) 241-34-34', phone: '+7 (900) 241-34-34',
url: 'https://ocenka-sochi.ru',
ogImageTitle: 'Оценка и экспертиза', ogImageTitle: 'Оценка и экспертиза',
ogImageDescription: 'Независимая оценка и судебная экспертиза', ogImageDescription: 'Независимая оценка и судебная экспертиза',
}; };
export const metadata: Metadata = metaInfo(metainfo); export async function generateMetadata(): Promise<Metadata> {
const h = await headers();
const referer = h.get('referer') ?? '';
const host = h.get('host') ?? '';
const proto = h.get('x-forwarded-proto') ?? '';
const path = referer ? new URL(referer).pathname : '';
const metainfoExtended = Object.assign({}, metainfo, {
host: `${proto}://${host}`,
path: path,
});
return metaInfo(metainfoExtended);
}
export default function Page() { export default function Page() {
return <ExpertMikova />; return <ExpertMikova />;

View File

@@ -1,19 +1,33 @@
import { ExpertMityaev } from '@/views'; import { ExpertMityaev } from '@/views';
import type { Metadata } from 'next'; import type { Metadata } from 'next';
import { metaInfo } from '@shared/lib'; import { metaInfo } from '@shared/lib';
import { headers } from 'next/headers';
import { TMetainfo } from '@shared/types/metainfo';
const metainfo = { const metainfo: TMetainfo = {
title: 'Эксперт - Митяев Алексей Александрович', title: 'Эксперт - Митяев Алексей Александрович',
description: description:
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.', 'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.',
companyName: 'Компания ДИТРАСО', companyName: 'Компания ДИТРАСО',
phone: '+7 (900) 241-34-34', phone: '+7 (900) 241-34-34',
url: 'https://ocenka-sochi.ru',
ogImageTitle: 'Оценка и экспертиза', ogImageTitle: 'Оценка и экспертиза',
ogImageDescription: 'Независимая оценка и судебная экспертиза', ogImageDescription: 'Независимая оценка и судебная экспертиза',
}; };
export const metadata: Metadata = metaInfo(metainfo); export async function generateMetadata(): Promise<Metadata> {
const h = await headers();
const referer = h.get('referer') ?? '';
const host = h.get('host') ?? '';
const proto = h.get('x-forwarded-proto') ?? '';
const path = referer ? new URL(referer).pathname : '';
const metainfoExtended = Object.assign({}, metainfo, {
host: `${proto}://${host}`,
path: path,
});
return metaInfo(metainfoExtended);
}
export default function Page() { export default function Page() {
return <ExpertMityaev />; return <ExpertMityaev />;

View File

@@ -1,19 +1,33 @@
import { Experts } from '@/views'; import { Experts } from '@/views';
import type { Metadata } from 'next'; import type { Metadata } from 'next';
import { metaInfo } from '@shared/lib'; import { metaInfo } from '@shared/lib';
import { headers } from 'next/headers';
import { TMetainfo } from '@shared/types/metainfo';
const metainfo = { const metainfo: TMetainfo = {
title: 'Эксперты', title: 'Эксперты',
description: description:
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.', 'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.',
companyName: 'Компания ДИТРАСО', companyName: 'Компания ДИТРАСО',
phone: '+7 (900) 241-34-34', phone: '+7 (900) 241-34-34',
url: 'https://ocenka-sochi.ru',
ogImageTitle: 'Оценка и экспертиза', ogImageTitle: 'Оценка и экспертиза',
ogImageDescription: 'Независимая оценка и судебная экспертиза', ogImageDescription: 'Независимая оценка и судебная экспертиза',
}; };
export const metadata: Metadata = metaInfo(metainfo); export async function generateMetadata(): Promise<Metadata> {
const h = await headers();
const referer = h.get('referer') ?? '';
const host = h.get('host') ?? '';
const proto = h.get('x-forwarded-proto') ?? '';
const path = referer ? new URL(referer).pathname : '';
const metainfoExtended = Object.assign({}, metainfo, {
host: `${proto}://${host}`,
path: path,
});
return metaInfo(metainfoExtended);
}
export default function Page() { export default function Page() {
return <Experts />; return <Experts />;

View File

@@ -1,19 +1,33 @@
import { ExpertPolinov } from '@/views'; import { ExpertPolinov } from '@/views';
import type { Metadata } from 'next'; import type { Metadata } from 'next';
import { metaInfo } from '@shared/lib'; import { metaInfo } from '@shared/lib';
import { headers } from 'next/headers';
import { TMetainfo } from '@shared/types/metainfo';
const metainfo = { const metainfo: TMetainfo = {
title: 'Эксперт - Полинов Андрей Владимирович', title: 'Эксперт - Полинов Андрей Владимирович',
description: description:
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.', 'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.',
companyName: 'Компания ДИТРАСО', companyName: 'Компания ДИТРАСО',
phone: '+7 (900) 241-34-34', phone: '+7 (900) 241-34-34',
url: 'https://ocenka-sochi.ru',
ogImageTitle: 'Оценка и экспертиза', ogImageTitle: 'Оценка и экспертиза',
ogImageDescription: 'Независимая оценка и судебная экспертиза', ogImageDescription: 'Независимая оценка и судебная экспертиза',
}; };
export const metadata: Metadata = metaInfo(metainfo); export async function generateMetadata(): Promise<Metadata> {
const h = await headers();
const referer = h.get('referer') ?? '';
const host = h.get('host') ?? '';
const proto = h.get('x-forwarded-proto') ?? '';
const path = referer ? new URL(referer).pathname : '';
const metainfoExtended = Object.assign({}, metainfo, {
host: `${proto}://${host}`,
path: path,
});
return metaInfo(metainfoExtended);
}
export default function Page() { export default function Page() {
return <ExpertPolinov />; return <ExpertPolinov />;

View File

@@ -1,19 +1,33 @@
import { ExpertVolkovaGoncharova } from '@/views'; import { ExpertVolkovaGoncharova } from '@/views';
import type { Metadata } from 'next'; import type { Metadata } from 'next';
import { metaInfo } from '@shared/lib'; import { metaInfo } from '@shared/lib';
import { headers } from 'next/headers';
import { TMetainfo } from '@shared/types/metainfo';
const metainfo = { const metainfo: TMetainfo = {
title: 'Эксперт - Волкова-Гончарова Татьяна Анатольевна', title: 'Эксперт - Волкова-Гончарова Татьяна Анатольевна',
description: description:
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.', 'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.',
companyName: 'Компания ДИТРАСО', companyName: 'Компания ДИТРАСО',
phone: '+7 (900) 241-34-34', phone: '+7 (900) 241-34-34',
url: 'https://ocenka-sochi.ru',
ogImageTitle: 'Оценка и экспертиза', ogImageTitle: 'Оценка и экспертиза',
ogImageDescription: 'Независимая оценка и судебная экспертиза', ogImageDescription: 'Независимая оценка и судебная экспертиза',
}; };
export const metadata: Metadata = metaInfo(metainfo); export async function generateMetadata(): Promise<Metadata> {
const h = await headers();
const referer = h.get('referer') ?? '';
const host = h.get('host') ?? '';
const proto = h.get('x-forwarded-proto') ?? '';
const path = referer ? new URL(referer).pathname : '';
const metainfoExtended = Object.assign({}, metainfo, {
host: `${proto}://${host}`,
path: path,
});
return metaInfo(metainfoExtended);
}
export default function Page() { export default function Page() {
return <ExpertVolkovaGoncharova />; return <ExpertVolkovaGoncharova />;

View File

@@ -1,19 +1,33 @@
import { Home } from '@/views'; import { Home } from '@/views';
import type { Metadata } from 'next'; import type { Metadata } from 'next';
import { metaInfo } from '@shared/lib'; import { metaInfo } from '@shared/lib';
import { headers } from 'next/headers';
import { TMetainfo } from '@shared/types/metainfo';
const metainfo = { const metainfo: TMetainfo = {
title: 'Независимая оценка и судебная экспертиза', title: 'Независимая оценка и судебная экспертиза',
description: description:
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.', 'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.',
companyName: 'Компания ДИТРАСО', companyName: 'Компания ДИТРАСО',
phone: '+7 (900) 241-34-34', phone: '+7 (900) 241-34-34',
url: 'https://ocenka-sochi.ru',
ogImageTitle: 'Оценка и экспертиза', ogImageTitle: 'Оценка и экспертиза',
ogImageDescription: 'Независимая оценка и судебная экспертиза', ogImageDescription: 'Независимая оценка и судебная экспертиза',
}; };
export const metadata: Metadata = metaInfo(metainfo); export async function generateMetadata(): Promise<Metadata> {
const h = await headers();
const referer = h.get('referer') ?? '';
const host = h.get('host') ?? '';
const proto = h.get('x-forwarded-proto') ?? '';
const path = referer ? new URL(referer).pathname : '';
const metainfoExtended = Object.assign({}, metainfo, {
host: `${proto}://${host}`,
path: path,
});
return metaInfo(metainfoExtended);
}
export default function HomePage() { export default function HomePage() {
return <Home />; return <Home />;

View File

@@ -1,19 +1,33 @@
import { PrivacyPolicy } from '@/views'; import { PrivacyPolicy } from '@/views';
import type { Metadata } from 'next'; import type { Metadata } from 'next';
import { metaInfo } from '@shared/lib'; import { metaInfo } from '@shared/lib';
import { headers } from 'next/headers';
import { TMetainfo } from '@shared/types/metainfo';
const metainfo = { const metainfo: TMetainfo = {
title: 'Независимая оценка и судебная экспертиза', title: 'Независимая оценка и судебная экспертиза',
description: description:
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.', 'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.',
companyName: 'Компания ДИТРАСО', companyName: 'Компания ДИТРАСО',
phone: '+7 (900) 241-34-34', phone: '+7 (900) 241-34-34',
url: 'https://ocenka-sochi.ru',
ogImageTitle: 'Оценка и экспертиза', ogImageTitle: 'Оценка и экспертиза',
ogImageDescription: 'Независимая оценка и судебная экспертиза', ogImageDescription: 'Независимая оценка и судебная экспертиза',
}; };
export const metadata: Metadata = metaInfo(metainfo); export async function generateMetadata(): Promise<Metadata> {
const h = await headers();
const referer = h.get('referer') ?? '';
const host = h.get('host') ?? '';
const proto = h.get('x-forwarded-proto') ?? '';
const path = referer ? new URL(referer).pathname : '';
const metainfoExtended = Object.assign({}, metainfo, {
host: `${proto}://${host}`,
path: path,
});
return metaInfo(metainfoExtended);
}
export default function Page() { export default function Page() {
return <PrivacyPolicy />; return <PrivacyPolicy />;

View File

@@ -1,19 +1,33 @@
import { UserAgreement } from '@/views'; import { UserAgreement } from '@/views';
import type { Metadata } from 'next'; import type { Metadata } from 'next';
import { metaInfo } from '@shared/lib'; import { metaInfo } from '@shared/lib';
import { headers } from 'next/headers';
import { TMetainfo } from '@shared/types/metainfo';
const metainfo = { const metainfo: TMetainfo = {
title: 'Независимая оценка и судебная экспертиза', title: 'Независимая оценка и судебная экспертиза',
description: description:
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.', 'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.',
companyName: 'Компания ДИТРАСО', companyName: 'Компания ДИТРАСО',
phone: '+7 (900) 241-34-34', phone: '+7 (900) 241-34-34',
url: 'https://ocenka-sochi.ru',
ogImageTitle: 'Оценка и экспертиза', ogImageTitle: 'Оценка и экспертиза',
ogImageDescription: 'Независимая оценка и судебная экспертиза', ogImageDescription: 'Независимая оценка и судебная экспертиза',
}; };
export const metadata: Metadata = metaInfo(metainfo); export async function generateMetadata(): Promise<Metadata> {
const h = await headers();
const referer = h.get('referer') ?? '';
const host = h.get('host') ?? '';
const proto = h.get('x-forwarded-proto') ?? '';
const path = referer ? new URL(referer).pathname : '';
const metainfoExtended = Object.assign({}, metainfo, {
host: `${proto}://${host}`,
path: path,
});
return metaInfo(metainfoExtended);
}
export default function Page() { export default function Page() {
return <UserAgreement />; return <UserAgreement />;

View File

@@ -5,7 +5,8 @@ type TMetaInfo = {
description: string; description: string;
companyName: string; companyName: string;
phone: string; phone: string;
url: string; host: string;
path: string;
ogImageTitle: string; ogImageTitle: string;
ogImageDescription: string; ogImageDescription: string;
width?: number; width?: number;
@@ -20,7 +21,8 @@ function metaInfo({ ...props }: TMetaInfo): Metadata {
description, description,
companyName, companyName,
phone, phone,
url, host,
path = '',
ogImageTitle, ogImageTitle,
ogImageDescription, ogImageDescription,
width = 600, width = 600,
@@ -35,11 +37,10 @@ function metaInfo({ ...props }: TMetaInfo): Metadata {
openGraph: { openGraph: {
title: title, title: title,
description: description, description: description,
url: url, url: `${host}${path}`,
images: [ images: [
{ {
url: `${url}/api/og/?title=${ogImageTitle}&description=${ogImageDescription}`, url: `${host}/api/og/?title=${ogImageTitle}&description=${ogImageDescription}`,
secureUrl: `${url}/api/og/?title=${ogImageTitle}&description=${ogImageDescription}`,
width: width, width: width,
height: height, height: height,
alt: `${title} - ${companyName}`, alt: `${title} - ${companyName}`,
@@ -56,7 +57,7 @@ function metaInfo({ ...props }: TMetaInfo): Metadata {
creator: creator, creator: creator,
images: [ images: [
{ {
url: `${url}/api/og/?title=${ogImageTitle}&description=${ogImageDescription}`, url: `${host}/api/og/?title=${ogImageTitle}&description=${ogImageDescription}`,
width: width, width: width,
height: height, height: height,
alt: `${title} - ${companyName}`, alt: `${title} - ${companyName}`,

View File

@@ -0,0 +1,8 @@
export type TMetainfo = {
title: string;
description: string;
companyName: string;
phone: string;
ogImageTitle: string;
ogImageDescription: string;
};