feat: implement advanced Service, CreativeWork and Breadcrumb schema markup

This commit is contained in:
AyrisAI
2026-05-16 01:00:32 +03:00
parent ea09a4fb04
commit eff0946450
2 changed files with 114 additions and 2 deletions

View File

@@ -49,10 +49,69 @@ export default async function ServiceLocationPage({ params }: Props) {
const projects = await getProjectsByService(service.title); const projects = await getProjectsByService(service.title);
const breadcrumbLd = {
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Ana Sayfa",
"item": "https://mugladijitalmedya.com"
},
{
"@type": "ListItem",
"position": 2,
"name": "Hizmetlerimiz",
"item": "https://mugladijitalmedya.com/services"
},
{
"@type": "ListItem",
"position": 3,
"name": service.title,
"item": `https://mugladijitalmedya.com/services/${service.slug}`
},
{
"@type": "ListItem",
"position": 4,
"name": location.name,
"item": `https://mugladijitalmedya.com/services/${service.slug}/${location.slug}`
}
]
};
const serviceLd = {
"@context": "https://schema.org",
"@type": "Service",
"serviceType": service.title,
"provider": {
"@type": "Organization",
"name": "Muğla Dijital",
"url": "https://mugladijitalmedya.com"
},
"areaServed": {
"@type": "City",
"name": location.name
},
"description": `${location.name} bölgesinde profesyonel ${service.title.toLowerCase()} çözümleri.`,
"offers": {
"@type": "Offer",
"availability": "https://schema.org/InStock",
"areaServed": location.name
}
};
return ( return (
<main className="min-h-screen bg-[#f5f5f0] text-black pt-24"> <main className="min-h-screen bg-[#f5f5f0] text-black pt-24">
<Navbar /> <Navbar />
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(breadcrumbLd) }}
/>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(serviceLd) }}
/>
{/* Hero Section */} {/* Hero Section */}
<section className="pt-24 pb-16 px-6 md:px-12 border-b border-black/10"> <section className="pt-24 pb-16 px-6 md:px-12 border-b border-black/10">
<div className="max-w-7xl mx-auto"> <div className="max-w-7xl mx-auto">

View File

@@ -25,5 +25,58 @@ export default async function ProjectDetailPage({ params }: { params: Promise<{
const data = await getProjectBySlug(slug); const data = await getProjectBySlug(slug);
if (!data) notFound(); if (!data) notFound();
return <WorkDetailClient project={data.project} nextProject={data.nextProject} />; const breadcrumbLd = {
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Ana Sayfa",
"item": "https://mugladijitalmedya.com"
},
{
"@type": "ListItem",
"position": 2,
"name": "Çalışmalarımız",
"item": "https://mugladijitalmedya.com/works"
},
{
"@type": "ListItem",
"position": 3,
"name": data.project.title,
"item": `https://mugladijitalmedya.com/works/${data.project.slug}`
}
]
};
const creativeWorkLd = {
"@context": "https://schema.org",
"@type": "CreativeWork",
"name": data.project.title,
"description": data.project.subtitle,
"image": data.project.hero_image,
"author": {
"@type": "Organization",
"name": "Muğla Dijital"
},
"publisher": {
"@type": "Organization",
"name": "Muğla Dijital"
}
};
return (
<>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(breadcrumbLd) }}
/>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(creativeWorkLd) }}
/>
<WorkDetailClient project={data.project} nextProject={data.nextProject} />
</>
);
} }