Zum Inhalt springen

Bilder und Bildtexte frei positionieren - mal wieder

Erstellt am 24. Juli 2007 · 6 Antworten · letzte Antwort am 24. Juli 2007

Tags: Bilder, HTML & CSS, Frage

blab ·

Hallo,

Hab jetzt länger gesucht und nix wirklich passendes gefunden. Ich möchte mehrere Bilder und Bildtexte mittels css frei positionieren. Die Bildtexte sollen auf den Bildern liegen. Wenn man auf ein Bild (oder den Bildtext) klickt, wird auf eine andere Seite verlinkt.

Benutze das Content Element "Nur Bilder", Bildtexte sind mittels # getrennt.

Hab das jetzt so gemacht:

INHALT {
	table = tt_content
	wrap = |
				
	select {
		pidInList = this
		orderBy = sorting
	}
				
	renderObj = COA
	renderObj {
		10 = IMAGE
		10 {
			required = 1
			wrap = <div id="image1">|</div>
			file.import = uploads/pics/
			file.import.field = image
			file.import.listNum = 0
			file.import.listNum.splitChar = ,
		}
					
		20 = IMAGE
		20 {
			required = 1
			wrap = <div id="image2">|</div>
			file.import = uploads/pics/
			file.import.field = image
			file.import.listNum = 1
			file.import.listNum.splitChar = ,
		}
					
		50 = TEXT
		50 {
			required = 1
			field = imagecaption				
			wrap = <div id="text1" class="bildtext">|</div>
			listNum = 0
			listNum.splitChar = #
		}

		60 = TEXT
		60 {
			required = 1
			field = imagecaption				
			wrap = <div id="text2" class="bildtext">|</div>
			listNum = 1
			listNum.splitChar = #
		}

	}
}

Zum einen fehlen die Links, die ich ja in den wrap einbauen muesste. Um die aus dem Content Element in den wrap zu bekommen bräuchte ich aber Stringoperationen, die ich nicht habe?

Zum anderen wuerde ich gern fuer jedes Bild ein einzelnes Content Element vom Typ 'Nur Bilder' nehmen. Aber dann funktioniert listNum nicht mehr und beide Bilder erhalten die div-id "image1". Wie würde ich die Bilder dann im Code unterscheiden?

Unbekannter Benutzer ·

Wie soll denn am Ende der HTML Quellcode aussehen für so ein Element? Sollte eigentlich kein Problem sein, die Links auch in den Wrap reinzubekommen...

Was die ID angeht kannst du doch mit der UID des Elementes arbeiten. Die ist dann eindeutig, wenn du einzelne Bildelemente benutzt.

Viele Grüße
Christian

blab ·

HTML sollte in etwa so aussehen:

<div id = "image1"><a href="meineseite.htm"><img src="meinbild1.jpg"></a></div>
<div id = "text1" class = "bildtext"><a href="meineseite.htm">Mein Bildtext1</a></div>

<div id = "image2"><a href="nochneseite.htm"><img src="meinbild2.jpg"></a></div>
<div id = "text2" class = "bildtext"><a href="nochneseite.htm">Mein Bildtext2</a></div>

Hab hier mal statische Linktargets genommen, weil ich die eigentlich verwenden möchte. Keine Idee wie ich die da reinbekommen könnte.

Die UID könnte ich über CASE abfragen... Super Tipp, vielen Dank. Die sind dann immer 0,1,2 bei z.B. drei Bildern? Auch wenn mal eins entfernt und hinzugefügt wird?

Unbekannter Benutzer ·

ich überleg mir mal was zu der struktur.
Die UID ist einmalig auf der ganzen Seite...
Die bekommst du einfach über field = uid so wie imagecaption auch.

brokemeister ·

Warum nimmst du nicht einfach das RTE im normalen Textelement?
Da kannst du Bilder verlinken und einen Bildtext verlinken...

Du kannst die Position auch frei einstellen...

blab ·

brokemeister, ich möchte die Bilder pixelgenau positionieren und der Bildtext soll wie gesagt auf den Bildern liegen. Ich glaub das geht nicht mit dem RTE?

Kitsunet, dann wird das nix mit meinem schicken CASE Verteiler, die UIDs koennen ja beliebig sein.

Hab die erste Variante (alle Bilder in einem Content Element) jetzt so gemacht:

 5 = HTML
5 {
	value.field = image_link
	value.wrap = <div id = "image1"><a href = "|">
	value.listNum = 0
	value.listNum.splitChar = #
}

10 = IMAGE
10 {
	required = 1
	wrap = |</a></div>
	file.import = uploads/pics/
	file.import.field = image
	file.import.listNum = 0
	file.import.listNum.splitChar = ,
}

usw.

So würde es schon mal gehen. Ist mit den #-Trennern im BE allerdings nicht wirklich anwenderfreundlich.

Wäre noch die Frage wie man bei mehreren Content Elements bestimmt, der wievielte Durchgang (durch renderObj) es ist. Zähler? Geht sowas?

blab ·

So, jetzt geht's auch mit mehreren Content-Elementen:

INHALT = CONTENT
INHALT {
	table = tt_content
	wrap = |
				
	select {
		pidInList = this
		orderBy = sorting
	}
				
	renderObj = COA
	renderObj {
		10 = HTML
		10.value = <div id = "image
					
		11 = HTML
		11.value.data = cObj:parentRecordNumber

		12 = HTML
		12.value.field = image_link
		12.value.wrap = "><a href = "|">
					
		20 = IMAGE
		20 {
			wrap = |</a></div>
			file.import = uploads/pics/
			file.import.field = image
		}
					
		30 = HTML
		30.value.field = image_link
		30.value.wrap = <a href = "|" class = "bildtext"><div id = "text
					
		31 = HTML
		31.value.data = cObj:parentRecordNumber

		40 = TEXT
		40 {
			field = imagecaption
			wrap = ">|</div></a>
		}
	}
}

Funktioniert im Gegensatz zur alles-in-einem-Version mit beliebig vielen Bildern. cObj:parentRecordNumber zählt ab 1 aufwärts.

Danke für die Hilfe, hätte ansonsten wohl aufgegeben.