Hallo,
verzweifle grade an einer wahrscheinlich trivialen Aufgabe.
durch die Anweisung im TS
tt_content.div.value = <hr class="trennlinie" />
wird bei mir nach jedem Datensatz eine Trennlinie eingefügt, was auch prima funzt.
Jetzt will ich aber bei bestimmten Datensätzen (Content Elementen) das Einfügen dieser Trennlinie verhindern. Das soll aber immer erst beim Anlegen des jeweiligen Datensatzes vorgenommen werden können. Also standardmäßig ist die Linie drin, in bestimmten Fällen wenn gewünscht, kann mans beim Anlegen des Contents nicht einfügen.
Mir würde auch schon reichen, wenn ich einem Contentelement durch setzen einer bestimmten Option den <hr /> dann per CSS zu fassen bekäme, dann könnt ich den einfach ausblenden z.B.
<div class="KlasseFuerSpeziellenDatensatz">
bla bla
<hr class="trennlinie" />
</div>
dann könnte ichs ja einfach mit
.KlasseFuerSpeziellenDatensatz hr { display: none; }
ausblenden.
Besser wäre natürlich dass das hr dort erst gar nicht auftaucht.
Vielleicht kann mir ja jemand auf die Sprünge helfen.
Hallo.
Die geeignete Option für Deinen Wunsch dürfte die Einstellung "Frame" der Contentelemente sein. Diese bewirkt, dass ein Container außenherum gepackt wird, den Du dann via CSS unterschiedlich formatieren kannst (z.B. border-bottom:... für eine Linie unterhalb).
Details erklärt Steffen schön sk-typo3 - Neue Rahmen für Content-Elemente
Viele Grüße
Julian
hmmm... aber ich muss dem Datensatz noch irgenwie eine Klasse mitgeben können, sonst ist es ja wieder bei jedem gleich.
Will ja dass nur bei bestimmten Datensätzen die Linie verschwindet.
? #angry#
Ja, genau den Fall erklärt Steffen ja. Du Wählst via "Frame" ein Layout für das Contentelement aus. Dafür kann Du auch eigene Werte fürs Backend definieren (erster Teil seines Beispiel-TS).
Damit der Rahmen dann auch entsprechend formatierbar ist, wird in ein div drumrumgelegt mit CSS-Klasse (wie Steffen im zweiten Teil des TS zeigt (da fehlen paar spitze Klammer bei den divs)).
Ergebnis: Wenn Du als Frame "mein neuer Rahmen" wählst, dann ist um das Contentelement ein div mit Klasse mein-rahmen, wenn Du Frame auf default lässt, ist kein div drumherum.
o.k. danke habs geschnallt, funzt auch, nur bekomms immer noch nicht zu fassen, weil
tt_content.div.value = <hr class="trennlinie" />
das <hr /> ausserhalb des neuen Containers positioniert. Wie schaffe ich es nun, dass die hr innerhalb des Framecontainers reinkommt?
Gruss
Steffen baut mit
tt_content.stdWrap.innerWrap.cObject = CASE
tt_content.stdWrap.innerWrap.cObject {
key.field = section_frame
100 = TEXT
100.value = <div class="mein-rahmen">|</div>
}
ein Div um das Contentelement. Dabei ist das Pipe-Symbol der Trenner für vor/nach dem Element.
Du willst nach dem Element ein <hr> haben. Der Code wäre dann also
tt_content.stdWrap.innerWrap.cObject = CASE
tt_content.stdWrap.innerWrap.cObject {
key.field = section_frame
100 = TEXT
100.value = |<hr class="trennlinie" />
}
Also vor dem Pipe-Symbol nix, dahinter Dein HTML-Code
ja, schon klar, aber so meine ich das nicht.
Im Moment wird bei jedem Content-Element durch die Anweisung
tt_content.div.value = <hr class="trennlinie" />
eine Trennlinie nach dem Content-Element eingefügt und das ist auch so gewollt.
den eignen Rahmen brauche ich nur für ganz wenige spezielle Fälle und damit keine Trennlinie angezeigt wird muss der hr Tag innerhalb des Rahmen div´s kommen also so:
<div class="spezialFrame">
Inhalt des Content-Elements .....
<hr class="trennlinie" />
</div>
Im Moment kommt aber ein Content mit meinem neuen Rahmen so raus, dass ich ihn eben mit CSS nicht zu fassen kriege und dementsprechend verstecken kann.
<div class="spezialFrame">
Inhalt des Content-Elements .....
</div>
<hr class="trennlinie" />
Hoffe es ist verständlich, was ich meine
Danke und Gruss
Ahh, ok. Dann brauchst etwas mehr.
Die Unterschreidung soll nun ja anhand von "Frame" erfolgen. Im Default-Fall (section_frame=0) soll die Trennlinie da sein, im Ausnahmefall (section_frame=100) nicht.
Dann könnt Dein TS sein:
TCEFORM.tt_content.section_frame {
removeItems = 1,5,6,10,11,12,20,21
}
# neuen Rahmen hinzufügen
TCEFORM.tt_content.section_frame {
addItems.100 = ohne Trennlinie danach
}
tt_content.stdWrap.innerWrap.cObject = CASE
tt_content.stdWrap.innerWrap.cObject {
key.field = section_frame
0 = TEXT
0.value = |<hr class="trennlinie" />
100 = TEXT
100.value = |
}
Das div und das tt_content.div.value = <hr class="trennlinie" /> könntest Du Dir dann sparen.
ne, funzt leider auch nicht.
da kommt gar keine Trennlinie mehr wenn ich das so mache.
Weiss jetzt nicht recht, würde dann in dem Fall der <hr /> immer kommen, wenn kein Rahmen im Content-Element ausgewählt ist? Der sollt nämlich schon automatisch erscheinen, nur eben dann nicht, wenn man den selbst definierten Frame verwendet.
Scheint aber, als ob das TS auf 0 nicht anspricht.
mano, voll bescheuert, hab aus dem innerWrap einen outerWrap gemacht schon ist der div-container aussen rum 😃
Danke ncohmal
Ups, könnte sein, dass der default-Wert nicht via 0 sondern via default angesprochen wird. Also mit
default = TEXT
default.value = |<hr class="trennlinie" />
Eigentlich sollte Ziel meines Schnipsels sein, dass bei keiner besonderen Auswahl des Frames (also Defaultwert) die Linie angehängt wird, und bei Auswahl des definierten Frames keine mehr.