Hallo zusammen,
ich habe da ein kleines Problemchen und hoffe mir kann jemand auf die Sprünge helfen. Arbeite noch nicht so lange mit Typo3 und vermute mal das mir vielleicht nur ein Befehl fehlt der mir als Anfänger noch nicht so geläufig ist.
Ich habe auf meiner Seite eine rechte Spalte aus der ich den Inhalt auslese. Der Inhalt soll in Blöcken dargestellt werden. Bisher lese ich den Inhalt wie folgt aus:
subparts.RIGHT_CONTENT = CONTENT
subparts.RIGHT_CONTENT {
table = tt_content
select.orderBY = sorting
select.where = ColPos = 2
}
Jetzt möchte ich das Feld Header mit <div class="info_block_ueberschrift">|</div> und das Feld Bodytext mit <div class="info_block">|</div> wrapen.
Ich hab schon ein paar Sachen ausprobiert. Aber das hat leider nicht geklappt.
Ich hoffe mir kann einer nen Schubs in die richtige Richtung geben.
Grüße
Heike
Habe es jetzt nach einigem rumm probieren und suchen selber heraus gefunden.
subparts.RIGHT_CONTENT = CONTENT
subparts.RIGHT_CONTENT {
table = tt_content
select.orderBY = sorting
select.where = ColPos = 2
renderObj = COA
renderObj{
10 = TEXT
10.field = header
10.wrap = <div class="info_block_ueberschrift">|</div>
20 = TEXT
20.field = bodytext
20.wrap = <div class="info_block">|</div>
}
}
Nur zur Info:
Damit werden vermutlich Deine Content-Elemente Text mit Bild etc. nicht mehr funktionieren. Bei reinen Text Elemente geht's aber auch so...
Gruß
Michael
Hmmm... das ist natürlich etwas ärgerlich. Ich hab jetzt mal versucht das ganze in eine CASE-Abfrage zu packen. Aber irgendwie funktioniert das nicht. Kann man das so machen wie ich das gemacht hab, oder ist das ein total falscher Ansatz?
renderObj = CASE
renderObj {
key.field = CType
text = COA
text {
10 = TEXT
10 = header
10.wrap = <div class="info_block_ueberschrift">|</div>
20 = TEXT
20 = bodytext
20.wrap = <div class="info_block">|</div>
}
textpic = COA
textpic {
10 = IMGTEXT
10 = header
10.wrap = <div class="info_block_ueberschrift">|</div>
20 = IMGTEXT
20 = bodytext
20.wrap = <div class="info_block">|</div>
}
image = COA
image {
10 = IMAGE
10 = header
10.wrap = <div class="info_block_ueberschrift">|</div>
20 = IMAGE
20 = bodytext
20.wrap = <div class="info_block">|</div>
}
default = COA
default {
10 = TEXT
10 = header
10.wrap = <div class="info_block_ueberschrift">|</div>
20 = TEXT
20 = bodytext
20.wrap = <div class="info_block">|</div>
}
}
Das könnte so etwas kompliziert werden, da Du ja auch noch Dinge wie Header-Layout, Positionierung des Bildes etc. berücksichtigen müsstest.
Falls Du immer mit einer Überschrift arbeitest, könntest Du die Überschrift z.B. so wrappen (ungetestet):
lib.stdheader.10 = <div class="info_block_ueberschrift">|</div>
|<div class="info_block">|
Das schließende Div für Deinen Body-Bereich integrierst Du über den section frame "Rahmen" bzw. "Frame"
tt_content.stdWrap.innerWrap2 >
tt_content.stdWrap.innerWrap2 = |</div>
Dafür gibt es sicher noch andere Lösungen. Aber damit funktionieren wenigstens die T3 internen Content-Elemente weiterhin wie vorgesehen.
Gruß
Michael
Das klappt leider nicht.. aber ist mit sicherheit auch noch falsch eingebunden
subparts.RIGHT_CONTENT = CONTENT
subparts.RIGHT_CONTENT {
table = tt_content
select.orderBY = sorting
select.where = ColPos = 2
lib.stdheader.10 = <div class="info_block_ueberschrift">|</div>|<div class="info_block">|
tt_content.stdWrap.innerWrap2 >
tt_content.stdWrap.innerWrap2 = |</div>
}
hallo Heike,
Es gibt fertige includes bei typo3.
Wenn du bei deiner Root-Seite auf template gehst oben in der selectbox dann info/modify auswählst auf "click here to edit whole record" klickst kannst du irgendwo statics includen. Ich würde entweder css_styled_content oder content(default) einbinden.
Dann wird nämlich ein fertiger Code eingefügt den du dann im objektbrowser anpassen kannst wie du willst. (stichwort tt_content). Du wirst sehen in tt_content ist genau das CASE das du dir zusammengeschrieben hast bereits fertig und noch vieles mehr.
dazu musst du aber dein renderObj wieder auskommentieren / rauslöschen.
liebe Grüße
Robert
Also ich geh mal schwer davon aus, dass hier css_styled_content eingesetzt wird. Ist ja quasi Standard. Allerdings ist der Fall mit eigenem Header und separaten Body wrap schon ein Spezial-Fall den T3 nicht von Haus aus bietet.
Versuchs mal so:
subparts.RIGHT_CONTENT < styles.content.getRight
lib.stdheader.10.wrap = <div class="info_block_ueberschrift">|</div><div class="info_block">
tt_content.stdWrap.innerWrap2 >
tt_content.stdWrap.innerWrap2 = |</div>
Pro wrap nur eine Pipe "|" verwenden!
Wir überhaupt was davon bereits im Quelltext angezeigt?
Content müsste so passen, beim Header bin ich mir nicht ganz sicher...
Gruß
Michael
Guten Morgen zusammen,
ja css_styled_content ist included.
der code von Michael hilft leider auch nicht weiter.
Wäre es überhaupt möglich das Layout von "LEFT" und "RIGHT" vernünftig zu wrapen?
Ich möchte im "LEFT_CONTENT" ein Layout für meine News haben und im "RIGHT_CONTENT" möchte ich ein anderes Layout für Blöcke haben in diesen ich dann ganz normal Text, Text mit Bild etc. verwenden kann.
subparts.LEFT_CONTENT = CONTENT
subparts.LEFT_CONTENT {
table = tt_content
select.orderBY = sorting
select.where = ColPos = 0
}
subparts.RIGHT_CONTENT = CONTENT
subparts.RIGHT_CONTENT {
table = tt_content
select.orderBY = sorting
select.where = ColPos = 2
}
der code von Michael hilft leider auch nicht weiter
Geht's denn etwas präziser? Was geht nicht?
Ja das geht, aber das hat mit dem ursprünglichen Thema überhaupt nichts mehr zu tun.
Du hast Du in Deinem HTML Template sicher sowas in der Art:
<div id="content-left">...DeinSubpart...</div>
<div id="content-right">...DeinSubpart...</div>
Damit kannst Du doch per CSS wunderbar vererben:
z.B.
#content-left .deineClass { DeineAnweisung }
#content-right .deineClass { DeineAndereAnweisung }
Gruß
Michael
Wenn ich den Code eingebe von Oben dann bekomme ich quasi gar kein Layout. Also nur den Standard mit einer riesigen Überschrift und dann in relativ normaler Größe den Text drunter. Also auch keine boxen um den Text drumm herum.
Das mit der CSS habe ich ja auch so. Aber das Problem ist eben das in dem "RIGHT_CONTENT" Subpart die einzelnen Inhaltselemente eben als Blöcke dargestellt werden sollen. Also nicht die komplette rechte Spalte.
Wenn ich den Code eingebe von Oben dann bekomme ich quasi gar kein Layout. Also nur den Standard mit einer riesigen Überschrift und dann in relativ normaler Größe den Text drunter. Also auch keine boxen um den Text drumm herum.
Also eine "riesige Überschrift" kommt doch sicher nicht eindach so ;-) Das sieht mir schwer nach ner h1 oder h2 ohne CSS Formatierung aus.
Was steht denn dort im Quelltext. Poste das doch bitte mal. Vielleicht hilft das weiter...
Gruß
Michael
<div id="RIGHT_CONTENT">
<!-- CONTENT ELEMENT, uid:59/text [begin] -->
<a id="c59"></a>
<!-- Header: [begin] -->
<div class="csc-header csc-header-n1"><h1 class="csc-firstHeader">Test</h1><br /><img src="clear.gif" width="1" height="5" border="0" class="spacer-gif" alt="" title="" /><br /></div>
<!-- Header: [end] -->
<!-- Text: [begin] -->
<p class="bodytext">Test rechts</p>
<!-- Text: [end] -->
<!-- CONTENT ELEMENT, uid:59/text [end] -->
<!-- CONTENT ELEMENT, uid:61/text [begin] -->
<a id="c61"></a>
<!-- Header: [begin] -->
<div class="csc-header csc-header-n2"><h1>Zweiter Test</h1><br /><img src="clear.gif" width="1" height="5" border="0" class="spacer-gif" alt="" title="" /><br /></div>
<!-- Header: [end] -->
<!-- Text: [begin] -->
<p class="bodytext">Zweiter Test für rechte Spalte</p>
<!-- Text: [end] -->
<!-- CONTENT ELEMENT, uid:61/text [end] -->
</div>
Das erscheint dann im Quelltext. Die Klassen sind nicht von mir. Mein Template enthält nur folgendes:
<div id="RIGHT_CONTENT">
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,
no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet,
consetetur sadipscing.
</div>
Der erst Anweisung hat in der Tat nicht gegriffen.
Hab das Ganze jetzt mal selbst getestet.
So würde es gehen:
# Content header:
lib.stdheader = COA
lib.stdheader {
2 >
3 >
5 >
10.1.fontTag = <h2>|</h2><div class="info_block">
stdWrap.dataWrap = |
}
# Content Bodytext
tt_content.stdWrap.wrap = |</div>
Du kannst die Überschrift ruhig als h2 lassen und dies dann per CSS stylen.
Wichtig: Bei dieser Lösung benötigst Du immer eine Überschrift je Content-Element / Box.
Gruß
Michael
subparts.RIGHT_CONTENT < styles.content.getRight
# Content header:
lib.stdheader = COA
lib.stdheader {
2 >
3 >
5 >
10.1.fontTag = <h2>|</h2><div class="info_block">
stdWrap.dataWrap = |
}
# Content Bodytext
tt_content.stdWrap.wrap = |</div>
So hab ich das nun eingefügt. Und immer noch das gleiche Ergebnis wie oben.
Dann läuft irgendetwas anderes bei Dir im System nicht rund.
Mich hat schon gewundert, dass bei Dir die alten clear.gifs im Quell-Code drin stehen.
Getestet in T3 4.1.7 und 4.2.3.
Nur rein css_styled_content ohne irgendwelchen Automaketemplate-Mist.
In dieser Konstellation klappt es so auf diesen Weg sicher ;-)
Gruß
Michael
Wo können die clear.gifs denn her kommen? Ich habe ja die neuste Version von T3 installiert.
Habe jetzt eine Lösung gefunden die funktioniert und mit der ich einigermaßen zufrieden bin. Auch wenn ich so langsam das Gefühl hab das bei mir komplett was nicht stimmt.
tempright.wrap {
stdWrap.outerWrap.stdWrap.prepend = TEXT
stdWrap.outerWrap.stdWrap.prepend.field= header
stdWrap.outerWrap.stdWrap.prepend.wrap = <div class="info_block_ueberschrift">|</div>
stdWrap.wrap = <div class="info_block">|</div>
}
subparts.RIGHT_CONTENT = CONTENT
subparts.RIGHT_CONTENT {
table = tt_content
select.orderBY = sorting
select.where = ColPos = 2
renderObj < tempright.wrap
}