Zum Inhalt springen

Eigenes PHP_Script

Erstellt am 26. September 2003 · 4 Antworten · letzte Antwort am 26. September 2003

Tags: Frage

timzim ·

Hallo,

ich hab' jetzt wirklich alle Tipps & Tricks, alle Tuts & Dokus durch und komme nicht wirklich weiter. Ich möchte ein eigenes PHP-Skript verwenden. In meiner Vorlage verwende ich dafür die Marker BEGRUESSUNG. Im einzelnen:
ich werd' noch verrückt! Ich hab jetzt wirklich alles probiert. Meine Datei begruessung.php:

<?php
class begruessung {
var $cObj;

function hallo() {
global $TSFE;
$TSFE->set_no_cache();
$stunde = date("H");
switch($stunde){
case 19:
case 20:
case 21:
echo "<p>Guten Abend!";
break;

case 22:
case 23:
case 0:
case 1:
case 2:
case 3:
echo "<p>Gute Nacht!";
break;

case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
echo "<p><font face='Arial' size='3'>Guten Morgen!</font></p>";
break;

default:
echo "<p>Guten Tag!";
}
$monat = array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November", "Dezember");
$tag = array("Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag");
$datum=getdate();
$monatszahl = $datum['mon']-1;
$tageszaehler = $datum['wday']-1;
}
}
?>

und mein TS im Template:

includeLibs.begruessung = fileadmin/begruessung.php
marks.BEGRUESSUNG = USER
marks.BEGRUESSUNG.userFunc = begruessung->hallo

Warum funzt das nicht. Es sollte sich hier eigentlich nur um ein kleines Feature der Seite handeln und nicht um das Hauptproblem, das alles aufhält. Kann mit BITTE jemand helfen!!!

- Timo Zimmermann (timzim)

jayripper ·

Ok, pass auf hier ein kleines Beispiel (getestet es funktioniert!):

In meinem Template:

includeLibs.my_file = fileadmin/sven/js/my_file.inc

Das heisst bei mir im Fileadmin ist das Ordner Verzeichnis sven/js/´, dort wiederum liegt die Datei my_file.inc

Im selben Template wo die Marker definiert werden:

marks.footer = TEXT
marks.footer.value = EYYYYYYYYYYYYYYYYYYYYY
marks.footer.postUserFunc = user_myclass->myfunc

Bei mir wird der Marker "footer" benutzt. Die Zeile mit der "value" Zuweisung ist eigentlich überflüssig (sofern die INC Datei funktioniert), andernfalls erhälst Du "EYYYYYYYYY" als Ausgabe.

Der Inhalt der my_file.inc:

<?php 

class user_myclass { 

  function myfunc() { 
     $output = "Hi wie gehts?";
     return $output;
  } 
} 
?>

Achte darauf das deine Class mit user_ beginnt. Alles klar ?

timzim ·

Also ich hab' wieder einmal alles getan:
includeLibs.begruessung = fileadmin/begruessung.inc
und auuserdem:
marks.BEGRUESSUNG = TEXT
# marks.BEGRUESSUNG.value = Servus
marks.BEGRUESSUNG.postUserFunc = user_begruessung->hallo
ins Template eingefügt
Mein PHP-Quelltext:
<?php
class user_begruessung {

function hallo() {

$stunde = date("H");
switch($stunde){
case 19:
case 20:
case 21:
echo "<p>Guten Abend!";
break;

case 22:
case 23:
case 0:
case 1:
case 2:
case 3:
echo "<p>Gute Nacht!";
break;

case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
echo "<p><font face='Arial' size='3'>Guten Morgen!</font></p>";
break;

default:
echo "<p>Guten Tag!";
}
}
}
?>

Wenn ich im TS die Zuweisung mit dem .value mache, bekomme ich an der Stelle des markers die entsprechende Ausgabe. Kann es vielleicht sein, dass in meinem Code ein Fehler ist? Ich hab' ihn in einer normalen PHP-Seite aber schon am Laufen gehabt. HIIIILFEEEE![/quote]

jayripper ·

Ok, ich habe deine Funktion einfach mal bei mir eingesetzt und ausgebessert:

<?php 

class user_myclass { 

  function myfunc() { 
     
 $stunde = date("H"); 
switch($stunde){ 
case 19: 
case 20: 
case 21: 
$ausgabe = "<p>Guten Abend!"; 
break; 

case 22: 
case 23: 
case 0: 
case 1: 
case 2: 
case 3: 
$ausgabe = "<p>Gute Nacht!"; 
break; 

case 4: 
case 5: 
case 6: 
case 7: 
case 8: 
case 9: 
$ausgabe = "<p><font face='Arial' size='3'>Guten Morgen!</font></p>"; 
break; 

default: 
$ausgabe = "<p>Guten Tag!"; 
} 


 return $ausgabe;
}  // ENDE func



} // ENDE CLASS
?>

So, der Unterschied als statt echo schreibst Du deine Ausgabe in eine Variable und lässt diese gaaaanz am Ende mit "return $variable" aus der Funktion an den Marker zurück liefern. Also ersetz hier den Klassen Namen und den Funktionsnamen und es sollte funktionieren.

timzim ·

Super. Vielen Dank! Ein zweiwochenlanges Problem hat heute sein Ende gefunden. Das Wochenende wird gut! VIELEN DANK!
Lag wohl an den echo-Befehlen