Zum Inhalt springen

CSS Datei in Abhängigkeit von Konstante

Erstellt am 7. Juli 2011 · 12 Antworten · letzte Antwort am 12. Juli 2011

Tags: Frage

max2504 ·

Hallo Ihr,

habe folgendes Problem, bei dem ich nicht weiter komme:

Ich will eine Weiche für eine CSS Datei bauen, die in Abhängigkeit von einer Konstante eingebaut wird:

temp.logo = COA
temp.logo.10 {
    if.value = quer
    if.equals = {$Logo}
    value = fileadmin/templates/css1.css
}

temp.logo.20 = TEXT
temp.logo.20 {
    if.value = hoch
    if.equals.field = {$Logo}
    value = fileadmin/templates/css2.css
}

page.includeCSS {
    file2 = temp.logo 
  }

Dies habe ich in einem ext Template eingefügt und es funktioniert nicht. Zumindest teilweise, die if Geschichte geht problemlos, aber das includeCSS nicht.

Wenn ich es so mache, funktioniert es problemlos:

page.includeCSS {
    file2 = fileadmin/templates/css2.css
  }

Es funktioniert also die Übergabe von temp.logo an das includeCSS nicht richtig. In temp.logo steht der richtige value drin, das habe ich mir an anderer Stelle einmal ausgeben lassen.
Könnt ihr mir helfen, wie ich es anders machen muss?

Vielen Dank
Gruß Max

topshopper ·

Hi,

Du hast einen Syntaxehler im TS.

Du hast temp.logo.10 garnicht als TEXT definiert.

temp.logo.10 = TEXT

Müsste es auch nicht

file2 < temp.logo

lauten?

Und probier mal COA_INT statt COA, vielleicht liegt es auch am Cache.

max2504 ·

sorry, dass ist bei copy und paste verloren gegangen. Steht drin.

Habe es nun in COA_INT geändert, hat leider auch nichts gebracht.

Habe nun einmal folgendes versucht:

temp.logo1.10 = TEXT
temp.logo1.10.value = fileadmin/templates/css2.css

page.includeCSS {
    file2 = temp.logo1
  }

Aber auch das funktioniert nicht ?! Mit < statt = bei der Zuweisung geht es auch nicht

topshopper ·

Hi,

kopier doch mal bitte den kompletten Code rein.

Hast du das probiert:

Müsste es auch nicht
TYPOSCRIPT

file2 < temp.logo

Und alle Caches im BE gelöscht?

max2504 ·

jepp, habe ich probiert.

Im Endeffekt ist das der ganze Quelltext:

temp.logo1.10 = TEXT
temp.logo1.10.value = fileadmin/templates/css2.css
 
page.includeCSS {
    file2 < temp.logo1
  }

Wenn diese geht, sollte in meinen Augen auch der andere Teil gehen. Aber leider funktioniert nicht einmal dies.

das hier geht:

page.includeCSS {
    file2 = fileadmin/templates/css2.css
  }

Somit kann es eigentlich nicht an der css Datei liegen oder an anderen Fehlern im TS

Cache habe ich auch gelöscht

max2504 ·

falls jmd eine alternative Idee hat, probiere ich diese auch gerne aus.

Bedingung ist, dass ich über eine Konstante regeln kann, ob CSS-Datei 1 oder CSS-Datei 2 im Header der Seite ausgebe.

Vielen Dank schon jetzt für eure Hilfe!

fiedomedia ·

Hallo Max,

ich hab dein Problem mal auf meinem Testsystem ausprobiert, es scheint nicht möglich zu sein, an page.includeCSS.file einen Wert zu übergeben, egal auf welche Weise...

max2504 schrieb

falls jmd eine alternative Idee hat, probiere ich diese auch gerne aus.

Hast du schon mal an Conditions gedacht? Vlt. könnten die bei deinem Problem die Lösung sein: https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Conditions/Index.html

Was verbirgt sich denn hinter deiner Variablen $Logo?

Grüße Patrick

max2504 ·

Hallo Patrick,

ich habe eine Typo3-Installation, in der ca. 150 Unter-Homepages installiert sind. Dieses sind vom Grundlayout gleich. Allerdings haben die einen ein Logo in Hochformat, die anderen in Querformat.
In der Variable $logo will ich eben hinterlegen, ob bei dem Partner ein Hochformat- oder Querformatlogo verwendet wird und in Abhängigkeit davon dann die CSS-Datei auswählen. Den Schritt, 2 unabhängige Templates zu nutzen, will ich wenn irgend möglich, vermeiden.

Gruß Max

fiedomedia ·

Ok, dann probiers doch mal so (ungetestet):

# wenn $Logo gleich 1, dann nimm css1.css
[globalVar = LIT:1 = {$Logo}]
page.includeCSS {
  file1 = fileadmin/templates/css1.css
}
# ansonsten css2.css
[else]
page.includeCSS {
  file1 = fileadmin/templates/css2.css
}
[end]

Grüße Patrick

max2504 ·

Super, genial, das funktioniert!

Jetzt noch den Punkt auf dem i:

Geht es, dass ich in eine temp.logo ein Feld aus einem FCE abfrage und dies dann in der Condition prüfe?

also in etwas so:

temp.logo = TEXT
temp.logo.field = field_logo

So steht in temp.logo der gleiche Wert, den ich in der Konstante habe. Das habe ich geprüft. Nur blicke ich leider nicht durch, wie ich das in der Condition prüfe.

vielen Dank Patrick!!!

fiedomedia ·
max2504 schrieb

vielen Dank Patrick!!!

Bitte bitte, gern geschehen 😉

max2504 schrieb
temp.logo = TEXT
temp.logo.field = field_logo

Also willst du jetzt keine Konstante mehr benutzen, dann geht die vorherige Condition nicht mehr... Die geht nur bei Constants...

Ich benutze leider keine FCEs, daher kann ich jetzt nur vermuten, ob folgendes funktioniert:

[globalVar = TSFE:page|field_logo = 1]

Ansonsten bleibt dir wohl nur noch eine [userFunc]-Condition übrig, wie auf dieser Seits ganz unten beschrieben: https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Conditions/Index.html

Grüße Patrick

max2504 ·

Das Auslesen des Wertes aus dem FCE funktioniert problemlos. Diesen habe ich nun in der Variable temp.logo stehen.

Die Frage ist, kann ich über Conditions prüfen, ob die Variable temp.logo = quer, dann CSS1, wenn hoch, dann CSS 2.

Das mit der Konstante funktioniert, allerdings müsste ich dann die Seiten alle einzeln noch einmal bearbeiten. Den anderen Wert habe ich bereits eingetragen und müsste diesen nur auslesen und gegenprüfen.

Gruß Max