This commit is contained in:
Jürgen Mummert
2025-12-27 15:10:04 +01:00
parent 4ecbc0ab1a
commit 7e5518888d
@@ -17,11 +17,7 @@ class MeilisearchPageMarkerListener
return $buffer;
}
$data = [];
$debug = [];
$debug[] = 'Listener gestartet';
$debug[] = 'Template: ' . $template;
$data = [];
/*
* =====================
@@ -33,11 +29,6 @@ class MeilisearchPageMarkerListener
if (isset($GLOBALS['objPage']) && $GLOBALS['objPage'] instanceof PageModel) {
$page = $GLOBALS['objPage'];
$debug[] = 'Page gefunden (ID: ' . $page->id . ')';
$debug[] = 'Page priority: ' . var_export($page->priority, true);
$debug[] = 'Page keywords: ' . var_export($page->keywords, true);
$debug[] = 'Page searchimage (raw): ' . var_export($page->searchimage, true);
$data['page'] = [];
if (!empty($page->priority)) {
@@ -48,14 +39,10 @@ class MeilisearchPageMarkerListener
$data['page']['keywords'] = trim((string) $page->keywords);
}
// tl_page.searchimage ist UUID-String
// tl_page.searchimage ist BINARY → UUID
if (!empty($page->searchimage)) {
$pageImageUuid = StringUtil::binToUuid($page->searchimage);
$debug[] = 'Page searchimage UUID gesetzt: ' . $pageImageUuid;
}
} else {
$debug[] = 'objPage nicht gesetzt oder falscher Typ';
}
/*
@@ -69,25 +56,16 @@ class MeilisearchPageMarkerListener
$jsonBlocks
);
$debug[] = 'Gefundene JSON-LD Blöcke: ' . count($jsonBlocks[1]);
foreach ($jsonBlocks[1] as $json) {
/*
* EVENT
*/
if (preg_match('#"@type"\s*:\s*"Event"#', $json)) {
$debug[] = 'JSON-LD Typ: Event';
if (preg_match('#\\\/schema\\\/events\\\/(\d+)#', $json, $m)) {
$eventId = (int) $m[1];
$debug[] = 'Event-ID aus JSON-LD: ' . $eventId;
$event = CalendarEventsModel::findByPk($eventId);
$event = CalendarEventsModel::findByPk((int) $m[1]);
if ($event !== null) {
$debug[] = 'Event geladen';
$data['event'] = [];
if (!empty($event->priority)) {
@@ -99,14 +77,8 @@ class MeilisearchPageMarkerListener
}
if ($event->addImage && !empty($event->singleSRC)) {
$uuid = StringUtil::binToUuid($event->singleSRC);
$data['event']['searchimage'] = $uuid;
$debug[] = 'Event searchimage UUID: ' . $uuid;
} else {
$debug[] = 'Event hat kein Bild';
$data['event']['searchimage'] = StringUtil::binToUuid($event->singleSRC);
}
} else {
$debug[] = 'Event nicht gefunden';
}
}
}
@@ -115,17 +87,10 @@ class MeilisearchPageMarkerListener
* NEWS
*/
if (preg_match('#"@type"\s*:\s*"NewsArticle"#', $json)) {
$debug[] = 'JSON-LD Typ: NewsArticle';
if (preg_match('#\\\/schema\\\/news\\\/(\d+)#', $json, $m)) {
$newsId = (int) $m[1];
$debug[] = 'News-ID aus JSON-LD: ' . $newsId;
$news = NewsModel::findByPk($newsId);
$news = NewsModel::findByPk((int) $m[1]);
if ($news !== null) {
$debug[] = 'News geladen';
$data['news'] = [];
if (!empty($news->priority)) {
@@ -137,14 +102,8 @@ class MeilisearchPageMarkerListener
}
if ($news->addImage && !empty($news->singleSRC)) {
$uuid = StringUtil::binToUuid($news->singleSRC);
$data['news']['searchimage'] = $uuid;
$debug[] = 'News searchimage UUID: ' . $uuid;
} else {
$debug[] = 'News hat kein Bild';
$data['news']['searchimage'] = StringUtil::binToUuid($news->singleSRC);
}
} else {
$debug[] = 'News nicht gefunden';
}
}
}
@@ -160,43 +119,29 @@ class MeilisearchPageMarkerListener
// 1. EVENT > NEWS
if (!empty($data['event']['searchimage'])) {
$finalSearchImageUuid = $data['event']['searchimage'];
$debug[] = 'Searchimage aus Event übernommen';
} elseif (!empty($data['news']['searchimage'])) {
$finalSearchImageUuid = $data['news']['searchimage'];
$debug[] = 'Searchimage aus News übernommen';
}
// 2. CUSTOM SEARCHIMAGE (Markup)
if (
$finalSearchImageUuid === null
&& preg_match('#data-searchimage-uuid="([a-f0-9\-]{36})"#i', $buffer, $m)
&& FilesModel::findByUuid($m[1]) !== null
) {
$debug[] = 'Custom searchimage UUID gefunden: ' . $m[1];
if (FilesModel::findByUuid($m[1]) !== null) {
$finalSearchImageUuid = $m[1];
$debug[] = 'Custom searchimage existiert in tl_files';
} else {
$debug[] = 'Custom searchimage existiert NICHT in tl_files';
}
} else {
$debug[] = 'Kein Custom searchimage im Markup';
$finalSearchImageUuid = $m[1];
}
// 3. PAGE SEARCHIMAGE
if ($finalSearchImageUuid === null && $pageImageUuid) {
$finalSearchImageUuid = $pageImageUuid;
$debug[] = 'Searchimage aus Page übernommen';
}
// 4. FALLBACK (tl_settings)
if ($finalSearchImageUuid === null) {
$fallback = Config::get('meilisearch_fallback_image');
$debug[] = 'Fallback raw: ' . var_export($fallback, true);
if ($fallback) {
$finalSearchImageUuid = StringUtil::binToUuid($fallback);
$debug[] = 'Fallback UUID: ' . $finalSearchImageUuid;
}
}
@@ -204,11 +149,8 @@ class MeilisearchPageMarkerListener
$data['page']['searchimage'] = $finalSearchImageUuid;
}
$debug[] = 'Finale searchimage UUID: ' . var_export($finalSearchImageUuid, true);
$debug[] = 'Finales Data-Array: ' . json_encode($data);
if ($data === []) {
$debug[] = 'Data leer trotzdem Marker ausgeben (Debug aktiv)';
return $buffer;
}
/*
@@ -219,9 +161,7 @@ class MeilisearchPageMarkerListener
$marker =
"\n<!--\n" .
"MEILISEARCH_JSON\n" .
json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . "\n\n" .
"DEBUG\n" .
implode("\n", $debug) .
json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) .
"\n-->\n";
return str_contains($buffer, '</body>')