mirror of
https://github.com/Sea-Haven-Industries/seahaven-site.git
synced 2026-09-30 04:13:15 +00:00
feat(seo): BreadcrumbList on interior pages + richer LocalBusiness
Add a breadcrumb-ld partial (rendered from breadcrumbName/breadcrumbParent front-matter) emitting BreadcrumbList JSON-LD on all 11 interior pages (3-level on the job pages). Enrich homepage LocalBusiness with geo, areaServed (US), and hasMap. NOTE: geo coords are approximate (Ronkonkoma ZIP) — set precisely from the Google Business Profile; openingHours and sameAs omitted pending real hours + non-placeholder social URLs.
This commit is contained in:
parent
999249c0fe
commit
381f6b6dce
15 changed files with 44 additions and 0 deletions
|
|
@ -21,6 +21,9 @@ module.exports = function (eleventyConfig) {
|
|||
// Current year, for the footer (replaces the deprecated document.write pattern).
|
||||
eleventyConfig.addShortcode("year", () => `${new Date().getFullYear()}`);
|
||||
|
||||
// JSON-encode a value (for safely emitting strings into JSON-LD).
|
||||
eleventyConfig.addFilter("json", (v) => JSON.stringify(v));
|
||||
|
||||
return {
|
||||
dir: { input: ".", includes: "_includes", data: "_data", output: "_site" },
|
||||
templateFormats: ["njk"],
|
||||
|
|
|
|||
|
|
@ -50,6 +50,10 @@
|
|||
|
||||
{% include "footer.njk" %}
|
||||
|
||||
{%- if breadcrumbName %}
|
||||
{% include "breadcrumb-ld.njk" %}
|
||||
{%- endif %}
|
||||
|
||||
<script src="/assets/js/nav.js" defer></script>
|
||||
{%- if recaptcha %}
|
||||
<script src="/assets/js/form.js" defer></script>
|
||||
|
|
|
|||
13
_includes/breadcrumb-ld.njk
Normal file
13
_includes/breadcrumb-ld.njk
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "BreadcrumbList",
|
||||
"itemListElement": [
|
||||
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "{{ site.url }}/" }
|
||||
{%- if breadcrumbParent %},
|
||||
{ "@type": "ListItem", "position": 2, "name": {{ breadcrumbParent.name | json | safe }}, "item": "{{ site.url }}{{ breadcrumbParent.url }}" }
|
||||
{%- endif %},
|
||||
{ "@type": "ListItem", "position": {{ 3 if breadcrumbParent else 2 }}, "name": {{ breadcrumbName | json | safe }}, "item": "{{ site.url }}{{ page.url }}" }
|
||||
]
|
||||
}
|
||||
</script>
|
||||
|
|
@ -3,6 +3,7 @@ layout: base.njk
|
|||
title: "About — Sea Haven Industries"
|
||||
description: "Learn about Sea Haven Industries — your trusted partner in construction with 20 years of experience, expert technicians, and a commitment to excellence."
|
||||
pageCss: about
|
||||
breadcrumbName: "About"
|
||||
---
|
||||
<!-- ── Page Hero ── -->
|
||||
<section class="page-hero">
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@ title: "Dispatcher — Sea Haven Industries"
|
|||
description: "Apply for the Dispatcher position at Sea Haven Industries. View job details and submit your application today."
|
||||
pageCss: jobs
|
||||
recaptcha: true
|
||||
breadcrumbName: "Dispatcher"
|
||||
breadcrumbParent: { name: "Careers", url: "/careers/" }
|
||||
---
|
||||
<!-- ── Page Hero ── -->
|
||||
<section class="page-hero">
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ layout: base.njk
|
|||
title: "Careers — Sea Haven Industries"
|
||||
description: "Join the Sea Haven Industries team. Explore careers opportunities and grow with a company committed to staff development and excellence in construction."
|
||||
pageCss: careers
|
||||
breadcrumbName: "Careers"
|
||||
---
|
||||
<!-- ── Page Hero ── -->
|
||||
<section class="page-hero careers-hero">
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@ title: "Scheduling Coordinator — Sea Haven Industries"
|
|||
description: "Apply for the Scheduling Coordinator position at Sea Haven Industries. View job details and submit your application today."
|
||||
pageCss: jobs
|
||||
recaptcha: true
|
||||
breadcrumbName: "Scheduling Coordinator"
|
||||
breadcrumbParent: { name: "Careers", url: "/careers/" }
|
||||
---
|
||||
<!-- ── Page Hero ── -->
|
||||
<section class="page-hero">
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@ title: "Traveling Maintenance/Electrical Assistant — Sea Haven Industries"
|
|||
description: "Apply for the Traveling Maintenance/Electrical Assistant position at Sea Haven Industries. View job details and submit your application today."
|
||||
pageCss: jobs
|
||||
recaptcha: true
|
||||
breadcrumbName: "Traveling Maintenance / Electrical Assistant"
|
||||
breadcrumbParent: { name: "Careers", url: "/careers/" }
|
||||
---
|
||||
<!-- ── Page Hero ── -->
|
||||
<section class="page-hero">
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ title: "Contact — Sea Haven Industries"
|
|||
description: "Get in touch with Sea Haven Industries. Have a question or project idea? Contact us today to discuss your construction and facilities needs."
|
||||
pageCss: contact
|
||||
recaptcha: true
|
||||
breadcrumbName: "Contact Us"
|
||||
---
|
||||
<!-- ── Page Hero ── -->
|
||||
<section class="page-hero">
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ title: "End User License Agreement — Sea Haven Industries"
|
|||
description: "End User License Agreement for Sea Haven Industries QuickBooks application."
|
||||
pageCss: legal
|
||||
robots: "noindex, nofollow"
|
||||
breadcrumbName: "End User License Agreement"
|
||||
---
|
||||
<!-- ── Page Hero ── -->
|
||||
<section class="page-hero">
|
||||
|
|
|
|||
10
index.njk
10
index.njk
|
|
@ -307,6 +307,16 @@ permalink: /index.html
|
|||
"minValue": 120
|
||||
},
|
||||
"foundingDate": "2006",
|
||||
"geo": {
|
||||
"@type": "GeoCoordinates",
|
||||
"latitude": 40.8126,
|
||||
"longitude": -73.1124
|
||||
},
|
||||
"areaServed": {
|
||||
"@type": "Country",
|
||||
"name": "United States"
|
||||
},
|
||||
"hasMap": "https://www.google.com/maps/search/?api=1&query=710+Koehler+Ave+Ronkonkoma+NY+11779",
|
||||
"serviceType": ["Electrical Work", "Plumbing", "HVACR Services", "Handyman Services", "Garage Door Repair"]
|
||||
}
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ layout: base.njk
|
|||
title: "Privacy Policy — Sea Haven Industries"
|
||||
description: "Privacy Policy for Sea Haven Industries. Learn how we collect, use, and protect your personal information."
|
||||
pageCss: legal
|
||||
breadcrumbName: "Privacy Policy"
|
||||
---
|
||||
<!-- ── Page Hero ── -->
|
||||
<section class="page-hero">
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ title: "Services — Sea Haven Industries"
|
|||
description: "Sea Haven Industries offers reliable electrical, plumbing, HVAC, handyman, and garage door repair services for every need."
|
||||
pageCss: services
|
||||
recaptcha: true
|
||||
breadcrumbName: "Services"
|
||||
---
|
||||
<!-- ── Page Hero ── -->
|
||||
<section class="page-hero">
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ layout: base.njk
|
|||
title: "Social Accountability — Sea Haven Industries"
|
||||
description: "Learn about Sea Haven Industries' commitment to social accountability and responsible business practices in the construction industry."
|
||||
pageCss: social
|
||||
breadcrumbName: "Social Accountability"
|
||||
---
|
||||
<!-- ── Page Hero ── -->
|
||||
<section class="page-hero">
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ layout: base.njk
|
|||
title: "Terms of Service — Sea Haven Industries"
|
||||
description: "Terms of Service for Sea Haven Industries. Review the terms and conditions governing your use of the Sea Haven Industries website."
|
||||
pageCss: legal
|
||||
breadcrumbName: "Terms of Service"
|
||||
---
|
||||
<!-- ── Page Hero ── -->
|
||||
<section class="page-hero">
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue