Preload Bilddatei in der Detailansicht

  • Hallo,


    Ich möchte einen Preload-Link ala

    Code
    <link rel="preload" as="image" href="image_name.png"> 

    für Preload von Bildern im Detailansicht implementieren.

    PHP
    <link rel="preload" as="image" href="<?php echo $this->image->img_src; ?>"> 

    Der Code liefert leider keine Ergebnisse, da das Objekt beim Rendern vom Header noch nicht initialisiert ist. Wie kriege ich das gefixt?


    Danke im Voraus!

  • Das Vorgehen, das du gewählt hast, wäre bei einem item objekt vom com_content aus dem Core richtig. Bei der JoomGallery haben wir uns für ein anderen Ansatz entschieden.

    Du kannst im Template-File der Detailansicht sehen, wie die referenz urls zu den Bildern erzeugt werden: https://github.com/JoomGallery…pl/image/default.php#L170


    Das entscheidende ist folgende Stelle

    Code
    use Joomgallery\Component\Joomgallery\Administrator\Helper\JoomHelper;
    ...
    JoomHelper::getImg($this->item, 'detail');

    Die Helper-Methode JoomHelper::getImg() erzugt den Link zum Bild entsprechend deinen Einstellungen in der JoomGallery und dem Bildtyp, wessen Link zu haben möchtest. Im Beispiel wird der Link zum Detail-Bild vom Bild-Objekt ($this->item) erzeugt.

    Ich hoffe, das hilft dir weiter...

    Wir sind auf der Suche nach Helfern für die JoomGallery 4 Entwicklung!

    Melde dich bei Interesse bei mir (Elfangor93).

    (Verfügbare Jobs: PHP-Entwicklung, Testen, Übersetzen, Dokumentation)

  • In der JoomGallery 3 gibt eine ähnliche Funktion im ambit-Objekt

    Code
    $this->_ambit->getImg('img_url', $image);

    Das ambit-Objekt sollte eigentlich in allen template files der JoomGallery 3 vorhanden sein.

    Das zweite Argument `$image` kann wahlweise das Image-Objekt oder eine Image-ID sein. Hier im Source-Code siehst du, was du im ersten argument von getImg() alles nehmen kannst, um URL oder Systempfad der drei vefügbaren Bilder zu erhalten:
    https://github.com/JoomGallery…ry/helpers/ambit.php#L273

    Du musst dich aber natürlich in einem Template-File der JoomGallery befinden, damit das funktioniert, dann sollte aber eigenlich auch `$this->image` bereits initialisiert sein.
    Ausserhalb der JoomGallery wird es bei der JoomGallery 3 schwierig...

    Wir sind auf der Suche nach Helfern für die JoomGallery 4 Entwicklung!

    Melde dich bei Interesse bei mir (Elfangor93).

    (Verfügbare Jobs: PHP-Entwicklung, Testen, Übersetzen, Dokumentation)

  • Danke sehr!


    Ich habe mehrere Ansätze ausprobiert, das funktioniert leider nicht. Ich habe ambit.php in Template index.php importiert - das lief auf Fehler. Danach habe ich eine separate Klasse für die Img-Funktion erstellt und Klasse in Header importiert - das lief auch auf Fehler. ((


    Welche Möglichkeit gibt es denn einen Preload-Link im Header zu generieren? Zumindest im Detailansicht macht es Sinn, da Google seit einiger Zeit solche Pages ohne Preload nicht besonders mag:


    "Wenn der Seite das LCP-Element dynamisch hinzugefügt wird, solltest du das Bild vorab laden, um den LCP zu verbessern. Weitere Informationen zum Vorabladen von LCP-Elementen."

  • Ich würde ein Template-Override von com_joomgallery/view/detail/tmpl/default.php in deinem Template anlegen und dann dort die Preload Zeile zum Header hinzufügen.

    Das würde folgendermassen funktionieren:

    Code
    $doc = JFactory::getDocument();
    $doc->addCustomTag('<link rel="preload" as="image" href="'.$this->image->img_src.'">');


    JoomGallery/components/com_joomgallery/views/detail/tmpl/default.php at master · JoomGalleryfriends/JoomGallery
    A native image gallery component for Joomla! Contribute to JoomGalleryfriends/JoomGallery development by creating an account on GitHub.
    github.com

    Wir sind auf der Suche nach Helfern für die JoomGallery 4 Entwicklung!

    Melde dich bei Interesse bei mir (Elfangor93).

    (Verfügbare Jobs: PHP-Entwicklung, Testen, Übersetzen, Dokumentation)

  • Elfangor93

    Hat den Titel des Themas von „Implementierung vom Tag <link rel="preload" as="image" href="image.png"> im Head“ zu „Preload Bilddatei in der Detailansicht“ geändert.
  • Danke schön! Das funktioniert!


    Ein Wunsch für die 4-te Version von JoomGallery, die sich gerade in Entwicklung befindet: Nehmt bitte diese Option mit Preloadlink auf. Heutzutage spielen die technischen Anforderungen seo-technisch eine wichtige Rolle:


    PageSpeed Insights


    Hier sind noch einige Ideen, die mir spontan einfallen:


    > Öffnen von Links zu allen Bildern inkl. Thumbs, Details und Originals den Suchmaschinen, damit Bilder indexiert werden.


    > Beibehalten der Linkstruktur inkl. Pages und Pfade zu den Bildern bei Migration von Version 3 auf 4. Nur dann wird sich ein Update für die alte Nutzer lohnen. Ansonsten geht die gesamte Arbeit verloren oder man muss dann sehr aufwändig entsprechende Weiterleitungen einbauen. Und ob diese dann von Google & Co. genauso wie alte Versionen gerankt werden, steht in Sternen.


    > Bereitstellung von Bildern in WebP und AVIF Formaten.


    > Aufnahme des title-Tags neben dem alt-Tag. Im Idealfall sollten die Texte pro Bild auch dann unterschiedlich sein.


    > Aufnahme einer Markierung z. B. nach Schema.org-Standard


    > Bereitstellung einer zusätzlichen vierten Bildversion für die Anzeige auf mobilen Geräten (z. B. Thumbs, Details, Originals und Mobile). um das Problem "Bilder richtig dimensionieren" zu lösen.

  • Hallo Elfangor,


    erstmal vielen Dank für die Informationen!


    Ich habe auf meiner Website Suche mit unikaler URL pro Anfrage implementiert. URL hat das Format /search.html?sstring=Suchbegriff


    Ich würde aber gerne URL im folgenden Format haben: /search/Suchbegriff/


    Kannst du bitte einen Hinweis geben, wie kriege ich das hin?

  • Dazu müsstest du den Router der JoomGallery umprogrammieren.

    Den router findest du unter /components/com_joomgallery/router.php.


    Wie das routing in Joomla 3 funktioniert und wie die Komponenten-Router da aufgebaut sind, findest du hier:
    https://docs.joomla.org/J3.x:S…EF_URLs_in_your_component


    Leider kann ich dir dazu nicht mehr behilflich sein, da ich mich mit dem alten "legacy" Router, der in der JoomGallery 3 noch eingesetzt ist nicht aus kenne. Da musst du wohl selber nachforschen.

    Wir sind auf der Suche nach Helfern für die JoomGallery 4 Entwicklung!

    Melde dich bei Interesse bei mir (Elfangor93).

    (Verfügbare Jobs: PHP-Entwicklung, Testen, Übersetzen, Dokumentation)

  • Nach vielen Stunden Arbeit, Versuche und Tests habe ich folgende Lösung kreiert. Diese entspricht sicherlich nicht den Best Practices in der Branche, funktioniert technisch gesehen ziemlich gut. Derzeit nutze ich diese auf einer Website mit über 7000 Bildern in der Galerie. Teile gerne den Ansatz hier für alle JoomGallery-Nutzer.


    P. S. Ach ja, weitere Tipps für die Verbesserung der Lösung sind willkommen!


    IST-Zustand: In der 3-en Version der JoomGallery werden die Suchergebnisse standardmäßig unter dem Pfad .../gallerieansicht/search.html ausgegeben.


    Die Nachteile dieser Lösung aus SEO-Sicht lasse ich hier aus.


    SOLL-Zustand: Für jeden Suchbegriff soll eine eigene URL mit unikalem Title-Tag, eigener H1-Überschrift und ggf. unikalen Metatags generiert werden.


    URL-Muster: /galerieansicht/search/suchbegriff/


    Lösung:


    1. Implementierung eines Suchfeldes (Alternativ kann man auch die JoomGallery-Standardfelder mit einigen Anpassungen nutzen).



    2. Überarbeitete Abfragelogik in components/com_joomgallery/models/search.php


    Die SQL-Abfrage wurde nur auf ein Feld "imgtitle" begrenzt, um die Performance zu verbessern. Dabei wurde auch eine Fulltext-Suche implementiert. Voraussetzung dafür: DB sollen die Fulltext-Suche unterstützen können.


    3. Anpassung des Routers




    4. Output in components/com_joomgallery/views/search/tmpl/default.php