Ergebnis 1 bis 4 von 4

Thema: RSCE und Random-Bild

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

    Support Contao

    Standard RSCE und Random-Bild

    Über ein RSCE erstelle ich eine eigene Zufalls-Ausgabe. (siehe auch hier)

    Zum Testen habe ich eine einfache Auswahl eines Bildes erstellt und mit der Template-Abfrage scheitere ich nun. Genauer gesagt damit wie ich das Bild angezeigt bekomme.

    PHP-Code:
    <?php

    return[
        
    'label' => ['Zufallsbild','Erstellen Sie Bilder mit Verlinkungen, die in zufälliger Reihenfolge ausgegeben werden.'],
        
    'types' => ['content','module'],
        
    'standardFields' => ['cssID'],
        
    'contentCategory' => 'beRecont',
        
    'moduleCategory' => 'beRecont',
        
    //'beTemplate' => 'be_wildcard',
        
    'fields' => [
            
    'partners' => [
                
    'label' => ['Partner','Wählen Sie die Partner Logos aus.'],
                
    'elementLabel' => '%s. Partner',
                
    'inputType' => 'list',
                
    'minItems' => 1,
                
    'fields' => [
                    
    'logo' => [
                        
    'label' => [
                            
    'de' => ['Logo','Wählen Sie das Partner-Logo aus.'],
                        ],
                        
    'inputType' => 'fileTree',
                        
    'eval' => [
                            
    'fieldType' => 'radio',
                            
    'filesOnly' => true,
                            
    'extensions' => \Config::get('validImageTypes'),
                            
    'tl_class' => 'clr w50',
                        ],
                    ],
                ],
            ],
        ],
    ];
    Bisher habe diese Ausgabe - gibt aber eben aktuelle nur UUID aus.
    PHP-Code:
    <?php

    $elements 
    = [];
    foreach (
    $this->partners as $partner) {
        
        
    $elements[] = $partner->logo;
    }
    shuffle($elements);

    ?>

    <?php foreach ($elements as $i => $element): ?>
    <div class="myclass"><?= htmlspecialchars($element); ?></div>
    <?php endforeach; ?>
    Dass die UUID in ein <picture> umgewandelt werden muss, das weiss ich soweit - nur versehe ich gerade nicht wo und wie ich das in das fertige Bild $elements[] bringe
    Grüsse
    Bernhard


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

    Support Contao

    Standard

    für Nachleser hier mal eine Möglichkeit:

    PHP-Code:
     <?php

    $elements 
    = [];
    foreach (
    $this->partners as $partner) {
        
        
    $objFile Contao\FilesModel::findByUuid($partner->logo);
        
    $logoPath $objFile->path;
        
    $elements[] = $logoPath;
    }
    shuffle($elements);

    ?>

    <?php foreach ($elements as $element): ?>
    <div class="myclass"><img src="<?= htmlspecialchars($element); ?>"></div>
    <?php endforeach; ?>
    Grüsse
    Bernhard


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

    Support Contao

    Standard

    So, ich habe hier an diesem Projekt wieder ein wenig weitergefeilt und muss gestehen, dass ich anstehe.
    Einseits am Verständnis und andererseits an der Umsetzungsidee

    obiges template tut das was es soll: es zeigt zufällige Reihenfolge der Bilder im Frontend an.
    Nachdem ich aber nun ein wenig mehr haben möchte, komme ich nicht mehr weiter.

    Ziel:
    • Die Metadaten aus der Dateiverwaltung auslesen und verwenden »
    - Verlinkung
    - ALTernativer Text
    • aus dem rsce_randomimage_config.html5 Daten/Werte mit übernehmen »
    - z.B. target = new window

    Verlinkung und ALT-Text aus der Dateiverwaltung kann ich mir hiermit rausholen:
    Code:
    foreach ($this->partners as $partner) {
        
        $objFile = Contao\FilesModel::findByUuid($partner->logo);
        $logoPath = $objFile->path;
        
        $logoInfo = deserialize($objFile->meta);
        $logoTitle = $logoInfo['de']['title'];
        $logoLink = $logoInfo['de']['link'];
    }
    ja, aber wie bringe ich diese in $elements bzw. hole diese wieder passend zum Datensatz wieder heraus?
    Und hier stehe ich nun echt auf der Leitung und würde mich um Hilfestellung freuen

    Das vorhandene template rsce_randomimage.html5 sieht so aus:
    PHP-Code:
    <?php

    $elements 
    = [];
    foreach (
    $this->partners as $partner) {
        
        
    $objFile Contao\FilesModel::findByUuid($partner->logo);
        
    $logoPath $objFile->path;
        
        
    $logoInfo deserialize($objFile->meta);
        
    $logoTitle $logoInfo['de']['title'];
        
    $logoLink $logoInfo['de']['link'];

        
    $elements[] = $logoPath;

    }
    shuffle($elements);

    ?>

    <?php foreach ($elements as $element): ?>
    <div class="mod_article column is-one-quarter-tablet is-one-third-mobile is-2-desktop block">
        <div class="ce_image block">
            <figure class="image_container">
                
                <a href="<?= HIER SOLLTE $logoLink REIN  ?>" title="<?= HIER SOLLTE $logoTitle REIN  ?>"<?php if ($partner->target): echo ' target="_blank"'; endif; ?>>
                    <img src="<?= htmlspecialchars($element); ?>">
                </a>

            </figure>
        </div>
    </div>
    <?php endforeach; ?>

    <?php if ($partner->target): echo ' target="_blank"'; endif; ?>
    klappt natürlich auch nicht ...


    Oder ist mein Ansatz sowieso falsch?
    Grüsse
    Bernhard


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

    Support Contao

    Standard

    so funktioniert das mal ... aber gibt's denn ne elegantere Lösung dafür?

    PHP-Code:
    <?php

    $elements 
    = [];
    foreach (
    $this->partners as $partner) {
        
        
    $objFile Contao\FilesModel::findByUuid($partner->logo);
        
    $logoPath $objFile->path;
        
        
    $logoInfo deserialize($objFile->meta);
        
    $logoTitle $logoInfo['de']['title'];
        
    $logoLink $logoInfo['de']['link'];
        
    $logoTarget $partner->target;

        
    $elements[] = [$logoPath$logoTitle$logoLink$logoTarget];
        
    }
    shuffle($elements);

    ?>

    <?php foreach ($elements as $element): ?>
    <div class="mod_article column is-one-quarter-tablet is-one-third-mobile is-2-desktop block">
        <div class="ce_image block">
            <figure class="image_container">
                
                <a href="<?= $element[2?>" title="<?= $element[1?>"<?php if ($element[3] == 1): echo ' target="_blank"'; endif; ?>>
                    <img src="<?= $element[0?>">
                </a>
                
            </figure>
        </div>
    </div>
    <?php endforeach; ?>
    Grüsse
    Bernhard


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
  •