Hi ...
ich habe mir das Buch "Praxiswissen TYPO3" gekauft und
auf Basis desen versucht meine eigene Typo Site zu bauen.
Nur bin ich jetzt auf ein Problem gestossen das ich nicht lösen kann.
Ich habe für den Content auch ein HTML Template erstellt.
Das klappt mit dem Inhalt "Normaler Text" auch super nur wenn ich Text mit Bild auswähle kommt das Bild zwar aber als Inhaltstext die Überschrift.
Unter http://pix2vote.de/index.php?id=24 kann man das sehen.
Ausserdem werden die css styles auch nicht angewendet.
hier auch noch der Typoscript Code
tmp < tt_content.text
tt_content.text >
lib.stdheader.10.2.fontTag =
lib.stdheader.10.1.fontTag =
lib.stdheader.wrap =
lib.stdheader.10.stdWrap.wrap =
lib.stdheader.textStyle >
tt_content.text = TEMPLATE
tt_content.text {
template = FILE
template.file = fileadmin/inhalt1.html
marks.HEADLINE =< lib.stdheader
marks.TEXT =< tmp.20
}
tmp2 < tt_content.textpic
tt_content.textpic >
tt_content.textpic = TEMPLATE
tt_content.textpic {
template = FILE
template.file = fileadmin/inhalt1.html
marks.HEADLINE =< lib.stdheader
marks.TEXT =< tmp2.20
20.text.maxW = 20
}
Vielen dank ...
Ich find den Fehler so beim rüberblicken auch nicht, aber ich werd dir mal etwas navigationshilfe geben:
tt_content ist ein CASE, dessen Key "CType" wird. Also bestimmt der inhalt der Kinder von tt_content, was mit welchem Elementtyp passiert. Deinen Fehler mußt du also in tt_content.textpic suchen. Schauen wir uns das mal an:
tt_content.textpic = TEMPLATE
Du willst eine Template benutzen
tt_content.textpic {
template = FILE
template.file = fileadmin/inhalt1.html
und zwar diese.
marks.HEADLINE =< lib.stdheader
"HEADLINE" soll mit dem "üblichen" Kopf ersetzt werden, "lib.stdheader", was ich erstmal als Sinnvoll erachten würde
marks.TEXT =< tmp2.20
20.text.maxW = 20
}
Und TEXT soll mit dem ersetzt werden, was vorher unterstellterweise der Text des "textpic" war (tmp.20). Ich bezweifele im übrigen, dass maxW so funktionieren wird, m.W. funktioniert die Option nur bei bildern. Was du, denke ich, suchst ist "(stdWrap.)crop".
Nun zu deinem eigentlichen Problem:
Wie das Ergebnis anmutet, hängt im Einzelnen davon ab, was du in die Datenbank eingetragen hast. Deine Template sieht erstmal oberflächlich korrekt aus, und ich habe auch so keinen Fehler gefunden. Ich sehe auch dass auf deiner Website in der Überschrift "Text mit Bild Überschrift" steht. Was darauf hindeutet, dass du es in das Eingabefeld "Überschrift" geschrieben hast. Ich kann nicht erkennen, dass hier der "Inhaltstext als Überschrift" verwendet wurde. Was genau hast du in die Eingabefelder für die Überschrift und den Text geschrieben?
Danke erstmal ...
Aber nicht der Inhaltstext wird als Überschrift benutzt sondern
als Inhaltstext wird die Überschrift benutzt, man kann das auf der Site sehen
ist neben dem Bild und in schwarz deswegen ist es leicht zu übersehen.
Die CSS Styles funzen auch nicht.
Ah. #angry#
Erstmal noch zu den CSS: du mußt die statische template "content (default)" durch die "CSS Styled Content" ersetzen (nicht dazuschreiben, oder sowas), dann kriegst du überall class=... in den HTML-code, und dann kriegst du das auch mit CSS formatiert.
Zu dem anderen Problem: Das Textpic ist recht kompliziert aufgebaut. Wenn wir mal in die "content (default)" gucken (in CSC recht ähnlich), steht da:
tt_content.textpic = COA
tt_content.textpic {
10 = COA
10.if.value = 25
10.if.isLessThan.field = imageorient
10.10 = < lib.stdheader
20 < styles.content.imgtext
20.text.10 = COA
20.text.10 {
if.value = 24
if.isGreaterThan.field = imageorient
10 = < lib.stdheader
}
20.text.20 = < tt_content.text.20
}
Was erstmal ziemlich kompliziert ist. Auf jeden Fall hängt das alles irgendwie davon ab, welches Layout du für das Bild ausgewählt hast ("oben links im text" etc.). Gelegentlich kann dann auch in tt_content.textpic.20.text.10.10 ein header erzeugt werden, und der eigentliche text steht in tt_content.textpic.20.text.20.
Ich nehme an, dass die Antwort irgendwo da zu suchen ist.
Andere Alternative wäre, ein ganz eigenes RenderObj zu schreiben, was m.E. i.d.R. die sinnvollere Alternative ist - die vorgegebenen Templates sind einfach nur Kraut und Rüben.
eigentlich brauch ich nur 2 Elemente
Normaler Text und da eh nur 1 Layout
Und Text mit Bild da auch nur Bild links und Text rechts.
Ich versuch das mal ohne die Templates :-)
ich hab jetzt das standart template rausgemacht und
versucht mein eigenes zu schreiben.
tt_content = TEMPLATE
tt_content {
template = FILE
template.file = fileadmin/inhalt1.html
marks.HEADLINE = TEXT
marks.HEADLINE.field = header
marks.TEXT = TEXT
marks.TEXT.field = bodytext
}
Jetzt sind 2 Probleme aufgetaucht.
Bei dem Eintrag mit Bild wird jetzt zwar der richtige Bodytext angezeigt aber
dafür ohne Bild.
Bei dem Nur Text werden die Absätze im Text nicht erkannt und der Text steht in einer Zeile.
http://pix2vote.de/index.php?id=24
Vorweg: wie aus dem Bild in der Datenbank eine URL gemacht wird, auf die der Browser zugreifen kann, und über die er sich das Bild abholen kann, ist mir nach wie vor unklar. Ich hab für solche Manöver bislang immer die vorgegebenen Systeme benutzt. Kann dir da also im Moment nicht weiterhelfen.
Zu den Umbrüchen:
Da ist sehr wohl ein Umbruch (CR+LF), in HTML heißt das jedoch genausoviel wie aller anderer Whitespace. Lange rede kurzer Sinn: da wo jetzt ein CR/LF ist, willst du einen HTML-Umbruch (<br />). Dazu ist wohl die Funktion split gut.
Wenn das renderObj (tt_content ist das default-renderObj für CONTENT-CObjekte die table=tt_content haben - alles klar? 😉 ) je nach Inhaltstyp andere reaktionen zeigen soll (beispielsweise bei "textpic" = "Text mit Bild" ein Bild dazupacken), mußt du wohl oder übel ein CASE-Objekt verwenden und dir die entsprechenden Contenttypen zusammenklamüsern.
Als Vorbild/Beispiel hier was von meiner Seite (das renderObj hier wird üblicherweise einfach von tt_content kopiert):
# textpic oder stirb
renderObj = CASE
renderObj.key.field = CType
renderObj.textpic < tt_content.textpic
renderObj.textpic.20.text.20.crop = 200 | <a href="index.php?id={field:pid}">mehr...</a> | 1
renderObj.textpic.20.text.20.insertData = 1
renderObj.textpic.20.maxW=70
renderObj.textpic.20.maxH=70
renderObj.default = HTML
renderObj.default.value = <b>Erstes Inhaltsobjekt einer Buchvorstellung muß ein Text mit Bild sein</b>
renderObj.stdWrap.wrap = <div class="linksblock"> | </div>
Hier wird also, wenn ein Text mit Bild vorliegt, dieses durch Klau des entsprechenden Ausschnitts aus tt_content angezeigt, und der Text etwas beschnitten und mit einem Link versehen, und ansonsten eine entsprechende Fehlermeldung ausgegeben.