Zum Inhalt springen

Carousel aus den Resourcen der Seite

Erstellt am 13. Juni 2013 · 5 Antworten · letzte Antwort am 26. Mai 2014

Tags: Bilder, Bootstrap, Frage

dom ·

Hallo,

mit folgendem TS habe ich es nun geschafft, dass ein Bootstrap Carousel aus den Ressourcen der Seite aufgebaut wird und dabei auch noch Titel und Beschreibung der Ressource (Bild) ausgegeben werden:

lib.carousel = FILES
lib.carousel {
    references {
        table = pages
        uid = 1
        fieldName = media
    }

    renderObj = COA_INT
    renderObj {
        10 = TEXT
        10.data = file:current:publicUrl
        10.wrap = <div class="item"><img src="|"/>
        20 = TEXT
        20.data = file:current:title
        20.wrap = <div class="container"><div class="carousel-caption"><h1>|</h1>
        30 = TEXT
        30.data = file:current:description
        30.wrap = <p class="lead">|</p></div></div></div>
    }
}

Mir fehlt noch die Ausnahme im Wrap für das erste Bild, denn dort muss eigentlich <div class="item active"> stehen. Ich habe schon gesucht ob ich listnum verwenden kann bzw. es ähnliche Elemente wie CUR gibt, die man aus den Menüs kennt. Bitte um Hilfe.

Gruss
Dom

P.S.: Wenn das jemand verwenden will, sollte er/sie beachten, dass noch folgendes ins Template gehört. Auf die "id=intro"(*) wird dann gemappt:

<div id="carousel" class="carousel slide">
                <div id="intro" class="carousel-inner">*</div>
                <a class="left carousel-control" href="#carousel" data-slide="prev">‹</a>
                <a class="right carousel-control" href="#carousel" data-slide="next">›</a>
            </div>
toifel ·

Soweit ich weiss geht das über FILES noch nicht ohne Weiteres - habe zumindest nichts gefunden.
Ich habe es so gelöst, dass ich zuerst das "image"-Feld im Register gespeichert habe. Sieht dann so aus:

renderObj = COA
renderObj {
    10 = FILES
    10 {
    	references {
    		table = tt_content
    		uid.data = field:uid
    		fieldName = image
    	}
    
    	renderObj = COA
    	renderObj {
    		10 = LOAD_REGISTER
    		10 {
    			savedString.cObject = TEXT
    			savedString.cObject.data = field:image
    		}
    	}
    }
}

Darauf kann man dann wieder das normale "split" wie in 4.X anwenden und hat die ganzen gewohnten Funktionen.

Das Snippet stammt noch aus 6.0.1 Zeiten - wenn es mitlerweile eine einfachere Lösung gibt würde ich diese auch gern wissen!

dom ·

Hallo Toifel,

danke für Deinen Tipp. Ich habe heute früh nochmal per try and error diverse Sachen ausprobiert und siehe da, dies funktioniert auch:

lib.carousel = FILES
lib.carousel {
    references {
        table = pages
        uid = 1
        fieldName = media
    }

    renderObj = COA_INT
    renderObj {
        10 = TEXT
        10.data = file:current:publicUrl
        10.wrap = <div class="item active"><img src="|"/>|*|<div class="item"><img src="|"/>|*|<div class="item"><img src="|"/>
        20 = TEXT
        20.data = file:current:title
        20.wrap = <div class="container"><div class="carousel-caption"><h1>|</h1>
        30 = TEXT
        30.data = file:current:description
        30.wrap = <p class="lead">|</p></div></div></div>
    }
}

Also es wird folgendermaßen gewrappt: erstes Element|*|mittlere Elemente|*|letztes Element

Hoffe es hilft. Gruss
Dom

toifel ·

Stimmt, wenn Du nur den ersten und letzten Eintrag entsprechend markieren willst ist das wahrscheinlich sogar die einfachste Lösung. War in meinem Fall leider etwas anders, da ich die Anzahl der auszulesenden Bilder begrenzen musste 😉

suti84 ·

hallo
währe super der code.
versuche das in 6.2 zu verwenden. bekomme aber immer bei img src "Error: no file object"
währe sehr dankbar um eine lösung.

suti84 ·

habe den fehler gefunden
die zeile
10.data = file:current<i class="mmforum-iconset-20-razz"></i>ublicUrl
muss so heissen
10.data = file:current:publicUrl

das ich das nicht gleich gesehen habe grrrrr