Seite 1 von 2
Eigene Funktion einbauen
Verfasst: 04.01.2013 18:27
von dieter99
Hallo,
ich möchte eine eigene PHP-Funktion schreiben, die auf JEDER Seite meines phpBB Forums automatisch aufgerufen werden soll. Ich denke die Funktion selbst füge ich im Script includes/funktions.php ein. Wird eigentlich in der gleichen Datei dafür gesorgt, dass die Funktion aufgerufen wird, oder mache ich das auf einer anderen php-Seite? Wie schon geschrieben, die Funktion muss auf allen Seiten ausgeführt werden (egal ob man sich auf der index befindet, oder in einem Unterforum).
Und wo bzw. in welcher Datei muss ich die Variablen an das Template übergeben, damit mir die Variablen im Banner immer zur Verfügung stehen?
Ich hoffe ein Oberguru kann mir weiterhelfen, DANKE!!!!
Re: Eigene Funktion einbauen
Verfasst: 04.01.2013 18:49
von BNa
Ungurumäßig mal
includes/functions.php
behauptet
Code: Alles auswählen
// The following assigns all _common_ variables that may be used at any point in a template.
$template->assign_vars(array(
'COOLE_VARIABLE' => (isset($coole_variable)) ? $coole_variable : false,
Im Template dann
{COOLE_VARIABLE}
Re: Eigene Funktion einbauen
Verfasst: 05.01.2013 14:30
von dieter99
BNa hat geschrieben:Ungurumäßig mal
includes/functions.php
behauptet
Code: Alles auswählen
// The following assigns all _common_ variables that may be used at any point in a template.
$template->assign_vars(array(
'COOLE_VARIABLE' => (isset($coole_variable)) ? $coole_variable : false,
Im Template dann
{COOLE_VARIABLE}
Danke für den Hinweis, die Sache mit der Variable-Übergabe ist jetzt klar. Doch wo wird meine selbst gebastelte Funktion aufgerufen? Alle Funktionen in der Datei includes/functions.php werden dort zwar definiert, doch aufgerufen werden sie dort nicht. Es muss daher noch eine Datei geben, die für die Ausführung zuständig ist.
Re: Eigene Funktion einbauen
Verfasst: 05.01.2013 14:58
von BNa
Klar, die Funktion wird definiert und auch aufgerufen in der Datei.
Das geschieht im Falle der includes/functions.php zwar nicht für jede Funktion, die dort definiert wurde aber für viele.
Zum Beispiel die function
request_var(***)
. Wird dort definiert und auch reichlich aufgerufen
Also Beispiel:
Finde
Code: Alles auswählen
/**
* Generate page header
*/
function page_header($page_title = '', $display_online_list = true, $item_id = 0, $item = 'forum')
{
Davor füge ein
Code: Alles auswählen
/**
* My cool function
*/
function my_cool()
{
global $user;
$user_id = ($user->data['user_id']) ? $user->data['user_id'] : false;
return $user_id;
}
Finde
Code: Alles auswählen
// The following assigns all _common_ variables that may be used at any point in a template.
$template->assign_vars(array(
Dahinter füge ein
Code: Alles auswählen
'COOLE_VARIABLE' => (my_cool() !== false) ? my_cool() : false,
Im Template dann
{COOLE_VARIABLE}
Re: Eigene Funktion einbauen
Verfasst: 05.01.2013 18:13
von dieter99
Jetzt habe ich das Prinzip verstanden, die Funktion wird erst bei der Übergabe der Variable ausgeführt.
Diesen Code finde ich aber komisch:
Code: Alles auswählen
'COOLE_VARIABLE' => (my_cool() !== false) ? my_cool() : false,
Wenn ich den Code richtig interpretiere, wird die Funktion my_cool bei der Rückgabe TRUE zweimal ausgeführt:
-> führe my_cool aus
-> falls true zurückgeliefert wird, führe my_cool nochmal aus
-> falls false zurückgeliefert wird, verwende den wert false
Re: Eigene Funktion einbauen
Verfasst: 05.01.2013 18:19
von BNa
Nein, es findet nur ein Check statt. Ist aber eh nur als symbolisches Beispiel zu verstehen, damit es verstanden wird:
Code: Alles auswählen
'COOLE_VARIABLE' => (my_cool() !== false) ? my_cool() : false,
Der Code bedeutet:
Wenn
my_cool()
nicht false ist (
(my_cool() !== false)
), führe
my_cool()
aus, ansonsten setze
false
Re: Eigene Funktion einbauen
Verfasst: 05.01.2013 21:37
von dieter99
BNa hat geschrieben:Wenn my_cool()
nicht false ist ((my_cool() !== false)
), führe my_cool()
aus, ansonsten setze false
Wenn
my_cool()
nicht false ist
Um zu wissen ob die Funktion my_cool FALSE oder TRUE zurückgibt, muss diese zunächst ausgeführt werden. Oder habe ich irgendwo einen Denkfehler?
Re: Eigene Funktion einbauen
Verfasst: 05.01.2013 22:06
von BNa
Ausgeführt ja, aber nicht doppelt ausgegeben. Darüber kann man gerne philosophieren. Jedenfalls hast Du nun ein Bild und kannst weiter über den Sinn und Unsinn von if else Switches sinnieren. Ich bedanke mich für meine Hilfe und verbleibe, viel Spaß beim weiteren programmieren. Abschliessend und um die Gedanken zu entwirren 'COOLE_VARIABLE' => my_cool(),
geht natürlich auch, da innerhalb der Funktion schon abgefragt wird. Einen schönen Abend noch.
Re: Eigene Funktion einbauen
Verfasst: 05.01.2013 23:06
von bantu
dieter99 hat geschrieben:Wenn ich den Code richtig interpretiere, wird die Funktion my_cool bei der Rückgabe TRUE zweimal ausgeführt
Korrekt. Jenachdem was die Funktion macht, das hast du soweit ich sehen kann ja gar nicht weiter beschrieben, ist das also ungünstig. Du kannst das Ergebnis aber vorher einfach in eine Variable schreiben.
Re: Eigene Funktion einbauen
Verfasst: 05.01.2013 23:19
von BNa
War ja ein Beispielcode und wie ich schon abschliessend sagte: 'COOLE_VARIABLE' => my_cool(),
reicht, da ja innerhalb der function()
schon abgefragt und in Zweifelsfalle false
ausgegeben wird. Je besser innerhalb einer Funktion empty
s oder isset
s ausgeschlossen werden, desto weniger braucht später abgefragt, sondern kann die Funktion im Grunde "als solches" ausgegeben werden. Von daher scheint das Verständnis des OP um die genannte Materie ja höher als vorgegeben. Wunderbar.