Zum Inhalt springen

HTML-Designvorlage dynamisch zuweisen

Erstellt am 5. Mai 2009 · 7 Antworten · letzte Antwort am 6. Mai 2009

Tags: Templates & Layouts, Frage

vince123 ·

Hallo,

ich versuche meiner erstellten Extension eine HTML-Vorlage zuzuweisen. Statisch mit:

plugin.tx_meineextension_pi1.templateFile = fileadmin/templates/meineextension.html

alles bestens!

Nun soll die Vorlage aber dynamisch zugewiesen werden. Ich habe ein Typoscript-Objekt, welches als Text den Pfad zur HTML-Designvorlage enthält. Aber warum klappt eine Zuweisung wie in Zeile 5 nicht? Wie kann ich einen solchen Wert aus einem vorher definierten Objekt zuweisen?

temp.vorlage = TEXT
temp.vorlage.value = fileadmin/templates/meineextension.html

plugin.tx_meineextension_pi1 {
	templateFile < temp.vorlage
}

Eine ähnliche Frage gab es hier früher schon mal.
#28842
Aber Konstanten kann ich ja nicht benutzen, da der Wert erst auf der Seite in Typoscript ermittelt werden muß.

Gruß und Danke!
Guido

just2b ·

Hallo,

wie wird denn templateFile in der Extension behandelt, als cObject? weil nur dann gehts das. wenn du einen string verarbeitest, brauchts auch einen

georg

vince123 ·

Dank für die Antwort.

Aus der Extension:

        $this->template=$this->cObj->fileResource($conf['templateFile']);

Muß das anders lauten?

just2b ·

naja fileResource will einen string und kein cObject haben. du kansnt ja nicht einfach einen komplett anderen art von variable übergeben und glauben das funktioniert....

probier mal:

$template = $this->cObj->stdWrap($conf['templateFile'], $conf['templateFile.']);
$this->template=$this->cObj->fileResource($template);

und bei TS

templateFile.stdWrap.override.cObject < temp.vorlage

ungetestet

vince123 ·

naja fileResource will einen string und kein cObject haben. du kansnt ja nicht einfach einen komplett anderen art von variable übergeben und glauben das funktioniert....

Sorry. Hab ja unter Anfängerfragen gepostet... ;-)

Leider bleibt die Ausgabe auch mit deinem Code leer. Kein Template.

Aber ich habe die Zuweisung nochmal überprüft. Mit

page.50 = TEXT
page.50.cObject < plugin.tx_meineextension_pi1.templateFile

bekomme ich den korrekten Pfad als String ausgegeben: fileadmin/templates/meineextension.html

Wie bekomme ich den nun in meine Extension?? Danke im Voraus!

einpraegsam.​net ·

Georg hat zwar Recht, aber eine einfache Zuweisung ohne stdWrap sollte auch funktionieren:

temp.vorlage = fileadmin/templates/meineextension.html

plugin.tx_meineextension_pi1 {
        templateFile < temp.vorlage
}
vince123 ·

Danke! Aber das Problem ist, dass temp.vorlage in Wirklichkeit durch verschiedene Bedingungen definiert wird.

temp.Vorlage = COA_INT
temp.Vorlage {
    10 = TEXT
    10 {
        value = fileadmin/templates/meineextension1.html
        if.equals.cObject < temp.userprofile
        if.value = beruf1
    }
    20 = TEXT
    20 {
        value = fileadmin/templates/meineextension2.html
        if.equals.cObject < temp.userprofile
        if.value = beruf2
    }
    30 = TEXT
    30 {
        value = fileadmin/templates/meineextension3.html
        if.equals.cObject < temp.userprofile
        if.value = beruf3
    }
}

Da bekomme ich den richtigen Pfad zur Vorlage ausgegeben. Jetzt aber der Weg in meine Extension?

Was ich auch mal getestet habe, ist die Bedingung direkt zu verwenden.

plugin.tx_meineextension_pi1 {
	templateFile = fileadmin/templates/meineextension1.html
	templateFile.stdWrap.if.equals.cObject < temp.userprofile
	templateFile.stdWrap.if.value = beruf1
}

Das klappt. Aber prüft nur auf eine Bedingung. Ich bräuchte aber die drei Bedingungen. Kann ich die irgendwie verschachteln/kombinieren?

Wäre echt dankbar, denn ich verzweifel seit einigen Tagen...
Guido

vince123 ·

Tja, habe es nun selbst gelöst. Allerdings komplett in php in meiner kleinen Extension. In Typoscript schien mir die ganz Zuweisungsorgie doch etwas komliziert wenn nicht unlösbar. Nun also keine Parameter-Übergabe mehr an die Extension, sondern alles direkt dort mit schön einfachen if-else-Schleifen.
Gruß und Dank an die Moderatoren!
Guido