okay
This commit is contained in:
parent
4dc7c29134
commit
1a6dc01291
|
|
@ -62,7 +62,7 @@ export default function HomePage() {
|
||||||
<SeoJsonLd data={[
|
<SeoJsonLd data={[
|
||||||
websiteSchema(),
|
websiteSchema(),
|
||||||
organizationSchema(),
|
organizationSchema(),
|
||||||
softwareApplicationSchema(),
|
softwareApplicationSchema(aggregateRating),
|
||||||
aggregateRatingSchema(aggregateRating),
|
aggregateRatingSchema(aggregateRating),
|
||||||
...reviewSchemas
|
...reviewSchemas
|
||||||
]} />
|
]} />
|
||||||
|
|
|
||||||
|
|
@ -79,8 +79,7 @@ export default function TestimonialsPage() {
|
||||||
{[...Array(5)].map((_, index) => (
|
{[...Array(5)].map((_, index) => (
|
||||||
<Star
|
<Star
|
||||||
key={index}
|
key={index}
|
||||||
className={`w-8 h-8 ${
|
className={`w-8 h-8 ${index < aggregateRating.ratingValue
|
||||||
index < aggregateRating.ratingValue
|
|
||||||
? 'fill-yellow-400 text-yellow-400'
|
? 'fill-yellow-400 text-yellow-400'
|
||||||
: 'fill-gray-200 text-gray-200'
|
: 'fill-gray-200 text-gray-200'
|
||||||
}`}
|
}`}
|
||||||
|
|
@ -136,6 +135,8 @@ export default function TestimonialsPage() {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,9 @@ export default function AdBanner({
|
||||||
'/terms',
|
'/terms',
|
||||||
'/cookie-policy',
|
'/cookie-policy',
|
||||||
'/impressum',
|
'/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)
|
// Check if current path matches strictly or starts with excluded path (for nested legal/blog pages if needed, though mostly exact matches here)
|
||||||
|
|
|
||||||
|
|
@ -42,12 +42,12 @@ export function organizationSchema() {
|
||||||
sameAs: [
|
sameAs: [
|
||||||
'https://twitter.com/qrmaster',
|
'https://twitter.com/qrmaster',
|
||||||
],
|
],
|
||||||
contactPoint: {
|
contactPoint: [{
|
||||||
'@type': 'ContactPoint',
|
'@type': 'ContactPoint',
|
||||||
contactType: 'Customer Support',
|
contactType: 'Customer Support',
|
||||||
email: 'support@qrmaster.net',
|
email: 'support@qrmaster.net',
|
||||||
availableLanguage: ['en', 'de'],
|
availableLanguage: ['en', 'de'],
|
||||||
},
|
}],
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -163,8 +163,8 @@ export function breadcrumbSchema(items: { name: string; url: string }[]) {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export function softwareApplicationSchema() {
|
export function softwareApplicationSchema(aggregateRating?: AggregateRating) {
|
||||||
return {
|
const schema: any = {
|
||||||
'@context': 'https://schema.org',
|
'@context': 'https://schema.org',
|
||||||
'@type': 'SoftwareApplication',
|
'@type': 'SoftwareApplication',
|
||||||
name: 'QR Master',
|
name: 'QR Master',
|
||||||
|
|
@ -179,6 +179,18 @@ export function softwareApplicationSchema() {
|
||||||
'@id': `${SITE_URL}/#organization`,
|
'@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[]) {
|
export function authorPageSchema(author: AuthorProfile, posts?: BlogPost[]) {
|
||||||
|
|
@ -253,7 +265,12 @@ export function reviewSchema(testimonial: Testimonial) {
|
||||||
'@type': 'SoftwareApplication',
|
'@type': 'SoftwareApplication',
|
||||||
name: 'QR Master',
|
name: 'QR Master',
|
||||||
applicationCategory: 'BusinessApplication',
|
applicationCategory: 'BusinessApplication',
|
||||||
operatingSystem: 'Web Browser'
|
operatingSystem: 'Web Browser',
|
||||||
|
offers: {
|
||||||
|
'@type': 'Offer',
|
||||||
|
price: '0',
|
||||||
|
priceCurrency: 'EUR'
|
||||||
|
}
|
||||||
},
|
},
|
||||||
reviewRating: {
|
reviewRating: {
|
||||||
'@type': 'Rating',
|
'@type': 'Rating',
|
||||||
|
|
@ -276,6 +293,11 @@ export function aggregateRatingSchema(aggregateRating: AggregateRating) {
|
||||||
'@context': 'https://schema.org',
|
'@context': 'https://schema.org',
|
||||||
'@type': 'Product',
|
'@type': 'Product',
|
||||||
name: 'QR Master',
|
name: 'QR Master',
|
||||||
|
offers: {
|
||||||
|
'@type': 'Offer',
|
||||||
|
price: '0',
|
||||||
|
priceCurrency: 'EUR'
|
||||||
|
},
|
||||||
aggregateRating: {
|
aggregateRating: {
|
||||||
'@type': 'AggregateRating',
|
'@type': 'AggregateRating',
|
||||||
ratingValue: aggregateRating.ratingValue,
|
ratingValue: aggregateRating.ratingValue,
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ export const testimonials: Testimonial[] = [
|
||||||
title: "Perfect for my pottery",
|
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!",
|
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: {
|
author: {
|
||||||
name: "Claudia Knuth",
|
name: "Claudia",
|
||||||
company: "Hotshpotsh",
|
company: "Hotshpotsh",
|
||||||
location: "Texas"
|
location: "Texas"
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue