In der Regel werden strukturierte Daten in der Seitenansicht eines Objekts ausgegeben. Im folgenden Beispiel wird gezeigt, wie die strukturierten Daten für ein Event eingebunden werden.
Schritt 1: Container einfügen
Fügen Sie den Container „Objektdaten als HTML ausgeben“ in Ihre Seitenansicht ein.
Öffnen Sie anschließend den Container und fügen Sie dort ein passendes Schema.org-Markup ein. Im folgenden Beispiel wird der Typ Event verwendet.
Beispiel für ein klassisches Schema.org-Markup für ein Event
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Event",
"name": "Titel des Events",
"startDate": "2026-09-15T19:00:00+02:00",
"endDate": "2026-09-15T22:00:00+02:00",
"eventStatus": "https://schema.org/EventScheduled",
"eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
"location": {
"@type": "Place",
"name": "Veranstaltungsort",
"address": {
"@type": "PostalAddress",
"streetAddress": "Musterstraße 1",
"addressLocality": "Berlin",
"postalCode": "10115",
"addressCountry": "DE"
}
}
}
</script>
Schritt 2:
Attribut data-cdata ergänzen
Ergänzen Sie innerhalb des <script> -Tags das Attribut data-cdata="1" :
<script type="application/ld+json" data-cdata="1">
Schritt 3:
Platzhalter für die Objektdaten einsetzen
Ersetzen Sie anschließend die statischen Werte durch die entsprechenden Platzhalter für die Objektdaten.
Die verwendeten Platzhalter können je nach Objekttyp variieren.
Ein Beispiel für das oben verwendete Event sieht nach dem Ersetzen der Platzhalter folgendermaßen aus:
Beispiel nach ersetzen der Platzhalter, Platzhalter variieren je nach Objekt
<script type="application/ld+json" data-cdata="1">
{
"@context": "https://schema.org",
"@type": "Event",
"name": "[!--meta_title--]",
"startDate": "<wsl:date format="Y-m-d\TH:i:sP" time="[!--to--]"/>",
"endDate": "<wsl:date format="Y-m-d\TH:i:sP" time="[!--from--]"/>",
"eventStatus": "https://schema.org/EventScheduled",
"eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
"location": {
"@type": "Place",
"name": "[!--location--]",
"address": {
"@type": "PostalAddress",
"streetAddress": "[!--street--]",
"addressLocality": "[!--town--]",
"postalCode": "[!--zipcode--]",
"addressCountry": "[!--country--]"
}
}
}
</script>
Schritt 4:
Einstellungen im Weblic vornehmen
Aktivieren Sie im Weblic „Objektdaten als HTML einbinden“ die folgenden Optionen:
- Maskierung der Sonderzeichen
- WSL interpretieren
Schritt 5:
Änderungen speichern
Nachdem Sie alle Inhalte eingefügt und die Einstellungen vorgenommen haben, schließen Sie den Container bzw. speichern Sie die Änderungen.
Die strukturierten Daten werden anschließend in der Seitenansicht des jeweiligen Objekts ausgegeben.
Eine mögliche Umsetzung wird nachfolgend grob skizziert. Allgemeine
Informationen hierzu finden Sie in den weiterführenden Links am Artikelende.
Schritt 1: Funktion global in der wMyProject.php definieren
Beispiel: Auszug aus der wMyProject.php - JSON-LD-Markup generiert von Google Strukturierte Daten: Markup-Hilfe
...
class wMyProject {
....
public static function getJsonLdMarkup() {
return '<script type="application/ld+json">
{
"@context" : "https://schema.org",
"@type" : "JobPosting",
"title" : "'.wDocumentData::getDataAsHTML($_SERVER['PHP_SELF'], 'title').'",
"description" : "'.wDocumentData::getDataAsHTML($_SERVER['PHP_SELF'],'description').'",
// ...
// ...
"hiringOrganization" : {
"@type" : "Organization",
"name" : "Mustermann AG",
"sameAs" : "https://www.IhreDomain.tld",
"logo" : "https://www.IhreDomain.tld/images/logo.png"
},
"jobLocation" : {
"@type" : "Place",
"address" : "'.wDocumentData::getDataAsHTML($_SERVER['PHP_SELF'], 'address').'"
}
}
</script>';
}
...
Schritt 2: Ausgabe der strukturierten Daten im Head
Um die strukturierten Daten im HTML-Head der Seite auszugeben, rufen Sie die o.g. wMyPoject-Funktion über wsl:php innerhalb des head-Bereiches (htmlHead.wGlobal.php) auf.
Beispiel: wMyProject-Funktion im htmlHead.wGlobal.php Template aufrufen (Auszug)
...
<!-- Bedingung prüft ob es sich bei der aktuellen Seite um ein Job-Objekt handelt -->
<xsl:if test="/wd:document/wd:extension/wd:object/@type = 'jobOffer'">
<!-- wsl:php wird in PHP umgewandelt -->
<wsl:php>
//Gibt JSON Markup aus.
print wMyProject::getJsonLdMarkup();
</wsl:php>
</xsl:if>
...Für Weblics die strukturierte Daten ausgeben (z.B. das lokale Video-Element) haben Sie die Möglichkeit eigene JSON-LD Deklarationen anzugeben.
Schritt 1: Aktivieren via SCSS
Sie können den Callback über die Einstellung: -w-option-addJsonLdCallback aktivieren.
Beispiel: Auszug aus der elementVideo.scss
..
/*@wCssFragment{class:elementVideo;caption:Allgemein;selectable:no}*/
.elementVideo {
@extend .elementContent;
....
-w-option-addJsonLdCallback:'wMyProject::callbackJSONLD'; /*Über Callback als JSON-LD auszeichnen*/
....
}
..Schritt 2: Funktion callbackJSONLD in der wMyProject.php definieren
Beispiel: wMyProject::callbackJSONLD
//*********************************************************************************/
/**
* @method String callbackJSONLD($type, $data, $options = array())
*
* @description Callback Funktion, um für ein Item oder ein Objekt die Sturkturierten Daten anzupassen bzw. auszugeben
*
* @param $jsonLd vollständiger Javscript Json-Ld String
*
* @return String
*
*/
//*********************************************************************************/
public static function callbackJSONLD($type, $data, $options = array()){
$jsonLd = '';
switch ($type) {
case "video.intern" :
$src = $data['src'];
$srcPoster = $data['srcPoster'] ?? '';
$srcPosterL = $data['srcPosterL'] ?? '';
$srcPosterFull = $data['srcPosterFull'] ?? '';
$creationTime = (wDocumentData::getData($src, 'creationTime') != '' ? date('Y-m-d', wDocumentData::getData($src, 'creationTime')) : '');
$thumbnailUrl = wEnv::getUrlHost().wDocumentData::getData($src, 'thumbnail');
$jsonLd = '<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "VideoObject",
"name": "'.str_replace('"', '', wDocumentData::getData($src, 'title')).'",
"description": "'.str_replace('"', '', wDocumentData::getData($src, 'description')).'",'
.($thumbnailUrl != '' ? '"thumbnailUrl":"'.$thumbnailUrl.'",' : '')
.($srcPoster != '' ? '"image": ["'.wEnv::getUrlHost().$srcPoster.'"'.($srcPosterL != '' ? ',"'.wEnv::getUrlHost().$srcPosterL.'"' : '').($srcPosterFull != '' ? ',"'.wEnv::getUrlHost().$srcPosterFull.'"' : '').'],' : '').'
"dateCreated": "'.$creationTime.'",
"uploadDate": "'.$creationTime.'",
"dateModified": "'.(wDocumentData::getData($srcAttr, 'modificationTime') != '' ? date('Y-m-d', wDocumentData::getData($src, 'modificationTime')) : '').'",
"contentUrl": "'.wEnv::getUrlHost().$srcAttr.'"
}
</script>';
break;
}
return $jsonLd;
}