Ergebnis 1 bis 6 von 6

Thema: Pfad aus einem Bild auslesen

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

    Support Contao

    Standard Pfad aus einem Bild auslesen

    Hallo,

    über RockSolid Custom Elements soll der Vegas-Slider eingebaut werden.
    Wenn ich nun die Bilder auswähle, schaffe ich es nicht, den ausgelesenen Pfad ins template zu schreiben.
    Grundsätzlich funktioniert es über den fieldType 'url', dass das script läuft, aber trotzdem würde ich's gerne alonge mit dem fieldType 'fileTree' umsetzen.

    PHP-Code:
                'fields' => array(
                    
    'vegasImage' => array(
                        
    'label' => array(
                            
    'de' => array('Slider Bild','Bitte wählen Sie ein Bild für diesen Slide aus'),
                            
    'en' => array('Slider images','Please choose the images for this slide'),
                        ),
                        
    'inputType' => 'fileTree',
                        
    'eval' => array(
                            
    'fieldType' => 'radio',
                            
    'filesOnly' => true,
                            
    'extensions' => 'jpg,jpeg,JPG,JPEG,png,PNG,svg',
                        ),
                    ), 
    PHP-Code:
    <script type="text/javascript">
        $(document).ready(function(){ 
            $('<?php echo $this->vegasBackground ?>').vegas({
                animation: <? echo "'" , $this->vegasAnimation , "'" ?>,
                delay: <? echo "'" , $this->vegasDelay , "'" ?>,    
                
                slides: [
                    <?php foreach ($this->vegasImages as $vegasSlideImage): ?>
                        { src: "<?php $objFile = \FilesModel::findByUuid($uuid); ?><?php $imagePath $objFile->path?><?php echo $imagePath ?>" },

                    <?php endforeach; ?>
                ]


            });
        });
    </script>
    und so sollte das Ergebnis (bei drei ausgewählten Bildern) aussehen ... so klappt es, wenn ich über die 'url' auswähle:
    PHP-Code:
    <script type="text/javascript">
        $(
    document).ready(function(){ 
            $(
    '.myClass').vegas({
                
    animation'',
                
    delay'5000',    
                
                
    slides: [
                                        { 
    src"files/layout/img/medien/image01.jpg" },

                                        { 
    src"files/layout/img/medien/image02.jpg" },

                                        { 
    src"files/layout/img/medien/image03.jpg" },

                                ]


            });
        });
    </script> 

    Kann mir jemand weiterhelfen, sodass ich den Pfad korrekt auslese - vielen DANK schon mal
    Grüsse
    Bernhard


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

    Standard

    In vegasImage speicherst du ja nur ein Bild, daher brauchst du keine for Schleife:
    PHP-Code:
    if (null !== ($objFile = \Contao\FilesModel::findByUuid($this->vegasImage))) {
        
    $path $objFile->path;
        
    // ...


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

    Support Contao

    Standard

    Doch, die foreach-Schleife brauche ich, weil die Bilder über einen 'inputType' => 'list' eingefügt werden.

    Hier noch der Teil der ...config.php
    PHP-Code:
            'vegasImages' => array(
                
    'label' => array(
                    
    'de' => array('Slider Bilder','Hier wählen Sie die Bilder für die Slideshow aus'),
                    
    'en' => array('Slider Images','Here you choose the images'),
                ),
                
    'elementLabel' => '%s. Slide',
                
    'inputType' => 'list',
                
    'minItems' => 1,
                
    'fields' => array(
                    
    'vegasImage' => array(
                        
    'label' => array(
                            
    'de' => array('Slider Bild','Bitte wählen Sie ein Bild für diesen Slide aus'),
                            
    'en' => array('Slider images','Please choose the images for this slide'),
                        ),
                        
    'inputType' => 'fileTree',
                        
    'eval' => array(
                            
    'fieldType' => 'radio',
                            
    'filesOnly' => true,
                            
    'extensions' => 'jpg,jpeg,JPG,JPEG,png,PNG,svg',
                        ),
                    ),
                    
    'vegasImageUrl' => array(
                        
    'label' => array(
                            
    'de' => array('Slider Bild','Bitte wählen Sie ein Bild für diesen Slide aus'),
                            
    'en' => array('Slider Images','Please choose the images for this slide'),
                        ),
                        
    'inputType' => 'url',
                    ),
                ),
            ), 
    Wobei, das erste field 'vegasImage' die Bilder via 'fileTree' auswählen lässt - und damit komme ich nicht zu Rande, und
    das zweite field 'vegasImageUrl' die Bilder via 'url' auswählen lässt - und das klappt ja ... auch mit der foreach-Schleife.
    Das Auslesen via 'url' habe ich im template dann so gelöst (und das, wie erwähnt bringt mir das korrekte Ergebnis. Ich möchte die Lösung aber über 'fileTree' lösen und das field 'vegasImageUrl' dann wieder weglassen.)
    PHP-Code:
    <script type="text/javascript">
        $(document).ready(function(){ 
            $('<?php echo $this->vegasBackground ?>').vegas({
                animation: <? echo "'" , $this->vegasAnimation , "'" ?>,
                delay: <? echo "'" , $this->vegasDelay , "'" ?>,    
                
                slides: [
                    <?php foreach ($this->vegasImages as $vegasSlideImage): ?>
                        { src: "<?php echo $vegasSlideImage->vegasImageUrl ?>" },
                    <?php endforeach; ?>
                ]


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


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

    Standard

    Achso, naja dann ist es ja einfach nur:
    PHP-Code:
    <?php foreach ($this->vegasImages as $vegasImage): ?>
      <?php if (null !== ($objFile = \Contao\FilesModel::findByUuid($vegasImage->vegasImage))): ?>
        <p>File path: <?= $objFile->path ?>
      <?php endif; ?>
    <?php 
    endforeach; ?>

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

    Support Contao

    Standard

    ... du warst zwar jetzt zwischenzeitlicher schneller aber ich habe nun auch eine funktionierende Lösung.
    Du hast mich zumindest auf die richtige Spur gebracht.

    PHP-Code:
    <script type="text/javascript">
        $(document).ready(function(){ 
            $('<?php echo $this->vegasBackground ?>').vegas({
                animation: <? echo "'" , $this->vegasAnimation , "'" ?>,
                delay: <? echo "'" , $this->vegasDelay , "'" ?>,    
                
                slides: [
                    <?php foreach ($this->vegasImages as $vegasSlideImage): ?>
                        { src: "<?php $objFile Contao\FilesModel::findByUuid($vegasSlideImage->vegasImage); ?><?php $imagePath $objFile->path?><?php echo $imagePath ?>" },
                    <?php endforeach; ?>
                ]

            });
        });
    </script>
    Wozu verwendest du in deiner Lösung nochmals eine if-Abfrage?
    Grüsse
    Bernhard


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

    Standard

    Für den Fall, dass das Bild aus der Datenbank gelöscht wurde. Andernfalls würde es zu einem Fehler im Frontend kommen. Zusätzlich könnte man auch noch eine file_exists Abfrage machen, denn es könnte auch sein, dass das Bild per FTP gelöscht oder verschoben wurde.

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
  •