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;
}