Structured data within news
Strukturierte Daten in News
Strukturierte Daten werden im JSON-LD (Linked Data)-Format ausgegeben (Allegmeine Infos zu strukturierten Daten: https://developers.google.com/search/docs/advanced/structured-data/intro-structured-data?hl=de.
Strukturierte Daten für google können immer nur für ein Element/Seite ausgegeben werden, nicht für die Listenansicht.
Ich habe ein neues Partial angelegt und in dem Template Templates\News\Detail.html eingebunden:
<n:headerData>
<script type="application/ld+json">{
<f:render partial="List/StructuredData" arguments="{newsItem: newsItem,settings:settings}" />
}
</script>
</n:headerData>
Über den Viehlelper n:headerData können neue Daten zum Header hinzugefügt werden (siehe https://docs.typo3.org/p/georgringer/news/main/en-us/Reference/ViewHelpers/HeaderDataViewHelper.html ).
StructuredData.html:
"@context": "https://schema.org",
"@type": "Event",
"name": {newsItem.title->f:format.json()->f:format.htmlentitiesDecode()},
"description": <f:if condition="{newsItem.teaser}"><f:then>{newsItem.teaser -> f:format.crop(maxCharacters: '{settings.cropMaxCharacters}', respectWordBoundaries:'1') -> f:format.json()->f:format.htmlentitiesDecode()}</f:then>
<f:else>{newsItem.bodytext -> f:format.crop(maxCharacters: '{settings.cropMaxCharacters}', respectWordBoundaries:'1') -> f:format.json()->f:format.htmlentitiesDecode()}</f:else>
</f:if>,
"startDate": "<f:format.date format="Y-m-d">{newsItem.datetime}</f:format.date>",<f:if condition="{newsItem.eventEnd}">
"endDate": "<f:format.date format="Y-m-d">{newsItem.eventEnd}</f:format.date>",</f:if>
"location": {
"@type": "Place",
"name": ""
}
Ich habe hier das Event-Schema genommen: https://schema.org/Event
Die richtige Codierung habe ich nur mit f:format.json()->f:format.htmlentitiesDecode() hinbekommen. M. M. nach funktioniert format.json() nicht richtig.
Das ganze kann man dann mit dem Google-Developer-Tool testen: https://search.google.com/test/rich-results