Zum Inhalt springen

Bedingung anhand Extension auswerten?

Erstellt am 12. Februar 2012 · 5 Antworten · letzte Antwort am 13. Februar 2012

Tags: Frage

Mika9999 ·

Ich habe eine Extension geschrieben, die intern etwas auswertet.
Anhand dessen Entscheidung möchte ich gerne beispielsweise ein Bild, welches mit TypoScript Objekt Pfad im TemplateVoila Template integriert ist manipulieren.

Also z.B. im Typoscript einer Seite

[VariableausExtension = 1]
lib.background = bild1.gif
[VariableausExtension = 1]
lib.background = bild2.gif
[VariableausExtension = 3]
lib.background = bild3.gif
[global]

Nun ab der springende Punkt: Wie komme ich an eine Variable aus der Extension bzw. wie gebe ich einen Wert so zurück, dass er im Typoscript verfügbar ist? Geht das nur über die Session?

LuP ·

Hallo,

Du könntest den Rückgabewert Deiner Erweiterung an eine userFunc leiten, um diesen mit Condition auszuwerten, bevor der entsprechende Wert an den TypoScript Objekt Pfad weitergegeben wird.

VG,
LuP

Mika9999 ·

Hallo,

und genau da hänge ich. UserFunc an sich ist mir klar. Extension an sich ebenfalls. Aber wie in Einklang bringe? Wenn ich im TS eine Klasse u. Methode einbinde, dann wird doch eine neue Instanz erzeugt? Ich möchte ja nach Abarbeitung der Extension den lib.background Pfad mit der Condition manipulieren. Kannst du ein bisschen näher drauf eingehen. Ich habe noch keine wirkliche Idee einer Lösung.

Ich habe zwischenzeitlich auch weiter gegoogelt und bin auf das gestoßen: http://blog.joergboesche.de/typo3-extension-via-userfunc-laden-und-function-aufrufen

Dennoch wird eine neue Instanz erstellt und ich habe nicht wirklich Zugriff auf die Daten der anderen Klasse, oder? Oder brauch ich einen Singleton?

Danke und Gruß

LuP ·
Mika9999 schrieb

Wenn ich im TS eine Klasse u. Methode einbinde, dann wird doch eine neue Instanz erzeugt?

ja, die Klasse wird instanziert und die Methode, die Du in der UserFunc angibst, wird mittels Callback mit den Argumenten content und conf aufgerufen, wobei letztere im vorliegendem Fall keine Rolle spielen, da Du nur den Rückgabewert brauchst. Dann liefert Deine Erweiterung den Wert zurück. Jetzt hat das TS-Object den Wert zwichengespeichert und dann müssen die Conditions nur noch den auswerten, wie Du bereits angegeben hast.

VG,
LuP

Mika9999 ·

Also entweder stehe ich gerade auf dem Schlauch oder wir reden aneinander vorbei.
Der Aufruf im Typoscript a la

temp = meineklasse->methodeXYZ

erzeugt eine Instanz der Klasse.

Die Extension an sich, welche durch ein Plugin eingebunden wird, führt eine die main Methode aus. Selbst wenn ich jetzt von dieser main Methode einige Daten in der Klasse speichere, habe ich von methodeXYZ ja keinen Zugriff darauf, weil es eine andere Instanz ist?

LuP ·

wir haben aneinander vorbei geredet :-/ Mit meinem Vorschlag muss natürlich die Auswertung über die UserFunc erfolgen, sonst geht es nicht, sorry.

VG,
LuP