PHP Code in .tpl einfügen?

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB2 oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
jolle-pe
Mitglied
Beiträge: 7
Registriert: 01.04.2005 19:16
Kontaktdaten:

PHP Code in .tpl einfügen?

Beitrag von jolle-pe »

Hallo,
ich arbeite grade ein kleines Hack für mein PHPBB aus.
Ich möchte gerne ein PHP-Code in das template overall_header.tpl reinsetzen. Aber dürfte eigentlich nicht funktionieren.
Wie könnte ich denn das umgehen?
In den Header Bereich soll ein Random-Pic rein.

Bitte um hilfe :)

Gruß
Julian
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

PHP Code stattdessen in die includes/page_header.php und dann per KB:template_syntax statt echos eben eine Ausgabe im Template erzeugen (also Template Variable befüllen und im Template an der gewünschten Stelle einfügen).
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
jolle-pe
Mitglied
Beiträge: 7
Registriert: 01.04.2005 19:16
Kontaktdaten:

Beitrag von jolle-pe »

bin nicht so der spezi:

Code: Alles auswählen

//Bilder-Hack
$template=>assign_var('Bilder',
$ordner = "./images/headerpic";
$handle = opendir($ordner);
while ($file = readdir ($handle)) {
    if($file != "." && $file != "..") {
        if(is_dir($ordner."/".$file)) {
            echo "/".$file."<br/>";
        } else {
            $ordner_inhalt[] = $ordner."/".$file;
        }
    }
}
closedir($handle);
$max_files = count($ordner_inhalt);
$datei1 = rand(0, $max_files-1);
$datei2 = rand(0, $max_files-1);
$datei3 = rand(0, $max_files-1);
$datei4 = rand(0, $max_files-1);
$datei1 = $ordner_inhalt[$datei1];
$datei2 = $ordner_inhalt[$datei2];
$datei3 = $ordner_inhalt[$datei3];
$datei4 = $ordner_inhalt[$datei4];
echo"
<img width=\"100\" height=\"100\" src=\"$datei1\" alt=\"\" />&nbsp;
<img width=\"100\" height=\"100\" src=\"$datei2\" alt=\"\" />&nbsp;
<img width=\"100\" height=\"100\" src=\"$datei3\" alt=\"\" />&nbsp;
<img width=\"100\" height=\"100\" src=\"$datei4\" alt=\"\" />
";);
Das ist mein Code, aber irgendwie will das alles nicht so hinhauen :(
Wo liegt mein fehler?
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

So geht das nicht...

Du kannst PHP Befehle nicht beliebig schachteln.

Im Prinzip geht das bei den meisten Skripten in etwa so:
  • Erstelle eine neue Variable die es noch nicht in dem Skript gibt (ich nehme meist $text) und erstelle diese als String völlig leer:

    Code: Alles auswählen

    $text = '';
  • Platziere diese Variable vor deinem neu eingefügtem Code.
  • Ersetze jedes Vorkommen von "echo" im Code durch "$text .= "
  • Erstelle am Ende des Skriptes die Template Zuordnung:

    Code: Alles auswählen

    $template->assign_var('TEMPLATE_VARIABLENNAME_OHNE_GESCHWEIFTE_KLAMMERN', $text);
Das Funktioniert nur dann nicht, wenn entweder Funktionen oder Variablen im Code vorkommen, die in phpBB "reserviert" sind, als für andere Zwecke benutzt werden. Ist bei diesem Skript aber nicht der Fall.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
jolle-pe
Mitglied
Beiträge: 7
Registriert: 01.04.2005 19:16
Kontaktdaten:

Beitrag von jolle-pe »

Allerbesten Dank!

Funktioniert jetzt so wie ich mir das vorgestellt habe.
Schönen abend noch

Gruß
Julian
Antworten

Zurück zu „phpBB 2.0: Mod-Bastelstube“