diff --git a/src/EventListener/MeilisearchPageMarkerListener.php b/src/EventListener/MeilisearchPageMarkerListener.php index 82edffc..fcba6e8 100644 --- a/src/EventListener/MeilisearchPageMarkerListener.php +++ b/src/EventListener/MeilisearchPageMarkerListener.php @@ -4,6 +4,7 @@ namespace MummertMedia\ContaoMeilisearchBundle\EventListener; use Contao\PageModel; use Contao\StringUtil; +use Contao\Config; class MeilisearchPageMarkerListener { @@ -18,17 +19,28 @@ class MeilisearchPageMarkerListener $priority = (int) ($page->priority ?? 0); $keywords = trim((string) ($page->keywords ?? '')); - // 🔹 searchimage (UUID) + // 🔹 searchimage (Page → Fallback) $searchImageUuid = null; + + // 1. Page-spezifisch if (!empty($page->searchimage)) { - // falls binär → UUID-String $searchImageUuid = StringUtil::binToUuid($page->searchimage); } + // 2. Fallback aus tl_settings + if (!$searchImageUuid) { + $fallback = Config::get('meilisearch_fallback_image'); + if ($fallback) { + $searchImageUuid = StringUtil::binToUuid($fallback); + } + } + + // Wenn wirklich GAR nichts vorhanden ist → nichts tun if ($priority <= 0 && $keywords === '' && !$searchImageUuid) { return $buffer; } + // 🔹 Marker aufbauen $lines = []; $lines[] = 'MEILISEARCH'; diff --git a/src/Resources/contao/dca/tl_settings.php b/src/Resources/contao/dca/tl_settings.php index ba0d9c3..4bc2a2b 100644 --- a/src/Resources/contao/dca/tl_settings.php +++ b/src/Resources/contao/dca/tl_settings.php @@ -52,6 +52,16 @@ $GLOBALS['TL_DCA']['tl_settings']['fields']['meilisearch_imagesize'] = [ ], ]; +$GLOBALS['TL_DCA']['tl_settings']['fields']['meilisearch_fallback_image'] = [ + 'inputType' => 'fileTree', + 'eval' => [ + 'filesOnly' => true, + 'fieldType' => 'radio', + 'tl_class' => 'w50', + ], + 'sql' => "varbinary(16) NULL", +]; + /** * Palette */ @@ -61,4 +71,5 @@ PaletteManipulator::create() ->addField('meilisearch_index', 'meilisearch_legend') ->addField('meilisearch_api', 'meilisearch_legend') ->addField('meilisearch_imagesize', 'meilisearch_legend') + ->addField('meilisearch_fallback_image', 'meilisearch_legend') ->applyToPalette('default', 'tl_settings'); \ No newline at end of file diff --git a/src/Resources/contao/languages/de/tl_settings.php b/src/Resources/contao/languages/de/tl_settings.php index 9ff0f7d..6be9883 100644 --- a/src/Resources/contao/languages/de/tl_settings.php +++ b/src/Resources/contao/languages/de/tl_settings.php @@ -12,4 +12,9 @@ $GLOBALS['TL_LANG']['tl_settings']['meilisearch_api'][0] = 'API Key'; $GLOBALS['TL_LANG']['tl_settings']['meilisearch_api'][1] = 'API-Schlüssel für den Zugriff auf Meilisearch.'; $GLOBALS['TL_LANG']['tl_settings']['meilisearch_imagesize'][0] = 'Bildgröße für Vorschaubilder'; -$GLOBALS['TL_LANG']['tl_settings']['meilisearch_imagesize'][1] = 'Bildgröße aus den Contao-Bildgrößen (tl_image_size).'; \ No newline at end of file +$GLOBALS['TL_LANG']['tl_settings']['meilisearch_imagesize'][1] = 'Bildgröße aus den Contao-Bildgrößen (tl_image_size).'; + +$GLOBALS['TL_LANG']['tl_settings']['meilisearch_fallback_image'] = [ + 'Fallback-Bild für die Suche', + 'Dieses Bild wird verwendet, wenn für eine Seite, News oder ein Event kein Suchbild gesetzt ist.', +]; \ No newline at end of file