- Add "Explore our other services" block to service landing pages

with colour-tinted cards + Our Pricing entry (grey "All services" pill)
- Wrap homepage Instagram CTA in <aside aria-label="...">
- Always emit og:image:width/height with 1200x630 fallback when
  image metadata is unknown
- Add aria-current="page" to active desktop, mega-menu, and mobile
  nav links (exact-path match only — not "Services" parent)
- Richer testimonial alt text derived from dog name in the detail
  field (e.g. "Archie, a happy Goodwalk dog walking client...")
- Tier sitemap.xml priorities: home 1.0, services 0.9, pricing 0.8,
  about/contact 0.7, legal 0.3 (yearly changefreq)
- Bump to 4.1.0
This commit is contained in:
2026-05-05 08:12:36 +12:00
parent 04bca98ef8
commit 65bdc8dc20
10 changed files with 265 additions and 27 deletions
+3 -3
View File
@@ -179,11 +179,11 @@
<Header navigation={data.content.navigation} />
{#if data.slug === 'pack-walks'}
<ServiceLandingPage content={data.content} pageContent={packWalksContent} />
<ServiceLandingPage content={data.content} pageContent={packWalksContent} currentPath={data.page.canonicalPath} />
{:else if data.slug === 'dog-walking'}
<ServiceLandingPage content={data.content} pageContent={dogWalkingContent} />
<ServiceLandingPage content={data.content} pageContent={dogWalkingContent} currentPath={data.page.canonicalPath} />
{:else if data.slug === 'puppy-visits'}
<ServiceLandingPage content={data.content} pageContent={puppyVisitsContent} />
<ServiceLandingPage content={data.content} pageContent={puppyVisitsContent} currentPath={data.page.canonicalPath} />
{:else if data.slug === 'our-pricing'}
<PricingPage content={data.content} pageContent={ourPricingContent} />
{:else if data.slug === 'about' || data.slug === 'about-us'}
+20 -13
View File
@@ -1,16 +1,23 @@
import type { RequestHandler } from './$types';
const siteUrl = 'https://www.goodwalk.co.nz';
const routes = [
'/',
'/pack-walks',
'/dog-walking',
'/puppy-visits',
'/our-pricing',
'/about',
'/contact-us',
'/terms-and-conditions',
'/privacy-policy'
interface SitemapRoute {
path: string;
priority: string;
changefreq: string;
}
const routes: SitemapRoute[] = [
{ path: '/', priority: '1.0', changefreq: 'weekly' },
{ path: '/pack-walks', priority: '0.9', changefreq: 'monthly' },
{ path: '/dog-walking', priority: '0.9', changefreq: 'monthly' },
{ path: '/puppy-visits', priority: '0.9', changefreq: 'monthly' },
{ path: '/our-pricing', priority: '0.8', changefreq: 'monthly' },
{ path: '/about', priority: '0.7', changefreq: 'monthly' },
{ path: '/contact-us', priority: '0.7', changefreq: 'monthly' },
{ path: '/terms-and-conditions', priority: '0.3', changefreq: 'yearly' },
{ path: '/privacy-policy', priority: '0.3', changefreq: 'yearly' }
];
export const GET: RequestHandler = () => {
@@ -19,11 +26,11 @@ export const GET: RequestHandler = () => {
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
${routes
.map(
(path) => ` <url>
({ path, priority, changefreq }) => ` <url>
<loc>${siteUrl}${path}</loc>
<lastmod>${lastmod}</lastmod>
<changefreq>${path === '/' ? 'weekly' : 'monthly'}</changefreq>
<priority>${path === '/' ? '1.0' : '0.8'}</priority>
<changefreq>${changefreq}</changefreq>
<priority>${priority}</priority>
</url>`
)
.join('\n')}