Zum Inhalt springen

Variable aus php übergeben

Erstellt am 17. August 2005 · 5 Antworten · letzte Antwort am 2. September 2005

Tags: Frage

markusbucher ·

Hi,

kann ich eine Variable aus php vererben, sodass sie im TS verfügbar ist? Sozusagen:

<?php
$VARIABLE = 1234;
?>

und im TS dann als {$VARIABLE} verwendet.

Geht das?

Danke

Markus

markusbucher ·

Hallo humpun,

einbinden des Skripts ist kein Problem, aber wie übergebe ich die Variable? Sie ist nach Einbinden nicht mehr verfügbar.

Gruß

Markus

imu ·

Hallo marcusbucher,

ist es Ihnen gelungen, den Wert der Variable ins TypoScript zurückzubekommen?
Bin gerade selbst an dem Problem, mittels einer Abfrage im Script den Namen
meines Templates festzulegen (ich habe eine Flash- und eine nicht-Flash-Variante).
Ich bekomme den Wert zurück, das ist nicht das Problem, aber mehr auch nicht.

page.99 = PHP_SCRIPT
page.99.file = fileadmin/d3gmbh/scripts/user_template_chose.php

Der Wert von page.99 wird brav in der Webseite angezeigt, also mal der Beweis, daß der Wert aus dem Script zurückgeliefert wird, aber das ist ja nicht Sinn der Sache.

Was ich dann brauche, ist entweder eine Condition, in der ich den rückgelieferten
Wert auswerten kann, um mein Template auszuwählen, also

temp.flashflag = PHP_SCRIPT
temp.flashflag.file = fileadmin/d3gmbh/scripts/user_flashflag.php 

temp.alltemplate = FILE
[temp.flashflag = 1]
   temp.alltemplate.file = {$CONST_TEMPLATEDIR}{$CONST_TEMPLATEFILE_NONFLASH}
[temp.flashflag = 2]
   temp.alltemplate.file = {$CONST_TEMPLATEDIR}{$CONST_TEMPLATEFILE}
[global]

... condition funktioniert aber nicht

oder aber eine Übergabe des Wertes ...

temp.templatename = PHP_SCRIPT
temp.templatename.file = fileadmin/d3gmbh/scripts/user_template_chose.php 

temp.alltemplate = FILE

   temp.alltemplate.file < temp.templatename

... funktioniert auch nicht

Der dritte Weg wäre, wenn ich in einer Condition den Flash-Flag, den ich mit dem PHP-Script in die Session setze, auswerten könnte. Habe aber unter den Conditions nicht die Möglichkeit gefunden, Session-Variablen auszulesen ...

Der vierte Weg wäre, ich könnte dynamisch allen Links in der Navigation und im Text einen Parameter "flash" oder "nonflash" anhängen (über Typoscript).
denn den können die Conditions auswerten ...

Vielleicht hat jemand eine Anregung, wie ich das Problem lösen kann?

markusbucher ·

Hallo,

leider habe ich noch keine Lösung für mein und damit auch keine Lösung für Ihr Problem. Wenn ich eine finde, melde ich mich.

Gruß

Markus Bucher

imu ·

Hallo, nun bin ich doch etwas weitergekommen.

Unter Beachtung: https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Syntax/Conditions/Index.html#typoscript-syntax-implementing-custom-conditions

temp.filename=TEXT
temp.filename = {$CONST_TEMPLATEDIR}{$CONST_TEMPLATEFILE}


[userFunc = user_flashflag()]
     temp.filename = {$CONST_TEMPLATEDIR}{$CONST_TEMPLATEFILE_NONFLASH}

[global]

die Funktion user_flashflag()
wird in die [typo3projekt]/typo3conf/localconf.php
geschrieben.

function user_flashflag()    {
      global $TSFE;
      global $_GET;
      global $HTTP_COOKIE_VARS;

     //getting flashflag


    	if ( isset($_GET['flash']) AND $_GET['flash']=="nonflash"){
    	        //and setting flashflag
    	        setcookie("flash", "nonflash", 0);
         	$GLOBALS["TSFE"]->fe_user->setKey("ses","flashflag", "nonflash");
         	return true;
    	}

    	else{

                if ( isset($_GET['flash']) AND $_GET['flash']=="flash"){
                           setcookie("flash","flash", 0);
                           $GLOBALS["TSFE"]->fe_user->setKey("ses","flashflag", "flash");
                           return false;


                 }
         	elseif( ($HTTP_COOKIE_VARS["flash"] == "nonflash") OR ($GLOBALS["TSFE"]->fe_user->getKey("ses","flashflag" == "nonflash"))) {
         	        return true;
    	         }
    	         else{

             }
    	}

}

Ich würde die Angabe, ob der User nonFlash ausgewählt hat, lieber aus der Session nehmen, dies funktioniert aber nicht, deshalb hier zusätzlich die Cookies-Variante.
sieht jemand den Fehler?