From f14c1e34ffe3415c7e1b5998a9e3b02aae8ae347 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Mummert?= Date: Mon, 22 Dec 2025 21:04:36 +0100 Subject: [PATCH] Add Index Listener --- .../MeilisearchEventMarkerListener.php | 2 - .../MeilisearchPageMarkerListener.php | 76 +++++++++---------- 2 files changed, 34 insertions(+), 44 deletions(-) diff --git a/src/EventListener/MeilisearchEventMarkerListener.php b/src/EventListener/MeilisearchEventMarkerListener.php index 0873dc0..9fd6f6e 100644 --- a/src/EventListener/MeilisearchEventMarkerListener.php +++ b/src/EventListener/MeilisearchEventMarkerListener.php @@ -9,7 +9,6 @@ class MeilisearchEventMarkerListener { public function onParseTemplate(Template $template): void { - // Exakter Template-Name – kein Raten if ($template->getName() !== 'mod_eventreader') { return; } @@ -21,7 +20,6 @@ class MeilisearchEventMarkerListener return; } - // 🔥 Event vollständig laden (inkl. Custom-Felder) $event = CalendarEventsModel::findByPk($GLOBALS['objEvent']->id); if ($event === null) { diff --git a/src/EventListener/MeilisearchPageMarkerListener.php b/src/EventListener/MeilisearchPageMarkerListener.php index 1d8804b..7d3bd32 100644 --- a/src/EventListener/MeilisearchPageMarkerListener.php +++ b/src/EventListener/MeilisearchPageMarkerListener.php @@ -2,79 +2,71 @@ namespace MummertMedia\ContaoMeilisearchBundle\EventListener; +use Contao\Config; use Contao\PageModel; use Contao\StringUtil; -use Contao\Config; class MeilisearchPageMarkerListener { public function onOutputFrontendTemplate(string $buffer, string $template): string { - // Nur Frontend-Seiten if (!isset($GLOBALS['objPage']) || !$GLOBALS['objPage'] instanceof PageModel) { return $buffer; } - $markers = $GLOBALS['MEILISEARCH_MARKERS'] ?? []; - $page = $GLOBALS['objPage']; + $lines = ['MEILISEARCH']; - /* - * PAGE-DATEN (immer vorhanden) - */ - $priority = (int) ($page->priority ?? 0); - $keywords = trim((string) ($page->keywords ?? '')); + // ====================== + // PAGE + // ====================== + if ((int) $page->priority > 0) { + $lines[] = 'page.priority=' . (int) $page->priority; + } - // searchimage: Page → Fallback - $searchImageUuid = null; + if (!empty($page->keywords)) { + $lines[] = 'page.keywords=' . trim($page->keywords); + } if (!empty($page->searchimage)) { - $searchImageUuid = StringUtil::binToUuid($page->searchimage); + $lines[] = 'page.searchimage=' . StringUtil::binToUuid($page->searchimage); } - if (!$searchImageUuid) { - $fallback = Config::get('meilisearch_fallback_image'); - if ($fallback) { - $searchImageUuid = StringUtil::binToUuid($fallback); + // ====================== + // EVENT + // ====================== + if (!empty($GLOBALS['MEILISEARCH_MARKERS']['event'])) { + $event = $GLOBALS['MEILISEARCH_MARKERS']['event']; + + if (!empty($event['priority'])) { + $lines[] = 'event.priority=' . $event['priority']; + } + + if (!empty($event['keywords'])) { + $lines[] = 'event.keywords=' . $event['keywords']; } } - // Page-Marker sammeln - $markers['page'] = [ - 'priority' => $priority > 0 ? $priority : null, - 'keywords' => $keywords !== '' ? $keywords : null, - 'searchimage' => $searchImageUuid, - ]; + // ====================== + // NEWS (später) + // ====================== + if (!empty($GLOBALS['MEILISEARCH_MARKERS']['news'])) { + $news = $GLOBALS['MEILISEARCH_MARKERS']['news']; - /* - * MARKER AUFBAUEN - */ - $lines = []; - $lines[] = 'MEILISEARCH'; - - foreach ($markers as $scope => $data) { - if (!is_array($data)) { - continue; + if (!empty($news['priority'])) { + $lines[] = 'news.priority=' . $news['priority']; } - foreach ($data as $key => $value) { - if ($value === null || $value === '' || $value === 0) { - continue; - } - - $lines[] = $scope . '.' . $key . '=' . $value; + if (!empty($news['keywords'])) { + $lines[] = 'news.keywords=' . $news['keywords']; } } - // Wenn wirklich nichts da ist → nichts anhängen if (count($lines) === 1) { return $buffer; } - $marker = - "\n\n"; + $marker = "\n\n"; return str_replace('', $marker . '', $buffer); }