';
@@ -322,52 +361,37 @@
echo '
';
echo '
';
+$schemaTypeGroups = [
+ 'Artikel & Content' => ['Article', 'BlogPosting', 'NewsArticle'],
+ 'Personen & Unternehmen' => ['Organization', 'Person'],
+ 'Geschäfte & Services' => ['LocalBusiness', 'Service'],
+ 'Produkte & Angebote' => ['Product'],
+ 'Events & Kurse' => ['Course', 'Event'],
+ 'Sonstige' => ['Animal'],
+];
+if ($isLegacySchemaType) {
+ $schemaTypeGroups['Nicht empfohlen'] = [$config['schema_type']];
+}
+
echo '
';
echo '
';
echo '
Feld-Mappings ';
-echo '
Verknüpfen Sie Schema.org Properties mit Feldern aus der YForm-Tabelle "' . rex_escape($yformTableName) . '" oder verwenden Sie statische Werte.
';
+echo '
Verknüpfen Sie Schema.org Properties mit Feldern aus der YForm-Tabelle "' . rex_escape($yformTableName) . '" oder verwenden Sie statische Werte. Properties wie Angebot, Adresse oder Öffnungszeiten können mit „Strukturiert“ aus mehreren Feldern zu einem gültigen Teilobjekt zusammengesetzt werden.
';
echo '
';
echo '
';
@@ -402,231 +426,508 @@
$fragment->setVar('body', $content, false);
echo $fragment->parse('core/page/section.php');
-$schemaPropertiesJson = json_encode($schemaProperties, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
-$tableFieldsJson = json_encode(array_column($tableFields, 'Field'), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
-$sampleDataJson = json_encode($sampleData, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
-$profileNamespaceJson = json_encode((string) ($profile['namespace'] ?? ''), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
-$savedMappingsJson = json_encode($config['field_mappings'], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
+$jsonFlags = JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT;
+$schemaPropertiesJson = json_encode($schemaProperties, $jsonFlags);
+$nestedDefinitionsJson = json_encode($nestedDefinitions, $jsonFlags);
+$tableFieldsJson = json_encode(array_column($tableFields, 'Field'), $jsonFlags);
+$sampleDataJson = json_encode($sampleData, $jsonFlags);
+$profileNamespaceJson = json_encode((string) ($profile['namespace'] ?? ''), $jsonFlags);
+$savedMappingsJson = json_encode($config['field_mappings'], $jsonFlags);
if (!is_string($schemaPropertiesJson)) {
$schemaPropertiesJson = '{}';
}
+if (!is_string($nestedDefinitionsJson)) {
+ $nestedDefinitionsJson = '{}';
+}
if (!is_string($tableFieldsJson)) {
$tableFieldsJson = '[]';
}
-if (!is_string($sampleDataJson)) {
+if (!is_string($sampleDataJson) || $sampleDataJson === '[]') {
$sampleDataJson = '{}';
}
if (!is_string($profileNamespaceJson)) {
$profileNamespaceJson = '""';
}
-if (!is_string($savedMappingsJson)) {
+if (!is_string($savedMappingsJson) || $savedMappingsJson === '[]') {
$savedMappingsJson = '{}';
}
?>
+