Smart Search Ergebnisse: Hauptbild statt Introbild

  • Joomla Version
    4.4.6 bzw. 4.2.9
    PHP Version
    PHP 8.2.x
    Hoster
    Lokal

    Hallo!
    Standardmäßig kann man in den Smart Search / Finder Suchergebnisse die Bilder von Artikeln anzeigen lassen. So wird auf die Intro Bilder zugegriffen. Aber bei dem Projekt, an dem ich arbeite, werden in der Regel nur die Hauptbilder verwendet und die IntroBilder bleiben leer.

    Ich suche also eine Möglichkeit, statt auf die Introbilder auf die Hauptbilder zuzugreifen. In der Ergebnisdatei von com_finder (components/com_finder/tmpl/search/default_result.php) steht nicht viel:

    Die Zeile

    PHP
    <?php echo HTMLHelper::_('image'....?>

    liefert das Bild. Aber mit welchem Override könnte ich beeinflussen, _welches_ Bild angezeigt wird?

    Ich habe schon im englischen Forum nachgefragt, leider ohne irgend eine Antwort zu erhalten. Vielleicht kann mir hier jemand helfen? Wäre sehr toll!

    Danke im Voraus!
    Chris

  • Zur hilfreichsten Antwort springen
    • Hilfreichste Antwort

    Hey Chris,

    das Content Finder Plugin bestimmt, welches Bild indexiert und ausgespielt wird.

    Leider kannst du das nur über einen kleinen Hack ändern, es gibt keine Option, welches Bild ausgewählt werden sollte.

    Öffne: plugins/finder/content/src/Extension/Content.php

    Ändere:

    Code
    if ($images && !empty($images->image_intro)) {
        $item->imageUrl = $images->image_intro;
        $item->imageAlt = $images->image_intro_alt ?? '';
    }

    um in:

    Code
    if ($images && !empty($images->image_fulltext)) {
        $item->imageUrl = $images->image_fulltext;
        $item->imageAlt = $images->image_fulltext_alt ?? '';
    }

    Führe die Indexierung anschließend noch mal durch!

    Aber wie gesagt, diese Änderung wird beim nächsten Update wieder überschrieben. Besser wäre es, es optional im Plugin zu machen. Wenn du Lust und Zeit hast, könntest du das ja zum Joomla! Projekt besteuern?

  • Hi Viktor!

    Mir ist zwischenzeitlich klar geworden, dass die Sache nicht ganz so einfach ist; weil ja in den Suchergebnissen alle möglichen Bilder vorkommen können (Kategorien, Kontakte, ThirdParty, etc.)

    Bei diesem Projekt würde ich das Problem aber am liebsten im Template Override der Suchergebnisse machen, weil ich eine Logik brauche:

    Wenn Introbild, dann nimm Introbild, sonst nimm das Hauptbild, und wenn das auch nicht da ist, dann nimm das Customfield "Video" und wenn das auch nicht da ist, dann nimm gar nichts.

    Introbild <-> Customfield geht eben leicht im Override. Aber auf das mainimage lässt sich offenbar nicht direkt zugreifen. Ich nehme an, dass die Logik so speziell ist, dass ein Plugin keinen Sinn macht.

    Aber natürlich, wenn das Plugin wenigstes die erste Logik "entweder Intro- oder Mainimage" schafft und jeweils das "richtige" - also vorhandene - Bild in $image einfüllt, wäre das zumindest für mich auch eine Lösung.

    Aber ich stimme dir zu, dass Joomla das selber können sollte. Entweder über eine neue Option für die Suchergebnisse ("Welches Bild willst du denn?") - Was natürlich etwas kompliziert sein könnte, weil es ja nicht nur um Artikel geht, oder eben von Haus aus mit einer Logik.

    Danke auf jeden Fall für die Antwort!

    LG!
    Chris


    Der Hack geht - aber ein Override der Trefferausgabe wird wohl auch nötig sein.
    Die Full-Text Bilder sind ja normalerweise recht groß. Man muss sie dann auf Koten der performance klein zusammenquetschen oder die Liste der Treffer wird recht unübersichtlich. Aber jeder wie er mag, natürlich.

    Hallo Christiane,

    danke für den Check und deine Beteiligung am Thema! So schnell komme ich mit dem Ausprobieren nicht nach ;)
    Königsdisziplin ist natürlich, dass die Bilder auch in der Größe angepasst werden würden. Das ist jedoch ein nächster Schritt, zuvor reciht schon einfach, die Sachen responsive anzuzeigen. Und das ist ja kein Problem.

    LG!
    Chris


    Code
    // Add the image.
    if ($images && !empty($images->image_intro)) {
        $item->imageUrl = $images->image_intro;
        $item->imageAlt = $images->image_intro_alt ?? '';
    } elseif ($images && !empty($images->image_fulltext)) {
        $item->imageUrl = $images->image_fulltext;
        $item->imageAlt = $images->image_fulltext_alt ?? '';
    }

    .. funktioniert jedenfalls. Danke für den Hinweis!

    Einmal editiert, zuletzt von Indigo66 (29. Juli 2024 um 13:06) aus folgendem Grund: 2 Beiträge von cherchri mit diesem Beitrag zusammengefügt.