diff --git a/src/EventListener/MeilisearchPageMarkerListener.php b/src/EventListener/MeilisearchPageMarkerListener.php
index 28d513b..d2514bb 100644
--- a/src/EventListener/MeilisearchPageMarkerListener.php
+++ b/src/EventListener/MeilisearchPageMarkerListener.php
@@ -18,6 +18,25 @@ class MeilisearchPageMarkerListener
$data = [];
+ /*
+ * =====================
+ * CONTENT-BILD (TOP PRIORITÄT)
+ * =====================
+ */
+ $contentImageUuid = null;
+
+ if (preg_match('#]*>(.*?)#si', $buffer, $m)) {
+ $mainHtml = $m[1];
+
+ if (preg_match(
+ '#
]+meilisearch-uuid=["\']([a-f0-9-]{36})["\']#i',
+ $mainHtml,
+ $mm
+ )) {
+ $contentImageUuid = $mm[1];
+ }
+ }
+
/*
* =====================
* PAGE (Basisdaten)
@@ -41,7 +60,6 @@ class MeilisearchPageMarkerListener
if (!empty($page->searchimage)) {
$raw = (string) $page->searchimage;
- // UUID-String oder BINARY(16)
if (preg_match('/^[a-f0-9-]{36}$/i', $raw)) {
$pageImageUuid = $raw;
} else {
@@ -54,7 +72,7 @@ class MeilisearchPageMarkerListener
/*
* =====================
- * JSON-LD AUSWERTEN (ohne Regex-Fallen)
+ * JSON-LD AUSWERTEN
* =====================
*/
preg_match_all(
@@ -98,7 +116,6 @@ class MeilisearchPageMarkerListener
$data['event']['searchimage'] = StringUtil::binToUuid($event->singleSRC);
}
- // ✅ STARTDATE (Unix Timestamp)
if (!empty($event->startDate)) {
$data['event']['startDate'] = (int) $event->startDate;
}
@@ -140,13 +157,20 @@ class MeilisearchPageMarkerListener
*/
$finalSearchImageUuid = null;
- if (!empty($data['event']['searchimage'])) {
+ // 🔥 TOP-PRIORITÄT: Content-Bild
+ if ($contentImageUuid !== null) {
+ $finalSearchImageUuid = $contentImageUuid;
+ }
+ elseif (!empty($data['event']['searchimage'])) {
$finalSearchImageUuid = $data['event']['searchimage'];
- } elseif (!empty($data['news']['searchimage'])) {
+ }
+ elseif (!empty($data['news']['searchimage'])) {
$finalSearchImageUuid = $data['news']['searchimage'];
- } elseif ($pageImageUuid) {
+ }
+ elseif ($pageImageUuid) {
$finalSearchImageUuid = $pageImageUuid;
- } else {
+ }
+ else {
$fallback = Config::get('meilisearch_fallback_image');
if ($fallback) {
$finalSearchImageUuid = $fallback;
@@ -164,38 +188,28 @@ class MeilisearchPageMarkerListener
/*
* =====================
- * META-SPAN (ALLES REIN!)
+ * META-SPAN
* =====================
*/
$metaParts = [];
- // PAGE
if (!empty($data['page']['priority'])) {
- $metaParts[] = 'page_priority=' . (int) $data['page']['priority'];
+ $metaParts[] = 'page_priority=' . $data['page']['priority'];
}
if (!empty($data['page']['keywords'])) {
- $metaParts[] = 'page_keywords=' . (string) $data['page']['keywords'];
+ $metaParts[] = 'page_keywords=' . $data['page']['keywords'];
}
if (!empty($data['page']['searchimage'])) {
- $metaParts[] = 'page_searchimage=' . (string) $data['page']['searchimage'];
+ $metaParts[] = 'page_searchimage=' . $data['page']['searchimage'];
+ }
+ if ($contentImageUuid) {
+ $metaParts[] = 'content_searchimage=' . $contentImageUuid;
}
- // EVENT
- if (!empty($data['event']['priority'])) {
- $metaParts[] = 'event_priority=' . (int) $data['event']['priority'];
- }
- if (!empty($data['event']['keywords'])) {
- $metaParts[] = 'event_keywords=' . (string) $data['event']['keywords'];
- }
- if (!empty($data['event']['searchimage'])) {
- $metaParts[] = 'event_searchimage=' . (string) $data['event']['searchimage'];
- }
if (!empty($data['event']['startDate'])) {
- $metaParts[] = 'event_startDate=' . (int) $data['event']['startDate'];
+ $metaParts[] = 'event_startDate=' . $data['event']['startDate'];
}
- $metaText = 'MEILISEARCH_META ' . implode(' | ', $metaParts);
-
$hiddenMeta =
"\n" .
"⟦MEILISEARCH_META⟧ " .
@@ -203,11 +217,6 @@ class MeilisearchPageMarkerListener
" ⟦/MEILISEARCH_META⟧" .
"\n";
- /*
- * =====================
- * JSON-MARKER
- * =====================
- */
$marker =
"\n