Ergebnis 1 bis 2 von 2

Thema: Glightbox 'Bild x von x' hinzufügen

  1. #1
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.980
    Contao-Projekt unterstützen

    Support Contao

    Standard Glightbox 'Bild x von x' hinzufügen

    Als feature fügt es Bild 3 von 37 in der linken oberen Ecke ein.
    ersetzt contao-glightbox/contao/templates/js_glightbox.html5 aus inspiredminds/contao-glightbox

    Installation:
    die Datei js_glightbox.html5 unter /templates/myLayout/ ablegen.

    Hinweis:
    im Seitenlayout muss ggf. das Template unter JavaScript-Templates neu angewählt und gespeichert werden.
    1. Haken weg und sichern
    2. Haken rein und sichern

    Zitat Sebastian via Slack:
    Templates haben keine UUID - Daher keine Referenz wenn der "Pfad" sich ändert.
    Anpassungen:
    eigene Anpassungen (CSS, Platzierung, Text, ...) werden direkt im Template vorgenommen

    PHP-Code:
    <?php
    // templates/mytheme/js_glightbox.html5

    use Contao\Template;

    $GLOBALS['TL_CSS']['glightbox'] = 'bundles/contaoglightbox/css/glightbox.min.css|static';
    echo 
    Template::generateScriptTag('bundles/contaoglightbox/js/glightbox.min.js'falsenull);

    ?>
    <script>
    (function(){
      'use strict';
      document.querySelectorAll('a[data-lightbox]').forEach((element) => {
        if (!!element.dataset.lightbox) {
          element.setAttribute('data-gallery', element.dataset.lightbox);
        } else {
          element.setAttribute('data-gallery', crypto.randomUUID());
        }
      });
      const lightbox = GLightbox({
        selector: 'a[data-lightbox]',
        slideEffect: 'fade'
      });

      // Nummerierung beim Öffnen der Lightbox hinzufügen
      lightbox.on('open', () => {
        addFixedSlideNumber();
      });

      // Nummerierung bei jedem Slide-Wechsel aktualisieren
      lightbox.on('slide_changed', ({ current }) => {
        updateSlideNumber(current.index + 1, lightbox.elements.length);
      });

      // Nummerierung beim Schließen der Lightbox entfernen
      lightbox.on('close', () => {
        removeSlideNumber();
      });

      function addFixedSlideNumber() {
        let slideNumberElement = document.querySelector('.gslide-number');
        if (!slideNumberElement) {
          const numberContainer = document.createElement('div');
          numberContainer.className = 'gslide-number';
          numberContainer.style.position = 'fixed';
          numberContainer.style.top = '30px';
          numberContainer.style.left = '30px';
          numberContainer.style.color = '#fff';
          numberContainer.style.fontSize = '14px';
          numberContainer.style.zIndex = '999999';
          document.body.appendChild(numberContainer);
        }
      }

      function updateSlideNumber(current, total) {
        const slideNumberElement = document.querySelector('.gslide-number');
        if (slideNumberElement) {
          slideNumberElement.textContent = `Bild ${current} von ${total}`;
        }
      }

      function removeSlideNumber() {
        const slideNumberElement = document.querySelector('.gslide-number');
        if (slideNumberElement) {
          slideNumberElement.remove();
        }
      }

    })();
    </script>
    Grüsse
    Bernhard


  2. #2
    Contao-Fan
    Registriert seit
    10.08.2011.
    Ort
    Berlin
    Beiträge
    872

    Standard

    @derRenner
    Tolle Lösung!
    Eine Sache fände ich noch interessant, und zwar dass bei Einzelbildern dann oben nicht! 1 von 1 steht.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •