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
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
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
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
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
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
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...
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 😉
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?
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.