From 22c73baa5c6bfa4a2b398cec126a67191c443c65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Mummert?= Date: Tue, 23 Dec 2025 12:31:23 +0100 Subject: [PATCH] Bugfix --- src/EventListener/IndexPageListener.php | 12 ++++- src/Service/MeilisearchImageHelper.php | 60 +++++++++++++++++++++++++ 2 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 src/Service/MeilisearchImageHelper.php diff --git a/src/EventListener/IndexPageListener.php b/src/EventListener/IndexPageListener.php index 94b9b45..a6c1d40 100644 --- a/src/EventListener/IndexPageListener.php +++ b/src/EventListener/IndexPageListener.php @@ -2,8 +2,14 @@ namespace MummertMedia\ContaoMeilisearchBundle\EventListener; +use MummertMedia\ContaoMeilisearchBundle\Service\MeilisearchImageHelper; + class IndexPageListener { + public function __construct( + private readonly MeilisearchImageHelper $imageHelper, + ) {} + public function onIndexPage(string $content, array &$data, array &$set): void { // Marker vorhanden? @@ -72,7 +78,11 @@ class IndexPageListener $parsed['custom']['searchimage'] ?? null; if (is_string($image) && $image !== '') { - $set['imagepath'] = trim($image); + $path = $this->imageHelper->getImagePathFromUuid($image); + + if ($path !== null) { + $set['imagepath'] = $path; + } } /* diff --git a/src/Service/MeilisearchImageHelper.php b/src/Service/MeilisearchImageHelper.php new file mode 100644 index 0000000..4ebfff5 --- /dev/null +++ b/src/Service/MeilisearchImageHelper.php @@ -0,0 +1,60 @@ +filesystem->read($uuid); + + if ($file === null || !$file->isFile()) { + return null; + } + + $path = $file->getPath(); + + // ------------------------- + // SVG → niemals skalieren + // ------------------------- + if (str_ends_with(strtolower($path), '.svg')) { + return '/' . ltrim($path, '/'); + } + + // ------------------------- + // Rasterbild → Image Studio + // ------------------------- + $sizeId = Config::get('meilisearch_imagesize'); + + if (!$sizeId) { + return '/' . ltrim($path, '/'); + } + + $figure = $this->studio + ->createFigureBuilder() + ->fromFile($file) + ->setSize($sizeId) + ->build(); + + $image = $figure->getImage(); + + return $image?->getUrl(); + + } catch (\Throwable) { + return null; + } + } +} \ No newline at end of file