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;
use Contao\CalendarEventsModel;
use Contao\Template;
class MeilisearchEventMarkerListener
{
public function onParseFrontendTemplate(string $buffer, string $template): string
public function onParseTemplate(Template $template): void
{
if ($template !== 'mod_eventreader') {
return $buffer;
// Exakter Template-Name kein Raten
if ($template->getName() !== 'mod_eventreader') {
return;
}
if (
!isset($GLOBALS['objEvent']) ||
!$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);
if ($event === null) {
return $buffer;
return;
}
$GLOBALS['MEILISEARCH_MARKERS']['event'] = [
'priority' => (int) ($event->priority ?? 0),
'keywords' => trim((string) ($event->keywords ?? '')),
];
return $buffer;
}
}
@@ -3,34 +3,34 @@
namespace MummertMedia\ContaoMeilisearchBundle\EventListener;
use Contao\NewsModel;
use Contao\Template;
class MeilisearchNewsMarkerListener
{
public function onParseFrontendTemplate(string $buffer, string $template): string
public function onParseTemplate(Template $template): void
{
if ($template !== 'mod_newsreader') {
return $buffer;
// Nur News-Reader
if ($template->getName() !== 'mod_newsreader') {
return;
}
if (
!isset($GLOBALS['objNews']) ||
!$GLOBALS['objNews'] instanceof NewsModel
!isset($GLOBALS['objArticle']) ||
!$GLOBALS['objArticle'] instanceof NewsModel
) {
return $buffer;
return;
}
// News vollständig nachladen (Custom-Felder!)
$news = NewsModel::findByPk($GLOBALS['objNews']->id);
// 🔥 News vollständig laden (inkl. Custom-Felder)
$news = NewsModel::findByPk($GLOBALS['objArticle']->id);
if ($news === null) {
return $buffer;
return;
}
$GLOBALS['MEILISEARCH_MARKERS']['news'] = [
'priority' => (int) ($news->priority ?? 0),
'keywords' => trim((string) ($news->keywords ?? '')),
];
return $buffer;
}
}
+4 -4
View File
@@ -15,14 +15,14 @@ $GLOBALS['TL_HOOKS']['indexPage'][] = [
'onIndexPage'
];
$GLOBALS['TL_HOOKS']['parseFrontendTemplate'][] = [
$GLOBALS['TL_HOOKS']['parseTemplate'][] = [
MeilisearchNewsMarkerListener::class,
'onParseFrontendTemplate',
'onParseTemplate',
];
$GLOBALS['TL_HOOKS']['parseFrontendTemplate'][] = [
$GLOBALS['TL_HOOKS']['parseTemplate'][] = [
MeilisearchEventMarkerListener::class,
'onParseFrontendTemplate',
'onParseTemplate',
];
$GLOBALS['MEILISEARCH_MARKERS'] = [];