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"
},