Skip to content

Commit d29c55c

Browse files
updates
1 parent bb3241a commit d29c55c

3 files changed

Lines changed: 293 additions & 1 deletion

File tree

.claude/settings.local.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@
3838
"Bash(curl -sL -o /dev/null -w \"%{http_code}\" http://localhost:3000/java-technologies-job-support/)",
3939
"Bash(curl -sL -o /dev/null -w \"%{http_code}\" http://localhost:3000/java-job-support/)",
4040
"PowerShell(Get-ChildItem -Path \"D:\\\\solutions\\\\business websites\\\\proxytechsupport-next\\\\proxytechsupport-nextjs\" -Force | Select-Object Name, @{Name='Type';Expression={if\\($_.PSIsContainer\\){'Directory'}else{'File'}}})",
41-
"Bash(Select-Object Name)"
41+
"Bash(Select-Object Name)",
42+
"Bash(xargs grep -l \"relatedLinks\\\\|Related Links\")"
4243
]
4344
}
4445
}

components/LandingPageTemplate.tsx

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,10 +160,62 @@ export default function LandingPageTemplate({ config }: Props) {
160160

161161
const locationHero = useLocationHeroMetricsAside(config);
162162

163+
const CANADA_SLUGS = new Set([
164+
'job-support-canada', 'proxy-interview-canada', 'get-interview-scheduled-canada',
165+
'devops-job-support-canada', 'cloud-job-support-canada', 'react-job-support-canada',
166+
'java-job-support-canada', 'python-job-support-canada', 'ai-ml-job-support-canada',
167+
'nodejs-job-support-canada',
168+
'it-job-support-toronto', 'it-job-support-vancouver', 'it-job-support-calgary', 'it-job-support-montreal',
169+
]);
170+
171+
const CITY_AREA: Record<string, string> = {
172+
'it-job-support-toronto': 'Toronto',
173+
'it-job-support-vancouver': 'Vancouver',
174+
'it-job-support-calgary': 'Calgary',
175+
'it-job-support-montreal': 'Montreal',
176+
};
177+
178+
const isCanadaPage = CANADA_SLUGS.has(config.slug);
179+
const primaryCity = CITY_AREA[config.slug];
180+
181+
const canadaServiceSchema = isCanadaPage ? {
182+
'@context': 'https://schema.org',
183+
'@type': 'Service',
184+
name: config.title,
185+
description: config.description,
186+
provider: {
187+
'@type': 'Organization',
188+
name: 'Proxy Tech Support',
189+
url: 'https://proxytechsupport.com',
190+
},
191+
areaServed: [
192+
{ '@type': 'Country', name: 'Canada', sameAs: 'https://en.wikipedia.org/wiki/Canada' },
193+
...(primaryCity
194+
? [{ '@type': 'City', name: primaryCity }]
195+
: [
196+
{ '@type': 'City', name: 'Toronto', containedInPlace: { '@type': 'AdministrativeArea', name: 'Ontario' } },
197+
{ '@type': 'City', name: 'Vancouver', containedInPlace: { '@type': 'AdministrativeArea', name: 'British Columbia' } },
198+
{ '@type': 'City', name: 'Calgary', containedInPlace: { '@type': 'AdministrativeArea', name: 'Alberta' } },
199+
{ '@type': 'City', name: 'Montreal', containedInPlace: { '@type': 'AdministrativeArea', name: 'Quebec' } },
200+
]),
201+
],
202+
serviceType: [
203+
'IT Job Support Canada',
204+
'Proxy Interview Assistance Canada',
205+
'Interview Support Canada',
206+
'DevOps Support Canada',
207+
'AI ML Support Canada',
208+
'Cloud Support Canada',
209+
],
210+
} : null;
211+
163212
return (
164213
<>
165214
<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(faqSchema) }} />
166215
<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(serviceSchema) }} />
216+
{canadaServiceSchema && (
217+
<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(canadaServiceSchema) }} />
218+
)}
167219

168220
<style>{`
169221
/* ── CTA buttons ───────────────────────────── */
@@ -691,6 +743,9 @@ export default function LandingPageTemplate({ config }: Props) {
691743
{config.relatedLinks.blogLink.label}
692744
</a>
693745
)}
746+
{config.relatedLinks.canadaLinks?.map((l) => (
747+
<a key={l.href} href={l.href} className="lp-related-link">{l.label}</a>
748+
))}
694749
</div>
695750
</div>
696751
</nav>

0 commit comments

Comments
 (0)