From 01949362ce2279fa66eb8078fb0bdf61b1cbdb8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Mummert?= Date: Mon, 22 Dec 2025 21:43:43 +0100 Subject: [PATCH] Add Index Listener --- .../MeilisearchEventContextListener.php | 32 --------- .../MeilisearchPageMarkerListener.php | 70 ++++++------------- src/Resources/contao/config/config.php | 9 +-- 3 files changed, 22 insertions(+), 89 deletions(-) delete mode 100644 src/EventListener/MeilisearchEventContextListener.php diff --git a/src/EventListener/MeilisearchEventContextListener.php b/src/EventListener/MeilisearchEventContextListener.php deleted file mode 100644 index a8c715d..0000000 --- a/src/EventListener/MeilisearchEventContextListener.php +++ /dev/null @@ -1,32 +0,0 @@ -id; - - // Minimaler, stabiler Marker - $marker = "\n\n"; - - return $buffer . $marker; - } - - return $buffer; - } -} \ No newline at end of file diff --git a/src/EventListener/MeilisearchPageMarkerListener.php b/src/EventListener/MeilisearchPageMarkerListener.php index 1929a69..051db42 100644 --- a/src/EventListener/MeilisearchPageMarkerListener.php +++ b/src/EventListener/MeilisearchPageMarkerListener.php @@ -2,70 +2,42 @@ namespace MummertMedia\ContaoMeilisearchBundle\EventListener; -use Contao\CalendarEventsModel; -use Contao\Config; -use Contao\PageModel; -use Contao\StringUtil; - class MeilisearchPageMarkerListener { public function onOutputFrontendTemplate(string $buffer, string $template): string { - if (!isset($GLOBALS['objPage']) || !$GLOBALS['objPage'] instanceof PageModel) { - return $buffer; - } + $debug = []; - $lines = ['MEILISEARCH']; - $page = $GLOBALS['objPage']; + // 🔍 Event erkennen + if (preg_match('#"@type"\s*:\s*"Event"#', $buffer)) { + $debug[] = 'context=event'; - /* ================= PAGE ================= */ - - if ((int) $page->priority > 0) { - $lines[] = 'page.priority=' . (int) $page->priority; - } - - if (trim((string) $page->keywords) !== '') { - $lines[] = 'page.keywords=' . trim((string) $page->keywords); - } - - $searchImageUuid = null; - - if (!empty($page->searchimage)) { - $searchImageUuid = StringUtil::binToUuid($page->searchimage); - } elseif ($fallback = Config::get('meilisearch_fallback_image')) { - $searchImageUuid = StringUtil::binToUuid($fallback); - } - - if ($searchImageUuid) { - $lines[] = 'page.searchimage=' . $searchImageUuid; - } - - /* ================= EVENT ================= */ - - if (preg_match('//', $buffer, $m)) { - $eventId = (int) $m[1]; - $event = CalendarEventsModel::findByPk($eventId); - - if ($event !== null) { - if ((int) $event->priority > 0) { - $lines[] = 'event.priority=' . (int) $event->priority; - } - - if (trim((string) $event->keywords) !== '') { - $lines[] = 'event.keywords=' . trim((string) $event->keywords); - } + if (preg_match('#"#/schema/events/(\d+)"#', $buffer, $m)) { + $debug[] = 'event.id=' . $m[1]; + } else { + $debug[] = 'event.id=NOT_FOUND'; } } - /* ================= OUTPUT ================= */ + // 🔍 News erkennen (vorbereitet) + if (preg_match('#"@type"\s*:\s*"NewsArticle"#', $buffer)) { + $debug[] = 'context=news'; - if (count($lines) === 1) { + if (preg_match('#"#/schema/news/(\d+)"#', $buffer, $m)) { + $debug[] = 'news.id=' . $m[1]; + } else { + $debug[] = 'news.id=NOT_FOUND'; + } + } + + if (empty($debug)) { return $buffer; } $marker = "\n\n"; return str_replace('', $marker . '', $buffer); diff --git a/src/Resources/contao/config/config.php b/src/Resources/contao/config/config.php index 5a8d432..45619d3 100644 --- a/src/Resources/contao/config/config.php +++ b/src/Resources/contao/config/config.php @@ -2,7 +2,6 @@ use MummertMedia\ContaoMeilisearchBundle\EventListener\IndexPageListener; use MummertMedia\ContaoMeilisearchBundle\EventListener\MeilisearchPageMarkerListener; -use MummertMedia\ContaoMeilisearchBundle\EventListener\MeilisearchEventContextListener; $GLOBALS['TL_HOOKS']['outputFrontendTemplate'][] = [ @@ -15,11 +14,5 @@ $GLOBALS['TL_HOOKS']['indexPage'][] = [ 'onIndexPage' ]; -$GLOBALS['TL_HOOKS']['parseFrontendTemplate'][] = [ - MeilisearchEventContextListener::class, - 'onParseFrontendTemplate', -]; -if (!isset($GLOBALS['MEILISEARCH_MARKERS'])) { - $GLOBALS['MEILISEARCH_MARKERS'] = []; -} \ No newline at end of file +