Zum Inhalt springen

Trenner, aber wie???

Erstellt am 1. März 2007 · 2 Antworten · letzte Antwort am 1. März 2007

Tags: Frage

framemaster ·

Hallo!

Ich habe mehrere FCEs gebastelt und würde dem lieben Kunden gern die Möglichkeit geben, irgendwie einen "Trenner davor" und einen "Trenner danach" einzufügen. Leider habe ich von XML keine Ahnung.
Wie bekomme ich es hin, dass über eine einfache Checkbox oder ein Select ein hr eingefügt wird? Das würde mir schon reichen, verschiedene Stile brauche ich nicht.

Habe im www Folgendes gefunden:

   <field_trenner type="array">
                 <tx_templavoila type="array">
                     <title>Sollen Trenner zwischen den Elementen  
sein?</title>
                     <etype>select</etype>

                 </tx_templavoila>
                 <tceforms type="array">
                     <config type="array">
                         <type>select</type>
                         <items type="array">
                             <numindex index="0" type="array">
                                 <numindex index="0">Nein</numindex>
                                 <numindex index="1">nein</numindex>
                             </numindex>
				<numindex index="1" type="array">
                                 <numindex index="0">Weisse Trenner</ 
numindex>
                                 <numindex index="1">weiss</numindex>
                             </numindex>
                         </items>
                         <default>0</default>
                     </config>
                     <label>Sollen Trenner zwischen den Elementen  
sein?</label>
                 </tceforms>
             </field_trenner>

Das Ganze habe ich an ein div gemappt. Wählt man jetzt etwas aus, wird innerhalb des divs "weiss" ausgegeben. Wie kann ich das Script so verändern, dass z.B. nur ein <hr /> ausgegeben wird, wenn ich auch einen Trenner haben will. Geht das, oder gibt es einfachere Wege?

Oder kann man den Wert über TypoScript abfragen, und falls der Wert "weiss" ist, entsprechendes ausgeben?

beelzebub ·

Eine etwas merkwürdige Löung vlt. : Ein Fce mit einem clear.gif basteln
B.z.w FCE mit image und den Kunden das clear.gif wählen lassen.

framemaster ·

Hehe, ja, warum einfach, wenn's auch schwer geht? Bin halt noch Anfänger und muss noch so einiges ausloten bzw. habe keinen Plan, wie man es normalerweise macht...

Ich habe aber inzwischen eine Lösung gefunden. So ist es also möglich, in jedes FCE zwei Select-Boxen zu integrieren für "Linie davor" und "Linie danach", jeweils in unterschiedlichen Styles, die man dann per css konfigurieren kann.

Mmh, ich versuche das mal zu erklären:

1. Man nehme sich sein Template und bastelt einfach vor und hinter den Content je ein <span></span>, damit man es mappen kann.

2. Beim mappen legt man sich 2 zusätzliche Felder an: "Linie davor:" und "Linie danach:". Der Typ sollte jeweils TypoScriptObjectPath sein. Hier nicht die Benennung vergessen. In diesem Fall "field_divider_before" und "field_divider_after".

3. Die Dinger werden auf die leeren spans gemapt - mit "Outer". Die Span-Tags brauchen wir nicht.

