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