add LD data for articles

This commit is contained in:
Tobias Brunner 2025-07-11 09:51:28 +02:00
parent 08b8175574
commit c0c27cd056
No known key found for this signature in database
2 changed files with 75 additions and 0 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Before After
Before After

View file

@ -297,6 +297,81 @@ def json_ld_structured_data(context):
"seller": {"@type": "Organization", "name": "VSHN"},
}
elif view_name == "article_list":
data = {
"@context": "https://schema.org",
"@type": "CollectionPage",
"name": "Servala Articles",
"url": f"{base_url}/articles/",
"description": "Read our latest articles about cloud services, best practices, and industry insights.",
"isPartOf": {"@type": "WebSite", "name": "Servala", "url": base_url},
}
elif view_name == "article_detail" and "article" in context:
article = context["article"]
article_url = request.build_absolute_uri()
data = {
"@context": "https://schema.org",
"@type": "Article",
"headline": article.title,
"description": article.excerpt,
"url": article_url,
"author": {
"@type": "Person",
"name": article.author.get_full_name() or article.author.username,
},
"publisher": {
"@type": "Organization",
"name": "Servala",
"logo": {
"@type": "ImageObject",
"url": f"{base_url}/static/img/servala-logo.png",
},
},
}
# Add publication date using article_date field
if article.article_date:
data["datePublished"] = article.article_date.isoformat()
# Add modification date
if article.updated_at:
data["dateModified"] = article.updated_at.isoformat()
# Add image using the model's get_image property or get_og_image
if article.get_og_image:
data["image"] = request.build_absolute_uri(article.get_og_image.url)
elif article.get_image:
data["image"] = request.build_absolute_uri(article.get_image.url)
# Add keywords from meta_keywords field
if article.meta_keywords:
data["keywords"] = article.meta_keywords
# Add main entity of page
data["mainEntityOfPage"] = {
"@type": "WebPage",
"@id": article_url,
}
# Add about field based on related entities
if article.related_service:
data["about"] = {
"@type": "SoftwareApplication",
"name": article.related_service.name,
}
elif article.related_consulting_partner:
data["about"] = {
"@type": "Organization",
"name": article.related_consulting_partner.name,
}
elif article.related_cloud_provider:
data["about"] = {
"@type": "Organization",
"name": article.related_cloud_provider.name,
}
else:
# Default to organization data if no specific page type matches
data = organization_data