4. Nun geht's in die DS. Es sollen also später im FCE im Endeffekt 2 Selectboxen mit Auswahlmöglichkeiten zu sehen sein. So kann der liebe Kunde in jedem FCE zwischen verschiedenen Trennern wählen (wenn er's denn braucht). Natürlich kann man später mit CSS auch anderen Firlefanz einbauen.
Hier mein Code für's DS:

			<field_divider_before type="array">
				<tx_templavoila type="array">
					<title>Trenner davor:</title>
					<sample_data type="array">
						<numIndex index="0">Trenner davor</numIndex>
					</sample_data>
					<eType>select</eType>
					<eType>TypoScriptObject</eType>
					<TypoScriptObjPath>lib.divider_before</TypoScriptObjPath>
				</tx_templavoila>
				<TCEforms type="array">
					<config type="array">
						<type>select</type>
						<items type="array">
							<numIndex index="0" type="array">
								<numIndex index="0">nein</numIndex>
								<numIndex index="1">nein</numIndex>
							</numIndex>
							<numIndex index="1" type="array">
								<numIndex index="0">Trenner 1</numIndex>
								<numIndex index="1">trenner1</numIndex>
							</numIndex>
							<numIndex index="2" type="array">
								<numIndex index="0">Trenner 2</numIndex>
								<numIndex index="1">trenner2</numIndex>
							</numIndex>
							<numIndex index="3" type="array">
								<numIndex index="0">Trenner 3</numIndex>
								<numIndex index="1">trenner3</numIndex>
							</numIndex>
						</items>
						<default>nein</default>
					</config>
					<label>Trenner davor:</label>
				</TCEforms>
			</field_divider_before>
			<field_divider_after type="array">
				<tx_templavoila type="array">
					<title>Trenner danach:</title>
					<sample_data type="array">
						<numIndex index="0">Trenner danach</numIndex>
					</sample_data>
					<eType>select</eType>
					<eType>TypoScriptObject</eType>
					<TypoScriptObjPath>lib.divider_after</TypoScriptObjPath>
				</tx_templavoila>
				<TCEforms type="array">
					<config type="array">
						<type>select</type>
						<items type="array">
							<numIndex index="0" type="array">
								<numIndex index="0">nein</numIndex>
								<numIndex index="1">nein</numIndex>
							</numIndex>
							<numIndex index="1" type="array">
								<numIndex index="0">Trenner 1</numIndex>
								<numIndex index="1">trenner1</numIndex>
							</numIndex>
							<numIndex index="2" type="array">
								<numIndex index="0">Trenner 2</numIndex>
								<numIndex index="1">trenner2</numIndex>
							</numIndex>
							<numIndex index="3" type="array">
								<numIndex index="0">Trenner 3</numIndex>
								<numIndex index="1">trenner3</numIndex>
							</numIndex>
						</items>
						<default>nein</default>
					</config>
					<label>Trenner danach:</label>
				</TCEforms>
			</field_divider_after>

Man sieht hier, dass wir später per TypoScript darauf zugreifen können (z.B. field_divider_before)

5. Im Page-Template kann man nun mit TypoScript die beiden Felder "field_divider_before" und "field_divider_after" ansprechen und manipulieren. Da wir die Dinger mit Outer gemappt haben, kann man also alles mögliche reinschreiben, bzw wrappen. Ich will dem Kunden hier mehrere Möglichkeiten (oder Styles) bieten und verwende den Input der Selectboxen für CSS-Klassen.

Hier mein TS:

## cObject divider_before
lib.divider_before = TEXT
lib.divider_before{
	stdWrap.insertData = 1
	stdWrap.wrap = |<hr class="{field:field_divider_before}">
}

## cObject divider_after
lib.divider_after = TEXT
lib.divider_after{
	stdWrap.insertData = 1
	stdWrap.wrap = |<hr class="{field:field_divider_after}">
}

Im Code wird man also sowas wie "<hr class="trenner1"> oder für den blank-hr "<hr class="nein">" bekommen. Wie man den eigentlich überflüssigen "<hr class="nein"> dazu bekommt, nicht ausgegeben zu werden weiß ich nicht. Dazu müsste man irgendwie im TS eine Art if-Abfrage machen, dazu bin ich leider zu doof.

6. Man nehme sich sein CSS-Stylesheet. Nun kann man hier seine Trenner graphisch beackern. Vorzugsweise nimmt man für den Blank-Trenner das hier:
hr.nein { display: none; }

Die anderen Trenner kann man ja einstellen, wie man lustig ist, oder Bilder einbinden usw... Wenn Boxen verwendet werden, nicht das floaten vergessen;-)

So, ich hoffe, das ist ungefähr nachvollziehbar. Der Weg ist sicherlich umständlich, funzt aber, und der Kunde freut sich vielleicht.

Vielleicht hat jemand noch einen Plan, wie man das verbessern könnte, so dass der überflüssige hr-Tag mit class="nein" von Anfang an nicht ausgegeben wird. Gibt's sowas wie if-Abfragen in TS?

Anmerkung: Ihr seht, ich bin Anfänger in TV. Keinen Plan von XML und außerdem eigentlich Grafiker. Wenn man das verbessern kann, dann würde ich mich über jede Stellungnahme freuen. Ansonsten hilft es ja vielleicht jemandem. Ich habe mir im www einen Wolf gesucht...

Ach ja, auf diese Weise kann man sich sicherlich auch ein einziges FCE namens "Trenner" bauen und der Kunde kann hier seine Trenner-Styles auswählen. So muss man diesen Kram nicht in jedes FCE umständlich einfriemeln.