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 :wink:

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 :wink:

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 :wink:

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 emptys oder issets 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.