---
title: "Bild-Wahl mit Checkboxen"
url: "https://www.typo3.net/d/110943-bild-wahl-mit-checkboxen"
source: "typo3.net"
tags: ["TYPO3","TypoScript","Bilder","Frage"]
created: "2012-06-12"
last_reply: "2012-06-20"
replies: 5
solved: false
page: 1
pages: 1
lang: "de"
---

# Bild-Wahl mit Checkboxen

TYPO3 › TypoScript · 5 Antworten · gestartet 2012-06-12

## Eröffnungsbeitrag

**chrickenh** · 2012-06-12 · [Beitrag #1](https://www.typo3.net/d/110943-bild-wahl-mit-checkboxen/1)

Hallo,
ich habe hier ein Problem, weil ich zum ersten Mal mit If-Abfragen arbeiten muss und mir das Konzept nicht so recht einleuchtet.

Ich habe mit Templavoila ein FCE eingerichtet, der erstmal nur eine Checkbox beinhaltet sowie ein Element mit Element Preset*Typoscript object path*.
Wenn jetzt die Checkbox geklickt wird, dann soll ein Bild angezeigt werden.
Wenn sie nicht geklickt wird, dann ein anderes.

Mein TS ist bis jetzt nur Experimentierfeld, da komme ich nicht vorwärts.

```typoscript
## Medaillen
lib.field_htmlbild = IMAGE
lib.field_htmlbild {
	file = fileadmin/templates/medals/ida_off.jpg
	file {
		override = fileadmin/templates/medals/ida.jpg
		override.if {
    			value = Wert1
    			equals = Wert1
    		}
	}
   	
}
```

Die Idee war, das Objekt *lib.field_htmlbild* mit einem Bild zu füllen. Und falls das DB-Feld für die Checkbox *true* ist, das Bild mit einem anderen zu überschreiben.

Hoffentlich kann mir jemand helfen
Lieben Gruß
Chrickenh

Dies ist mein Datastructure-XML, vielleicht hilft es ja:

```html
<?xml version="1.0" encoding="iso-8859-1" standalone="yes" ?>
<T3DataStructure>
	<meta type="array">
		<langDisable>1</langDisable>
	</meta>
	<ROOT type="array">
		<tx_templavoila type="array">
			<title>ROOT</title>
			<description>Select the HTML element on the page which you want to be the overall container element for the template.</description>
		</tx_templavoila>
		<type>array</type>
		<el type="array">
			<field_htmlbadge type="array">
				<tx_templavoila type="array">
					<title>HTML-check</title>
					<sample_data type="array">
						<numIndex index="0"></numIndex>
					</sample_data>
					<eType>check</eType>
					<TypoScript></TypoScript>
					<proc type="array">
						<int>0</int>
						<HSC>0</HSC>
						<stdWrap></stdWrap>
					</proc>
					<preview></preview>
				</tx_templavoila>
				<TCEforms type="array">
					<label>HTML-Badge</label>
					<config type="array">
						<type>check</type>
						<default type="integer">0</default>
					</config>
				</TCEforms>
			</field_htmlbadge>
			<field_htmlbild type="array">
				<tx_templavoila type="array">
					<title>htmlbild</title>
					<sample_data type="array">
						<numIndex index="0"></numIndex>
					</sample_data>
					<eType>TypoScriptObject</eType>
					<proc type="array">
						<int>0</int>
						<HSC>0</HSC>
						<stdWrap></stdWrap>
					</proc>
					<preview></preview>
					<TypoScriptObjPath>lib.field_htmlbild</TypoScriptObjPath>
				</tx_templavoila>
			</field_htmlbild>
		</el>
	</ROOT>
</T3DataStructure>
```

## Antworten

### [#2](https://www.typo3.net/d/110943-bild-wahl-mit-checkboxen/2) · Julian.​Hofmann · 2012-06-13

Hallo.

die if-Abfragen sind tricky, aber mir scheint doch, dass Du es verstanden hast :-)

