From 1a6dc01291b315538c66eb8ff24cb18c6a13eb27 Mon Sep 17 00:00:00 2001 From: Timo Knuth Date: Tue, 27 Jan 2026 17:27:47 +0100 Subject: [PATCH] okay --- src/app/(main)/(marketing)/page.tsx | 2 +- .../(main)/(marketing)/testimonials/page.tsx | 11 ++++--- src/components/ads/AdBanner.tsx | 3 ++ src/lib/schema.ts | 32 ++++++++++++++++--- src/lib/testimonial-data.ts | 2 +- 5 files changed, 38 insertions(+), 12 deletions(-) diff --git a/src/app/(main)/(marketing)/page.tsx b/src/app/(main)/(marketing)/page.tsx index 1cc9a7c..eba41dd 100644 --- a/src/app/(main)/(marketing)/page.tsx +++ b/src/app/(main)/(marketing)/page.tsx @@ -62,7 +62,7 @@ export default function HomePage() { diff --git a/src/app/(main)/(marketing)/testimonials/page.tsx b/src/app/(main)/(marketing)/testimonials/page.tsx index 6ea6fa9..8a9ef61 100644 --- a/src/app/(main)/(marketing)/testimonials/page.tsx +++ b/src/app/(main)/(marketing)/testimonials/page.tsx @@ -79,11 +79,10 @@ export default function TestimonialsPage() { {[...Array(5)].map((_, index) => ( ))} @@ -136,6 +135,8 @@ export default function TestimonialsPage() { + + ); diff --git a/src/components/ads/AdBanner.tsx b/src/components/ads/AdBanner.tsx index 66e9421..dac9706 100644 --- a/src/components/ads/AdBanner.tsx +++ b/src/components/ads/AdBanner.tsx @@ -35,6 +35,9 @@ export default function AdBanner({ '/terms', '/cookie-policy', '/impressum', + '/press', + '/testimonials', + '/authors', ]; // Check if current path matches strictly or starts with excluded path (for nested legal/blog pages if needed, though mostly exact matches here) diff --git a/src/lib/schema.ts b/src/lib/schema.ts index 11a4782..d784846 100644 --- a/src/lib/schema.ts +++ b/src/lib/schema.ts @@ -42,12 +42,12 @@ export function organizationSchema() { sameAs: [ 'https://twitter.com/qrmaster', ], - contactPoint: { + contactPoint: [{ '@type': 'ContactPoint', contactType: 'Customer Support', email: 'support@qrmaster.net', availableLanguage: ['en', 'de'], - }, + }], }; } @@ -163,8 +163,8 @@ export function breadcrumbSchema(items: { name: string; url: string }[]) { }; } -export function softwareApplicationSchema() { - return { +export function softwareApplicationSchema(aggregateRating?: AggregateRating) { + const schema: any = { '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: 'QR Master', @@ -179,6 +179,18 @@ export function softwareApplicationSchema() { '@id': `${SITE_URL}/#organization`, } }; + + if (aggregateRating) { + schema.aggregateRating = { + '@type': 'AggregateRating', + ratingValue: aggregateRating.ratingValue, + reviewCount: aggregateRating.reviewCount, + bestRating: aggregateRating.bestRating, + worstRating: aggregateRating.worstRating + }; + } + + return schema; } export function authorPageSchema(author: AuthorProfile, posts?: BlogPost[]) { @@ -253,7 +265,12 @@ export function reviewSchema(testimonial: Testimonial) { '@type': 'SoftwareApplication', name: 'QR Master', applicationCategory: 'BusinessApplication', - operatingSystem: 'Web Browser' + operatingSystem: 'Web Browser', + offers: { + '@type': 'Offer', + price: '0', + priceCurrency: 'EUR' + } }, reviewRating: { '@type': 'Rating', @@ -276,6 +293,11 @@ export function aggregateRatingSchema(aggregateRating: AggregateRating) { '@context': 'https://schema.org', '@type': 'Product', name: 'QR Master', + offers: { + '@type': 'Offer', + price: '0', + priceCurrency: 'EUR' + }, aggregateRating: { '@type': 'AggregateRating', ratingValue: aggregateRating.ratingValue, diff --git a/src/lib/testimonial-data.ts b/src/lib/testimonial-data.ts index ad49338..037f5f0 100644 --- a/src/lib/testimonial-data.ts +++ b/src/lib/testimonial-data.ts @@ -30,7 +30,7 @@ export const testimonials: Testimonial[] = [ title: "Perfect for my pottery", content: "I use QR-Master for my pottery as a link to my homepage and as a digital business card. I place the codes directly on my pottery pieces so interested customers can instantly access my website. Reliable and practical – a great solution!", author: { - name: "Claudia Knuth", + name: "Claudia", company: "Hotshpotsh", location: "Texas" },