Eigene Funktion einbauen

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
dieter99
Mitglied
Beiträge: 430
Registriert: 07.04.2005 20:09

Eigene Funktion einbauen

Beitrag 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!!!!
Verschoben von phpBB 3.0: Administration und Benutzung nach phpBB 3.0: Mod-Bastelstube am 04.01.2013 18:32 durch Crizzo

Benutzeravatar
BNa
Valued Contributor
Beiträge: 3169
Registriert: 12.04.2010 23:51
Kontaktdaten:

Re: Eigene Funktion einbauen

Beitrag 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}
dieter99
Mitglied
Beiträge: 430
Registriert: 07.04.2005 20:09

Re: Eigene Funktion einbauen

Beitrag 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.
Benutzeravatar
BNa
Valued Contributor
Beiträge: 3169
Registriert: 12.04.2010 23:51
Kontaktdaten:

Re: Eigene Funktion einbauen

Beitrag 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}
dieter99
Mitglied
Beiträge: 430
Registriert: 07.04.2005 20:09

Re: Eigene Funktion einbauen

Beitrag 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
Benutzeravatar
BNa
Valued Contributor
Beiträge: 3169
Registriert: 12.04.2010 23:51
Kontaktdaten:

Re: Eigene Funktion einbauen

Beitrag 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
Zuletzt geändert von BNa am 05.01.2013 22:26, insgesamt 1-mal geändert.
dieter99
Mitglied
Beiträge: 430
Registriert: 07.04.2005 20:09

Re: Eigene Funktion einbauen

Beitrag 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?
Benutzeravatar
BNa
Valued Contributor
Beiträge: 3169
Registriert: 12.04.2010 23:51
Kontaktdaten:

Re: Eigene Funktion einbauen

Beitrag 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.
Benutzeravatar
bantu
Server-Team
Beiträge: 7311
Registriert: 25.04.2006 16:12
Wohnort: Karlsruhe

Re: Eigene Funktion einbauen

Beitrag 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.
Powered by Coffee
Benutzeravatar
BNa
Valued Contributor
Beiträge: 3169
Registriert: 12.04.2010 23:51
Kontaktdaten:

Re: Eigene Funktion einbauen

Beitrag 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.
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“