Problem dürfte eher sein, dass das override nicht greift. Kann das sein? denn *file* ist im IMAGE-Objekt vom Typ imgResource, welche IMHO keine stdWrap-Eigenschaft hat.

Viele Grüße
Julian

### [#3](https://www.typo3.net/d/110943-bild-wahl-mit-checkboxen/3) · igorshmigor · 2012-06-13

Ich denke Julian hat recht.
Alternativ könntest Du es vielleicht in etwa so lösen:

```typoscript
## Medaillen
lib.field_htmlbild = COA
lib.field_htmlbild{
	10=IMAGE
	10 {
		file = fileadmin/templates/medals/ida.jpg
		stdWrap.if {
    			value = Wert1
    			equals = Wert1
    		}
	}
	20<.10
	20.file = fileadmin/templates/medals/ida_off.jpg
	20.stdWrap.if.negate=1
}
```

### [#4](https://www.typo3.net/d/110943-bild-wahl-mit-checkboxen/4) · Julian.​Hofmann · 2012-06-13

Lieber ohne das "stdWrap.".

Denn bei Deinem TS wird das IMAGE-Objekt beide Male erzeugt (und ggf. via GIFBUILDER odgl. ist auch einiges zu tun), um *danach* via *stdWrap* für einen Fall verworfen zu werden.
Die reine *if*-Eigenschaft wird hingegen **vor** dem Verarbeiten geprüft, d.h. es findet nur eine Verarbeitung statt, wenn das Objekt auch wirklich Verwendung finden wird.

```php
class tslib_content_Image extends tslib_content_Abstract {

	/**
	 * Rendering the cObject, IMAGE
	 *
	 * @param	array		Array of TypoScript properties
	 * @return	string		Output
	 */
	public function render($conf = array()) {
		if ($this->cObj->checkIf($conf['if.'])) {
			$theValue = $this->cObj->cImage($conf['file'], $conf);
			if (isset($conf['stdWrap.'])) {
				$theValue = $this->cObj->stdWrap($theValue, $conf['stdWrap.']);
			}
			return $theValue;
		}
	}

}
```

### [#5](https://www.typo3.net/d/110943-bild-wahl-mit-checkboxen/5) · igorshmigor · 2012-06-13

Ach. Das hat mir meine O'Reilly TypoScript kurz&gut-Referenz gar nicht verraten, dass "if" auch direkt auf IMAGE angewandt werden kann. Vielleicht war das früher nicht so? Bei irgendeiner Version wurden ja viele Objekte nachträglich mit stdWrap-Funktionalitäten ausgestattet.

### [#6](https://www.typo3.net/d/110943-bild-wahl-mit-checkboxen/6) · chrickenh · 2012-06-20

Hallo und vielen Dank für Eure Antworten.
Ich habe es jetzt ähnlich wie igorshmigor gelöst.
Damit wird zwar auch das IMAGE-Objekt zweimal erzeugt, aber im Rahmen des Projektes ist das kein Problem.
Es gibt maximal 16 User, die gleichzeitig darauf zugreifen. Also kein Thema.

Vielen Dank für Eure Hilfe
Chrickenh

```typoscript
## Medaillen
lib.field_html1_bild = COA
lib.field_html1_bild {
	5 = IMAGE
	5 {
	   file = fileadmin/templates/medals/html1.jpg
	   file.width = 150
	   file.height = 150
	}
	5.if.isTrue.field = field_html1_check
   	
	10 = IMAGE
	10 {
	   file = fileadmin/templates/medals/html1_off.jpg
	   file.width = 150
	   file.height = 150
	}
	10.if.isFalse.field = field_html1_check
   	
}
```

---

Quelle: „Bild-Wahl mit Checkboxen“, typo3.net, https://www.typo3.net/d/110943-bild-wahl-mit-checkboxen
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
