Zum Inhalt springen

Optionale Felder in FCE?

Erstellt am 17. August 2007 · 9 Antworten · letzte Antwort am 22. August 2007

Tags: Frage

Eazy ·

Moin, moin,

ich möchte ein FCE anlegen, bei dem der Redakteur die Möglichkeit hat, ein Feld anzuzeigen oder nicht. Beispiel: Ein weiterführender Link am Fuss des FCE soll ausgeblendet werden können. Dabei ist es wichtig, dass das gesamte <a> Tag aus dem ausgegebenen HTML-Code verschwindet.

Am besten wäre es natürlich, wenn der Link nicht angezeigt wird, wenn das entsprechende Feld im Backend leer ist.

Danke für jede Hilfe!

Beste Grüße,

Felix Eggbert

daniz78 ·

Hi Eazy,

als erstes solltest Du Dein HTML-Tag "outer"-mappen. In Deinem Fall also das <a>
Dann musst Du über typolink den Link um Dein Element setzen und mittels required = 1 abfragen ob der Link gesetzt wurde.

Hier mal ein einfaches Beispiel:

10 = TEXT
10.current = 1
10.required = 1
10.stdWrap.typolink.parameter.current = 1

Gruß, Daniz

Eazy ·

Moin Daniz,

ok cool...so ungefähr glaube ich, weiß ich, was du meinst...aber gib mir noch n kleinen Tipp, wie ich das umsetze...

Muss ich in TV zwei Felder für den Link angeben, wo ich im einen die Link-Adresse (oder eben nicht) angebe und im anderen die Beschriftung, also was zwischen <a> und </a> steht? Und wenn ja, welchem verpasse ich im TV-XML deinen Code?

Besten Dank und Gruß,

Eazy

daniz78 ·

Moin moin,

also ich lege einen link immer mit 3 Feldern an:

<a href="Linkziel" titel="Linktitel">Linktext</a>

Gemappt wird das ganze wie folgt:

Linkziel: Attribute (a /href) als link / inner
Linktitel: Attribute (a / titel) als input / inner
Linktext: Element (a) als input / inner

Wenn der Link nur erscheinen soll, wenn auch wirklich einer gesetzt ist, dann mappe ich wie folgt:

Linkziel: [Not mapped] als link
Linktitel: [Not mapped] als input
Linktext: Element (a) als input / outer

In der XML wird dann alles im Linktext wie folgt zusammengesetzt:

10 = TEXT
10.current = 1
10.required = 1
10.stdWrap.typolink.parameter.field = Linkziel
10.stdWrap.typolink.title.field = Linktitel // Linktext
10.stdWrap.typolink.target = such Dir was aus...

Gruß, Daniz

Eazy ·

Geil! Sehr schön und elegant!

Das einzige Ding ist jetzt nur noch, dass das fertige A-Tag mit Sondertags für die Sonderzeichen ausgibt, also etwa (habe leerzeichen nach den & gesetzt, damit man sieht, was ich meine):

& lt;a href=& quot;index.php?id=40& quot; title=& quot;Dieser Link führt zu Seite 40& quot; target=& quot;_self& quot; & gt;Link zu 40& lt;/a& gt;

statt...

<a href="index.php?id=40" title="Dieser Link führt zu Seite 40" target="_self">Link zu 40</a>

Meine mich zu erinnern, dass es da irgendwo nen Hebel gibt, den man für das korrekte Rendering umlegen muss...ne Idee?

Gruß,

Eazy Eggbert

daniz78 ·

Hi Eazy,

ich war mal wieder in Gedanken und hatte etwas vergessen...
...der Hebel lautet: CDATA

So sollte es dann ausschauen:

<TypoScript>
<![CDATA[
10 = TEXT
...siehe unten...
]]>
</TypoScript>

Gruß, Daniz

Eazy ·

Hm...ja, ich erinnere mich...irgendwie macht er das aber trotzdem nicht...hier mal der Abschnitt von Linktext:

			<field_linktext type="array">
				<tx_templavoila type="array">
					<title>Link-Text</title>
					<sample_data type="array">
						<numIndex index="0"></numIndex>
					</sample_data>
					<eType>input</eType>
                                <TypoScript>
<![CDATA[

10 = TEXT
10.current = 1
10.required = 1
10.stdWrap.typolink.parameter.field = field_linkziel
10.stdWrap.typolink.title.field = field_linktitel // field_linktext
10.stdWrap.typolink.target = _blank

]]>
                                </TypoScript>
					<proc type="array">
						<HSC type="integer">1</HSC>
					</proc>

				</tx_templavoila>
				<TCEforms type="array">
					<config type="array">
						<type>input</type>
						<size>48</size>
						<eval>trim</eval>
					</config>
					<label>Link-Text</label>
				</TCEforms>
			</field_linktext>

Cache BE und FE alles gecleart...

daniz78 ·

Setz den Wert von HSC mal auf 0, dann klappt es!

<proc type="array">
    <HSC type="integer">0</HSC>
</proc>

Sonst werden die Zeichen in HTML umgewandelt 😉

Eazy ·

Hammer! Du hast es drauf! Hat mir auf jeden Fall auch geholfen, das ganze n bischn besser zu verstehen! Vielen Dank!

Habe im "futuristic template building" gelesen, dass HSC=1 gegen HTML- und XSS-attacks sein soll. Sind da "attacks" vom Redakteur gemeint oder was?

daniz78 ·

Also wenn Du keine Möglichkeit bietest, vom frontend aus Informationen in Deinem Typo3-System zu speichern, dann beschränken sich die Angriffe tatsächlich nur auf Backend-Redakteure...

Angenommen Du hättest jetzt aber ein Kontaktformular, ein Gästebuch oder ein Forum, dann können potentielle Angreifer auch HTML-Code eingeben (z.B. hallo<script>alert("test");</script>), statt einem normalen Kommentar.

Statt diesem harmlosen Skript, könnte dann Code eingeschleust werden, der Schaden anrichtet...

Durch HTMLSpecialChars (HSC = 1) werden (wie Du ja bereits gemerkt hast) die < und > durch "& lt;" bzw. "& gt;" ersetzt und somit als normale Zeichen interpretiert. Der schadhafte Code wird nicht ausgeführt.