Ergebnis 1 bis 7 von 7

Thema: Gallery Template für Swiper Slider anpassen und DIV content-gallery entnehmen

  1. #1
    Contao-Nutzer Avatar von mschindler
    Registriert seit
    25.08.2011.
    Ort
    Bad Feilnbach
    Beiträge
    208
    Partner-ID
    7698

    Standard Gallery Template für Swiper Slider anpassen und DIV content-gallery entnehmen

    Hallo zusammen,

    ich würde gerne die native Gallery in Verbindung mit dem SwiperSlider verwenden und habe dazu schon die Twig Templates für die Gallery vorbereitet, um das DIV swiper-slide um das IMG zu legen.
    Leider habe ich noch nicht rausgefunden, wo ich das DIV content-gallery entnehmen kann, das die Gallery umschließt.

    Vom content_element/gallery.html.twig habe ich eine Kopie gallery_default_slider.html.twig angelegt in dem die IMGs in der Schleife das DIV swiper-slide bekommen.

    Ist das DIV content-gallery in Twig Template gallery oder gallery_list zu entnehmen und wie kann es entnommen werden ?

    Viele Grüße
    Markus
    Contao Partner aus Rosenheim und München
    codesache.de
    ---
    Mitglied der Contao Community Bayern
    Aktuelle Termine zur Contao Community Bayern: contao-bayern.de

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    37.159
    Partner-ID
    10107

    Standard

    Du darfst nicht von _base bzw. von gallery vererben lassen und dann nur den content Block überschreiben. Weil so hast du ja dann den Wrapper geerbt.

    Btw. anstatt nochmal ein <div class="swiper-slide"> anzulegen könntest du stattdessen auch dem <figure> die Klasse hinzufügen.
    » sponsor me via GitHub or Revolut

  3. #3
    Contao-Nutzer Avatar von mschindler
    Registriert seit
    25.08.2011.
    Ort
    Bad Feilnbach
    Beiträge
    208
    Partner-ID
    7698

    Standard

    Hast du dazu ein gallery.html.twig Template um uns das mal zu zeigen ?
    Contao Partner aus Rosenheim und München
    codesache.de
    ---
    Mitglied der Contao Community Bayern
    Aktuelle Termine zur Contao Community Bayern: contao-bayern.de

  4. #4
    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

    lege dir zwei neue Templates an:

    /templates/content_element/gallery/slider-gallery.html.twig
    /templates/content_element/swiper/gallery-slider.html.twig


    Inhalt /slider-gallery.html.twig
    Code:
    {% extends "@Contao/content_element/gallery.html.twig" %}
    
    {% set attributes = attrs()
        .addClass("swiper-wrapper content-#{type}--cols-#{items_per_row|default(4)}")
        .mergeWith(attributes|default)
    %}
    
    {% block list %}
       
        {% for item in list.items %}
            <li class="swiper-slide"{% block list_item_attributes %}{{ attrs(list.item_attributes|default) }}{% endblock %}>
                {% block list_item %}
                    {% with {figure: item} %}{{ block('figure_component') }}{% endwith %}
                {% endblock %}
            </li>
        {% endfor %}
        
    {% endblock %}
    hier füge ich die Klasse .swiper-wrapper hinzu.
    content-#{type}--cols-#{items_per_row|default(4)} hat keine weitere Auswirkungen auf den Slider. Ich habe festgestellt, dass wenn ich das rauslösche, die Klasse im Frontend trotzdem noch eingefügt wird ... die wird wohl an anderer Stelle auch erzeugt.

    Dem <li> wird hier die Klasse .swiper-slide hinzugefügt.



    Inhalt /gallery-slider.html.twig
    Code:
    {% extends "@Contao/content_element/swiper.html.twig" %}
    
    {% block content %}
        {% set slider_attributes = attrs()
            .addClass('swiper ')
            .set('data-delay', delay)
            .set('data-speed', speed)
            .set('data-offset', offset)
            .set('data-loop', loop)
            .mergeWith(slider_attributes|default)
        %}
        <div{{ slider_attributes }}>
            {# entfeRne .addClass('swiper-wrapper') #}
            {% set slider_wrapper_attributes = attrs()
                .mergeWith(slider_wrapper_attributes|default)
            %}
            
            {% block slides %}
                {% for element in nested_fragments %}
                    {% block slide %}
    
                                {{ content_element(element) }}
    
                    {% endblock %}
                {% endfor %}
            {% endblock %}
            
        </div>
    {% endblock %}
    Hier wird der {% block slides %} angepasst und .addClass('swiper-wrapper') entfernt, da dieses nun im Galerie-Template gesetzt wird.
    Weitere Anpassungen sind im {% block slides %} gemacht.


    Um die Anzahl der angezeigten Slides musst du dich nun ebenfalls im Template des swipers (/gallery-slider.html.twig) kümmern, denn das wird nun nicht mehr via CSS geregelt, sondern über das swiperJS.
    Stichwort: slidesPerView: 3,

    Mag sein, dass es elegantere Lösungen gibt. Und ich hoffe, dass ich die korrekten Passagen herausgenommen habe . Denn ich habe das in einem etwas stärker angepassten Twig Template am Laufen.
    Grüsse
    Bernhard


  5. #5
    Contao-Nutzer Avatar von mschindler
    Registriert seit
    25.08.2011.
    Ort
    Bad Feilnbach
    Beiträge
    208
    Partner-ID
    7698

    Standard

    Danke Bernhard !

    Läuft perfekt für den Anwendungsfall.
    Contao Partner aus Rosenheim und München
    codesache.de
    ---
    Mitglied der Contao Community Bayern
    Aktuelle Termine zur Contao Community Bayern: contao-bayern.de

  6. #6
    Contao-Nutzer Avatar von mschindler
    Registriert seit
    25.08.2011.
    Ort
    Bad Feilnbach
    Beiträge
    208
    Partner-ID
    7698

    Standard

    Im Backend werden mir die Bilder aus der Gallery noch in der Größe vom BildSet angezeigt.

    Hast du für die Backend-Ansicht ein eigenes be_ Template angelegt, damit die Bilder kleiner angezeigt werden ?

    Für RockSolid Elemente hatte ich dazu folgenden Abschnitt verwendet.

    PHP-Code:
    <?php if ($image $this->arrData['getImageObject']($this->image, array(180''))): ?>
    <img src="<?php echo $image->src ?>" style="margin-top: 5px;padding: 0;">
    <?php endif ?>
    Bernhard hast du dazu auch eine Lösung erarbeitet ?
    Contao Partner aus Rosenheim und München
    codesache.de
    ---
    Mitglied der Contao Community Bayern
    Aktuelle Termine zur Contao Community Bayern: contao-bayern.de

  7. #7
    Contao-Nutzer Avatar von mschindler
    Registriert seit
    25.08.2011.
    Ort
    Bad Feilnbach
    Beiträge
    208
    Partner-ID
    7698

    Standard

    Zur Ergänzung von dem Template gallery-slider.html.twig für die Pfeile und Pagination kann vor dem letzten DIV der HTML Teil eingefügt werden.
    PHP-Code:
    <button type="button" class="swiper-button-prev"></button>
    <
    button type="button" class="swiper-button-next"></button>
    <
    div class="swiper-pagination"></div
    Damit stehen die NavPfeile und die Pagination zur Verfügung.
    Contao Partner aus Rosenheim und München
    codesache.de
    ---
    Mitglied der Contao Community Bayern
    Aktuelle Termine zur Contao Community Bayern: contao-bayern.de

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
  •