Add Index Listener

This commit is contained in:
Jürgen Mummert
2025-12-22 21:01:20 +01:00
parent e1ba9645b9
commit ef9d2e0bac
3 changed files with 23 additions and 23 deletions
@@ -3,34 +3,34 @@
namespace MummertMedia\ContaoMeilisearchBundle\EventListener; namespace MummertMedia\ContaoMeilisearchBundle\EventListener;
use Contao\CalendarEventsModel; use Contao\CalendarEventsModel;
use Contao\Template;
class MeilisearchEventMarkerListener class MeilisearchEventMarkerListener
{ {
public function onParseFrontendTemplate(string $buffer, string $template): string public function onParseTemplate(Template $template): void
{ {
if ($template !== 'mod_eventreader') { // Exakter Template-Name kein Raten
return $buffer; if ($template->getName() !== 'mod_eventreader') {
return;
} }
if ( if (
!isset($GLOBALS['objEvent']) || !isset($GLOBALS['objEvent']) ||
!$GLOBALS['objEvent'] instanceof CalendarEventsModel !$GLOBALS['objEvent'] instanceof CalendarEventsModel
) { ) {
return $buffer; return;
} }
// 🔥 Event vollständig aus DB laden // 🔥 Event vollständig laden (inkl. Custom-Felder)
$event = CalendarEventsModel::findByPk($GLOBALS['objEvent']->id); $event = CalendarEventsModel::findByPk($GLOBALS['objEvent']->id);
if ($event === null) { if ($event === null) {
return $buffer; return;
} }
$GLOBALS['MEILISEARCH_MARKERS']['event'] = [ $GLOBALS['MEILISEARCH_MARKERS']['event'] = [
'priority' => (int) ($event->priority ?? 0), 'priority' => (int) ($event->priority ?? 0),
'keywords' => trim((string) ($event->keywords ?? '')), 'keywords' => trim((string) ($event->keywords ?? '')),
]; ];
return $buffer;
} }
} }
@@ -3,34 +3,34 @@
namespace MummertMedia\ContaoMeilisearchBundle\EventListener; namespace MummertMedia\ContaoMeilisearchBundle\EventListener;
use Contao\NewsModel; use Contao\NewsModel;
use Contao\Template;
class MeilisearchNewsMarkerListener class MeilisearchNewsMarkerListener
{ {
public function onParseFrontendTemplate(string $buffer, string $template): string public function onParseTemplate(Template $template): void
{ {
if ($template !== 'mod_newsreader') { // Nur News-Reader
return $buffer; if ($template->getName() !== 'mod_newsreader') {
return;
} }
if ( if (
!isset($GLOBALS['objNews']) || !isset($GLOBALS['objArticle']) ||
!$GLOBALS['objNews'] instanceof NewsModel !$GLOBALS['objArticle'] instanceof NewsModel
) { ) {
return $buffer; return;
} }
// News vollständig nachladen (Custom-Felder!) // 🔥 News vollständig laden (inkl. Custom-Felder)
$news = NewsModel::findByPk($GLOBALS['objNews']->id); $news = NewsModel::findByPk($GLOBALS['objArticle']->id);
if ($news === null) { if ($news === null) {
return $buffer; return;
} }
$GLOBALS['MEILISEARCH_MARKERS']['news'] = [ $GLOBALS['MEILISEARCH_MARKERS']['news'] = [
'priority' => (int) ($news->priority ?? 0), 'priority' => (int) ($news->priority ?? 0),
'keywords' => trim((string) ($news->keywords ?? '')), 'keywords' => trim((string) ($news->keywords ?? '')),
]; ];
return $buffer;
} }
} }
+4 -4
View File
@@ -15,14 +15,14 @@ $GLOBALS['TL_HOOKS']['indexPage'][] = [
'onIndexPage' 'onIndexPage'
]; ];
$GLOBALS['TL_HOOKS']['parseFrontendTemplate'][] = [ $GLOBALS['TL_HOOKS']['parseTemplate'][] = [
MeilisearchNewsMarkerListener::class, MeilisearchNewsMarkerListener::class,
'onParseFrontendTemplate', 'onParseTemplate',
]; ];
$GLOBALS['TL_HOOKS']['parseFrontendTemplate'][] = [ $GLOBALS['TL_HOOKS']['parseTemplate'][] = [
MeilisearchEventMarkerListener::class, MeilisearchEventMarkerListener::class,
'onParseFrontendTemplate', 'onParseTemplate',
]; ];
$GLOBALS['MEILISEARCH_MARKERS'] = []; $GLOBALS['MEILISEARCH_MARKERS'] = [];