only show offer when available

This commit is contained in:
Tobias Brunner 2025-07-11 09:35:57 +02:00
parent a6d9ee11b0
commit 48affa7000
No known key found for this signature in database

View file

@ -109,26 +109,34 @@ def json_ld_structured_data(context):
service = context["service"]
service_url = request.build_absolute_uri()
data = {
"@context": "https://schema.org",
"@type": "Product",
"name": service.name,
"description": service.description,
"url": service_url,
"category": "Cloud Service",
}
# Check if service has offerings with pricing
has_offerings = hasattr(service, "offerings") and service.offerings.exists()
# Add image if available
if hasattr(service, "get_logo") and service.get_logo:
data["image"] = request.build_absolute_uri(service.get_logo.url)
if has_offerings:
# Use Product type when we have offerings (which provide the required offers data)
data = {
"@context": "https://schema.org",
"@type": "Product",
"name": service.name,
"description": service.description,
"url": service_url,
"category": "Cloud Service",
}
# Add offerings if available
if hasattr(service, "offerings") and service.offerings.exists():
# Add image if available
if hasattr(service, "get_logo") and service.get_logo:
data["image"] = request.build_absolute_uri(service.get_logo.url)
# Add offerings
data["offers"] = {
"@type": "AggregateOffer",
"availability": "https://schema.org/InStock",
"offerCount": service.offerings.count(),
}
else:
# Use Organization data when no offerings are available
# This avoids Google Search Console errors for Product without required fields
data = organization_data
elif view_name == "provider_detail" and "provider" in context:
provider = context["provider"]