11.12.2019 | TYPO3, TYPO3 Schnipsel
Typo3 8.x – Carousel aus Ressourcen einer Seite mit Bootstrap-4.3.1


geschrieben von Jens (keine Kommentare)
, ,

Gerade hatte ich überlegt, wie ich ohne eine weitere Mini Extension ein Carousel mit Bootstrap auf einfach Art und Weise realisieren kann. Hierfür bieten sich die Seitenressourcen in Typo3 an. An dieser Stelle können Fotos hinterlegt werden und mit dem entsprechenden Typoscript dann als Carousel ausgegeben werden. Unter den Fotos selbst soll der jeweilige Titel des Bildes zu sehen sein. Um das zu erreichen habe ich zwei Platzhalter carouselInit und carousel, die die Ressourcen abfragen und ausgeben. carouselInit dient hierbei nur einem einzigen Bild mit der Klasse „active“, wie weiter unten im HTML Schnipsel zu sehen ist. Eine elegantere Variante habe ich auf die Schnelle nicht gefunden. Es tut dem ganzen jedoch auch keinen Abbruch. Wer sich fragt, warum ich die Ausgabe nicht bei 0 sondern 1 starte – ganz einfach. 0 ist bei mir bereits die Resources für das Header Bild der Seite selbst. Kommt soetwas nicht zum Einsatz kann die Reihenfolge der Abfrage und die Ausgabe entsprechend angepasst werden. Neben dem Bild und dem Titel soll das Foto auch „verlinkbar“ über die Eigenschaft der Datei sein.

Zunächst der Typoscript Schnipsel:

carouselInit = FILES
carouselInit {
	references {
		table = pages
		uid.data = tsfe:id
		fieldName = media
	}

	begin = 1
	maxItems = 1

	renderObj = IMAGE
	renderObj {
		file.import.dataWrap = {file:current:storage}:{file:current:identifier}
		altText.data = file:current:title
		titleText.data = file:current:title
		params = class="d-block w-100" 
		linkWrap = <a href="http://{file:current:link}">|</a> <small>{file:current:title}</small>
		linkWrap.insertData = 1
	}         
	// stdWrap.wrap = <div>|</div>
}            


carousel = FILES
carousel {
	references {
		table = pages
		uid.data = tsfe:id
		fieldName = media
	}

	begin = 2
	// maxItems = N.N.

	renderObj = IMAGE
	renderObj {
		file.import.dataWrap = {file:current:storage}:{file:current:identifier}
		altText.data = file:current:title
		titleText.data = file:current:title
		params = class="d-block w-100" 
		linkWrap = <div class="carousel-item"><a href="http://{file:current:link}">|</a> <small>{file:current:title}</small></div>
		linkWrap.insertData = 1
	}
	// stdWrap.wrap = <div>|</div>
}

Dann noch ein wenig HTML:

<!-- CAROUSEL -->

	<div id="carouselExampleControls" class="carousel slide" data-ride="carousel">

			<div class="carousel-inner">
				<div class="carousel-item active">
					<f:format.raw>{carouselInit}</f:format.raw>
				</div>

				<f:format.raw>{carousel}</f:format.raw>

			</div> <!-- ./carousel-inner -->

		  <a class="carousel-control-prev" href="#carouselExampleControls" role="button" data-slide="prev">
			<span class="carousel-control-prev-icon" aria-hidden="true"></span>
			<span class="sr-only">Previous</span>
		  </a>
		  <a class="carousel-control-next" href="#carouselExampleControls" role="button" data-slide="next">
			<span class="carousel-control-next-icon" aria-hidden="true"></span>
			<span class="sr-only">Next</span>
		  </a>

	 </div>  <!-- ./carousel --> 
 
 <!-- ./ CAROUSEL -->

Den Quellcode kannst du dir auch hier als Textdokument herunterladen.


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Mit und unverhältnismäßig viel für dich gemacht in Kassel.

2014 - 2023