Contao-Camp 2024
Ergebnis 1 bis 26 von 26

Thema: Gallerie mit CustomElements ausgeben ?

  1. #1
    Contao-Nutzer
    Registriert seit
    29.12.2011.
    Beiträge
    78

    Frage Gallerie mit CustomElements ausgeben ?

    Moin Moin,

    ich benötige Hilfe bei der Ausgabe mehrerer Bilder.
    meine rsce_config habe ich ein Array für die Auswahl eines Ordners angelegt, der mehrere Bilder beinhaltet. Die Auswahl, Anzeige und das Speichern funktioniert im BE.

    PHP-Code:
    'images' => array(
                
    'label' => array('Ordner''Wählen Sie die Quelle der Projektbilder aus.'),
                
    'inputType' => 'fileTree',
                
    'eval' => array(
                    
    'multiple' => true,
                    
    'fieldType' => 'radio',
                    
    'files' => false,
                    
    'path' => 'files/layout/bilder/projektegallerien',
                    
    'isGallery' => true,
                    
    'extensions' => 'jpg',
                    
    'mandatory' => true,
               ),
     ), 
    alle anderen Felder ( hier nicht gezeigt ) kann ich im FE ausgeben. Bei der Anzeige der Bilder scheitert es jedoch von vorne bis hinten. Ich möchte dabei die Gallerie als <ul> und die Bilder in <li> ausgeben. Meine Versuche sind aber eher peinlich :

    PHP-Code:
    <section>
            <ul>
            <?php $picture deserialize($this->images); ?>
            
            <?php foreach ($picture as $uuid): ?>
                <?php if ($picture $this->getImageObject($uuid)): ?>
                    <li><img src="<?php echo $picture->src ?><?php echo $picture->imgSize ?> alt="<?php echo $picture->alt ?>"></li>
                <?php endif ?>
            <?php endforeach ?>
            </ul>
     </section>
    alternativ habe ich mir überlegt einen 'inputType' => 'list' zu erstellen und dort eine einzelne Auswahl für Bilder. Allerdings wäre es so wie gedacht wesentlich besser.

    Kann mir das bitte einer von euch "versuchen" das verständlich zu erklären ?
    Geändert von Sinus (13.08.2017 um 14:58 Uhr)

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

    Standard

    Überprüfe zu erst mal, was genau in
    PHP-Code:
    $this->images 
    drin steht. Ich glaube RSCE deserialisiert automatisch.

  3. #3
    Contao-Nutzer
    Registriert seit
    29.12.2011.
    Beiträge
    78

    Standard

    Servus Spooky,

    da steht einfach nur Array drin. Oder wie sieht die genauerer Prüfung aus ? <?php var_dump($this->images) ?> ?
    steht dann :

    array(1) { [0]=> string(36) "a9df59c9-7f50-11e7-9218-d43d7ee3e9a2" }
    Geändert von Sinus (13.08.2017 um 15:43 Uhr)

  4. #4
    Contao-Nutzer
    Registriert seit
    29.12.2011.
    Beiträge
    78

    Standard

    lösche ich den Ordner bekomme ich NULL ausgeliefert

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

    Standard

    Genau. Du machst aber noch ein deserialize auf images, das brauchst du nicht.

  6. #6
    Contao-Nutzer
    Registriert seit
    29.12.2011.
    Beiträge
    78

    Standard

    Ja Ok danke aber ohne funktioniert es ja auch nicht.
    Dabei hab ich jetzt folgendes festgestellt - das die Bilder nicht an das Array übergeben werden, sondern nur der Ordner mit der ID a9df59c9-7f50-11e7-9218-d43d7ee3e9a2
    warum zeigt er mir im BE die Bilder an, aber schreibt sie nicht ins Array ?

    PHP-Code:
    <ul>     
            <?php foreach ($this->images as $uuid): ?>
            <?php var_dump($this->$uuid?>
                <?php if ($picture $this->getImageObject($uuid)): ?>
                    <li><img src="<?php echo $picture->src ?><?php echo $picture->imgSize ?> alt="<?php echo $picture->alt ?>"></li>
                <?php endif ?>
            <?php endforeach ?>
            </ul>
    erhalte ich NULL
    Geändert von Sinus (13.08.2017 um 16:21 Uhr)

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

    Standard

    Achso, du hast einen Ordner ausgewählt. Dann musst du dir in deinem Template erst alle Bilder holen, die in diesem Ordner liegen. Sieh dir das am besten mal in der ContentGallery.php des core an

  8. #8
    Contao-Nutzer
    Registriert seit
    29.12.2011.
    Beiträge
    78

    Standard

    Das werde ich tun - danke Spooky
    Geändert von Sinus (13.08.2017 um 16:28 Uhr)

  9. #9
    Contao-Nutzer
    Registriert seit
    29.12.2011.
    Beiträge
    78

    Standard

    War gut gemeint, aber ich komme nicht weiter. Ich verstehe nur so ungefär was hier passiert ( mal abgesehen das ich die Syntax auch nicht verstehe ), wüsste ich nicht wie ich das in das rsce_template verwenden könnte. Ich muss ja über eine foreach Abfrage die Daten der Bilder jeweils in ein eigenes Array packen -oder ?

    PHP-Code:
    $objSubfiles = \FilesModel::findByPid($objFiles->uuid);

                    if (
    $objSubfiles === null)
                    {
                        continue;
                    }

                    while (
    $objSubfiles->next())
                    {
                        
    // Skip subfolders
                        
    if ($objSubfiles->type == 'folder')
                        {
                            continue;
                        }

                        
    $objFile = new \File($objSubfiles->path);

                        if (!
    $objFile->isImage)
                        {
                            continue;
                        }

                        
    // Add the image
                        
    $images[$objSubfiles->path] = array
                        (
                            
    'id'         => $objSubfiles->id,
                            
    'uuid'       => $objSubfiles->uuid,
                            
    'name'       => $objFile->basename,
                            
    'singleSRC'  => $objSubfiles->path,
                            
    'title'      => \StringUtil::specialchars($objFile->basename),
                            
    'filesModel' => $objSubfiles->current()
                        );

                        
    $auxDate[] = $objFile->mtime;
                    } 
    @Spooky, wenn es nicht zu viele umstände macht, könntest du mir dann einen verständlichen Einstieg geben/erklären zb. wäre mir schon geholfen wie ich auf die Ebene unter 'images' komme (Syntax Problem ).
    Wenn ich eine reine Checkbos Auswahl aktiviere und die Bilder hinzufüge funktioniert das rsce_template, hätte nicht gedacht das eine reine Ordner Auswahl so kompliziert wird.
    Geändert von Sinus (13.08.2017 um 18:21 Uhr)

  10. #10
    Contao-Nutzer
    Registriert seit
    28.05.2011.
    Beiträge
    169

    Standard

    Hi,

    hiermit funktioniert es.

    Dies kommt in Deine config.php

    PHP-Code:
    <?php
    // rsce_my_element_config.php
    return array(
        
    'label' => array('Custom: Bildergalerie'''),
        
    'types' => array('content'),
        
    'contentCategory' => 'Inhalte: Custom',
        
    'standardFields' => array('cssID'),
        
    'wrapper' => array(
            
    'type' => 'none',
        ),
        
    'fields' => array(
            
    'multiSRC' => array
            (
                
    'label'                   => array('Bilder für Galerie auswählen'''),
                
    'inputType'               => 'fileTree',
                
    'eval'                    => array('multiple'=>true'fieldType'=>'checkbox''orderField'=>'orderSRC''files'=>true'mandatory'=>true),
                
    'sql'                     => "blob NULL",
                
    'load_callback' => array
                (
                    array(
    'tl_content''setMultiSrcFlags')
                )
            ),
        ),
    );
    Und diese hier in Dein Templates

    PHP-Code:
    <?php 
    $tmp 
    array_map('String::binToUuid'deserialize($this->orderSRCtrue));
    $images $this->multiSRC;

    if (!empty(
    $tmp)) {
        
    $arrOrder array_map(function() {}, array_flip($tmp));
        foreach (
    $images as $k=>$v) {
            if (
    array_key_exists($v$arrOrder)) {
                
    $arrOrder[$v] = $v;
                unset(
    $images[$k]);
            }
        }
        if (!empty(
    $images)) {
            
    $arrOrder array_merge($arrOrderarray_values($images));
        }
        
    $images array_values(array_filter($arrOrder));
        unset(
    $arrOrder);
    }
    ?>

    <?php foreach ($images as $index => $galerie): ?>
    <?php 
    if ($image $this->arrData['getImageObject']($galerie)){ ?>
        <img src="<?php echo $image->src ?>" alt="<?php echo $image->alt ?>">

    <?php ?>
    <?php 
    endforeach ?>
    Grüße Marco

  11. #11
    Contao-Nutzer
    Registriert seit
    29.12.2011.
    Beiträge
    78

    Standard

    Wow - ich habe überhaupt nicht mitbekommen, das hier was steht. Danke Marco für die Hilfe !
    Geändert von Sinus (04.12.2017 um 22:17 Uhr)

  12. #12
    Contao-Nutzer
    Registriert seit
    02.08.2017.
    Beiträge
    39

    Standard Leider Fehler

    @Yangdoo

    Wenn ich dein Code 1 zu 1 übernehme, bekomme ich folgenden Fehler:

    Code:
    Warning: in_array() expects parameter 2 to be array, null given in C:\xampp\htdocs\norwid\vendor\contao\core-bundle\src\Resources\contao\library\Contao\System.php on line 169
    
    Attempted to load class "tl_content" from the global namespace. Did you forget a "use" statement?
    Das sagt mir leider nichts.

  13. #13
    Contao-Fan
    Registriert seit
    16.11.2012.
    Ort
    Freiburg
    Beiträge
    539

    Standard

    Wie sieht dein Code genau aus und wo hast du ihn reingeschrieben?
    Grüße
    Alex

  14. #14
    Contao-Nutzer
    Registriert seit
    02.08.2017.
    Beiträge
    39

    Standard

    Zitat Zitat von 07alex07 Beitrag anzeigen
    Wie sieht dein Code genau aus und wo hast du ihn reingeschrieben?
    Es ist 100% der Code von Yangdoo jeweils in einer rsce_xy_config.php sowie rsce_xy.html5. Es ist kein generelles Problem mit Custom Elements, damit arbeite ich bereits seit einem halben Jahr.

    Ich brauche die Standard-Galerie-Funktion deshalb weil ich an sich gerne die normale Galerie als Modul hätte, gibt es aber nicht, daher der Weg mit Custom Elements.

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

    Standard

    Zitat Zitat von dness Beitrag anzeigen
    Ich brauche die Standard-Galerie-Funktion deshalb weil ich an sich gerne die normale Galerie als Modul hätte, gibt es aber nicht, daher der Weg mit Custom Elements.
    Normalerweise fügt man solche Inhalte in einer unveröffentlichten Seite ein und bindet das Inhaltselement dann als Modul ein (bspw. als HTML Modul mit {{insert_content::*}} Insert Tag).

    Dass du das als Modul verwenden willst ist auch der Grund warum der Code von Yangdoo nicht funktioniert.

  16. #16
    Contao-Nutzer
    Registriert seit
    02.08.2017.
    Beiträge
    39

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Normalerweise fügt man solche Inhalte in einer unveröffentlichten Seite ein und bindet das Inhaltselement dann als Modul ein (bspw. als HTML Modul mit {{insert_content::*}} Insert Tag).
    Ah, dieser Weg ist mir bisher nicht eingefallen, probiere ich gleich aus. Danke.

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

    Standard

    Für Contao 4 gibt es Alternativ auch https://github.com/srhinow/themecontent-bundle

  18. #18
    Contao-Fan Avatar von thepixture
    Registriert seit
    24.06.2009.
    Ort
    Dresden
    Beiträge
    536

    Standard

    Ich versuche gerade ebenfalls eine Galerie auszugeben und hab mich an den Code von Yangdoo gehalten.

    Leider klappt es nicht und ich bekomme folgende Meldung im Log ausgegeben:
    app.CRITICAL: An exception occurred. {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalErrorE xception(code: 0): Compile Error: Cannot use 'String' as class name as it is reserved at /var/www/pub/.../vendor/contao/core-bundle/src/Resources/contao/library/Contao/String.php:28)"} []
    Nutze Contao 4.4.
    Grüße
    thepixture

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

    Standard

    Du musst StringUtil statt String verwenden.

  20. #20
    Contao-Fan Avatar von thepixture
    Registriert seit
    24.06.2009.
    Ort
    Dresden
    Beiträge
    536

    Standard

    Danke Spooky, hat funktioniert.
    Grüße
    thepixture

  21. #21
    Contao-Urgestein Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    1.503
    Partner-ID
    6122

    Standard

    Habe eine Frage zur Backend Darstellung,
    wenn ich das wie hier beschrieben teste ist die Vorschau Anzeige (Contao 4.4.18) der ausgewählten Fotos in der Listenansicht anders als bei dem normalen Contao Gallery Inhaltselement.
    Wie kann man das beeinflussen?
    Freelancer, Digital Design Enthusiast, Contao Aficionado and Tutorial Junkie @MoinFranko - Carpe diem ...

  22. #22
    Contao-Fan
    Registriert seit
    10.08.2011.
    Ort
    Berlin
    Beiträge
    828

    Standard

    @Franko
    hast Du es hinbekommen?
    In diesem Thread wird ja gezeigt wie man das hinbekommt.
    Nur wird leider bei mir nichts ausgegeben im Frontend, was sicher daran liegt dass ich das Template von hier übernommen habe - blicke nicht was ich dort ändern muss .

  23. #23
    Contao-Urgestein Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    1.503
    Partner-ID
    6122

    Standard

    Zitat Zitat von Bennie Beitrag anzeigen
    @Franko
    hast Du es hinbekommen?
    In diesem Thread wird ja gezeigt wie man das hinbekommt.
    Nur wird leider bei mir nichts ausgegeben im Frontend, was sicher daran liegt dass ich das Template von hier übernommen habe - blicke nicht was ich dort ändern muss .
    Hi,
    wie folgt: https://community.contao.org/de/show...l=1#post475582

    Ausgabe OK, allerdings nicht mit der im BE gewählten Sortierung ...
    Freelancer, Digital Design Enthusiast, Contao Aficionado and Tutorial Junkie @MoinFranko - Carpe diem ...

  24. #24
    Contao-Urgestein Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    1.503
    Partner-ID
    6122

    Standard

    @Bennie

    Hier mit sortierter Ausgabe: https://community.contao.org/de/show...l=1#post475592
    Freelancer, Digital Design Enthusiast, Contao Aficionado and Tutorial Junkie @MoinFranko - Carpe diem ...

  25. #25
    Contao-Urgestein Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    1.503
    Partner-ID
    6122

    Standard

    Zitat Zitat von Franko Beitrag anzeigen
    Habe eine Frage zur Backend Darstellung,
    wenn ich das wie hier beschrieben teste ist die Vorschau Anzeige (Contao 4.4.18) der ausgewählten Fotos in der Listenansicht anders als bei dem normalen Contao Gallery Inhaltselement.
    Wie kann man das beeinflussen?
    Ich unterscheide jetzt einfach im template zwischen FE/Be Ausgabe über:

    Code:
    <?php $rnd = mt_rand(10,40) ?>
    
    <div id="<?php echo $this->cssID ?>" class="<?php echo $this->class ?>"><div class="slider-wrapper<?= $rnd ?>">
    
    <?php $dataSorted = array_map('\StringUtil::binToUuid', deserialize($this->orderSRC, true)); ?>
    
    <?php foreach ( $dataSorted as $data ) : ?>
      <?php if ($image = $this->getImageObject($data, $this->size)) : ?>
    		
        <?php if (TL_MODE === 'BE') : ?>
          <?php $strImageCrop = $this->getImage($image->picture['img']['src'], 100, '', 'center_center'); ?>
          <img src="<?= $strImageCrop ?>">
        <?php endif; ?>
    
        <?php if (TL_MODE === 'FE') : ?>
          <div><?php $this->insert('picture_default', $image->picture); ?></div>
        <?php endif; ?>
    
      <?php endif; ?>
    <?php endforeach ?>
    
    </div></div>
    In der Listenansicht des Artikels werden im BE jetzt nur die verkleinerten Bilder angezeigt -

    siehe.: rsce_test_screen01.jpg
    Oben RSCE unten normale Contao Gallery
    Geändert von Franko (18.06.2018 um 08:54 Uhr) Grund: Schreibfehler
    Freelancer, Digital Design Enthusiast, Contao Aficionado and Tutorial Junkie @MoinFranko - Carpe diem ...

  26. #26
    Contao-Urgestein Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    1.503
    Partner-ID
    6122

    Standard

    Zitat Zitat von Franko Beitrag anzeigen
    Ich unterscheide jetzt einfach im template zwischen FE/Be Ausgabe über:
    Oder alternativ mit eigenem BE Template - siehe https://github.com/madeyourday/conta...ents/issues/28
    Freelancer, Digital Design Enthusiast, Contao Aficionado and Tutorial Junkie @MoinFranko - Carpe diem ...

Aktive Benutzer

Aktive Benutzer

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

Lesezeichen

Lesezeichen

Berechtigungen

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