Hallo,
da ich diverse CSS-einstellungen mittels Typoscript beeinflussen will (u.a. Farbgebung) blieb mir nichts anderes übrig, als die CSS-Datei nicht auszulagern sondern in das html-template zu integrieren.
Soweit so gut.
Nun habe ich
<!-- ###DOKUMENT### begin -->
bereits vor den <head> tag gesetzt, damit Typo3 auch die im head aufgeführten Marks ersetzt.
Blöderweise habe ich im Endergebnis nun zwei "heads".
Wie kann ich abhilfe schaffen?
Oder muss ich das "work on subpart" weglassen?
es gibt zwei extensions mit denen man dynamisch eine CSS über typoscript "erstellen" lassen kann.
vielleicht kannst du damit deine CSS anforderungen erfüllen, und brauchst nicht den subpart dafür verwenden.
du kannst allerdings auch einen zweiten "work on subpart" anlegen, wo du deinen head definierst.
Zunächst mal Danke für die Antwort.
Wenn ich einen zweiten "work on subpart" definiere, woher "weiß" Typo3 dann, dass ich den head und nicht den body meine. Nicht dass ich nachher 3 <head>s habe?
seite = PAGE
seite{
10.workOnSubpart = DOKUMENT
10.marks{
etc...
erweiter ich das einfach um:
20.workOnSubpart = DOKUMENTHEADER
20.marks{
etc...
oder was muss ich noch beachten?
Also, generell erstellt TYPO3 seinen eigenen Head Bereich, was auch meistens erwünscht und genutzt wird. Selbstverständlich kann man diesen Bereich manipulieren (JS, CSS oder Metatags hinzuladen) oder ganz abschalten (disableAllHeaderCode = 1).
Wenn dein Subpart also noch vor deinem HTML Header liegt, werden logischerweise zwei Header ausgegeben.
Entweder du deaktivierst den TYPO3 HTML Header oder du entfernst deinen eigenen und passt den automatischen an (das wäre dann auch mein Vorschlag)...
aha, ok.
Im Moment habe ich meinen eigenen header komplett gelöscht und das CSS in den body geschrieben. Irgendwie finde ich das nicht sonderlich elegant, aber es funktioniert.
Wie kann ich denn den Typo3-auto-header z.B. um einen CSS-tag ergänzen?
Carlo99 schrieb
Wie kann ich denn den Typo3-auto-header z.B. um einen CSS-tag ergänzen?
Beispiel Typoscript:
page = PAGE
page {
typeNum = 0
stylesheet = fileadmin/css/style.css
meta.DESCRIPTION.field = abstract
meta.AUTHOR.field = author
meta.KEYWORDS.field = keywords
config.doctype = xhtml_trans
#config.index_enable = 1
#config.index_externals = 1
}
[browser = msie] && [version =< 7.0]
#page.stylesheet = fileadmin/css/main_ie6.css
[END]
[browser = msie] && [version => 6.9]
#page.stylesheet = fileadmin/css/main_ie7.css
[END]
[browser = opera]
#page.stylesheet = fileadmin/css/main_opera.css
[END]
[useragent=*Safari*]
#page.stylesheet = fileadmin/css/main_safari.css
[END]
page.10 = TEMPLATE
page.10 {
template = FILE
template.file = fileadmin/templates/startseite.html
workOnSubpart = BODY
marks.content < styles.content.get
}
config {
baseURL = http://www.test.de/
simulateStaticDocuments = 0
tx_realurl_enable = 1
prefixLocalAnchors = all
disablePrefixComment = 1
}
styles.content.mailform.target = _self
styles.sitemap.text.target = _self
Bei Deinem Beispiel bekommt man aber keine Marks z.B. in der "main_ie6.css" untergebracht.
Na ja, ich lass das CSS im Body stehen. Scheint die einzig praktikable Lösung zu sein, wenn man Farben in den Constants ändern können will.
Danke soweit für die raschen Antworten!
Carlo99 schrieb
aha, ok.
Im Moment habe ich meinen eigenen header komplett gelöscht und das CSS in den body geschrieben. Irgendwie finde ich das nicht sonderlich elegant, aber es funktioniert.
Wie kann ich denn den Typo3-auto-header z.B. um einen CSS-tag ergänzen?
Wenn du eine Templatevorlage verwendest, dann kannst du doch entweder dort Dein css-File einbinden:
<link rel="stylesheet" href="maintemplate0.css" type="text/css" media="screen" title="default" />
oder es im Template-setup machen:
page.includeCSS {
file1 = fileadmin/templates1/xyz/style.css
}
Oder Du verwendest sogar beide Möglichkeiten, dies hat den Vorteil, dass Du einmal ein eigenes css für das Template und dann noch ein allgemeines für die Seite(n).
Das hilft nicht für doppelte Header.
Hier kann man (ich) nur Vermutungen anstellen. Du mußt Typo3 sagen, dass er nur den Bereich des Dokumentes mit:
workOnSubparts = DOKUMENT (ist auch ein MARKER)
auszuwerten ist. Oder verwendest, wie ich die Extension automaketemplate. Dort habe ich garnicht darüber nachdenken müssen.
Extension einbinden, und im Template-Setup die folgenden Zeilen einstellen:
# Configuring the Auto-Parser:
plugin.tx_automaketemplate_pi1 {
content = FILE
content.file = fileadmin/templates/main-template-css.html
elements {
BODY.all = 1
BODY.all.subpartMarker = DOCUMENT_BODY
HEAD.all = 1
HEAD.all.subpartMarker = DOCUMENT_HEADER
HEAD.rmTagSections = title
TD.all = 1
}
}
# Prefix all relative paths with this value:
plugin.tx_automaketemplate_pi1.relPathPrefix = fileadmin/templates/
# Default PAGE object:
page = PAGE
page.typeNum = 0
page.bodyTagCObject =< plugin.tx_automaketemplate_pi1
page.bodyTagCObject.getBodyTag=1
# Inserting the <head> section (###DOCUMENT_HEAD### subpart) from the template (without <title>-
# tag...). Thus all header information in the template file is preserved, including any stylesheet.
# Getting header data from template, but excluding title-tag (see object configuration)
page.headerData.10 = TEMPLATE
page.headerData.10.template =< plugin.tx_automaketemplate_pi1
page.headerData.10.workOnSubpart = DOCUMENT_HEADER
# Finally the page content is fetched from the template (###DOCUMENT_BODY### subpart)
# Page content:
page.20 = TEMPLATE
page.20.template =< plugin.tx_automaketemplate_pi1
page.20.workOnSubpart = DOCUMENT_BODY
page.20.marks {
# hier kommen dann die MARKER (###BODY###) usw.
http://www.iv-consulting.de
Um CSS dynamisch auf die Site zu bringen, mußt Du im Template selbst eigentlich garnichts machen, sondern nur im TS.
page.headerData.90 = TEXT
page.headerData.90.value = DEIN INLINE CSS
Damit schreibst Du Werte in den Header-Bereich.
Gruß
Michael
Danke für die Antwort. Ich denke mit der Sammlung hier kann ich schon etwas anfangen.