Genau das hatte ich bereits beschrieben:
include() bindet zwar eine andere Datei ein, interpretiert aber dessen Inhalt dabei immer als ausführbaren PHP-Code und
nicht als "Text"!!
Daher kannst du deine Methode so nicht anwenden, um den Inhalt der gedachten 2 Boxen auf der phpBB-Seite korrekt darzustellen.
Zwar kann man auch mit einem PHP-Script direkt HTML-Inhalte während dem Script anzeigen lassen (also "ausgeben"), was aber in Systemen wie dem phpBB besser dem integrierten Template-System überlassen werden sollte, um keine Layoutfehler zu erhalten, wie das bei dir nun der Fall ist.
Du solltest das include() der beiden Box-Dateien (man könnte letztlich auch eine Datei daraus machen mit den Inhalten beider Boxen) daher besser
vor dem
$template
in der includes/functions.php für den Board-Kopf einfügen, also lediglich
include('box_right.' . $phpEx),
eintragen (mal phpBB-typisch korrigiert) und in den Box-Dateien dann diesen Aufbau verwenden (ich verzichte an dieser Stelle mal auf den phpBB-typischen Header für solche Dateien):
Code: Alles auswählen
$box_left = ''<h1>Test</h1>'; // oder was auch immer dort enthalten sein soll...
$template->assign_var('BOX_LINKS', $box_left);
Damit entfällt dann in der includes/functions.php die Zeile
'BOX_RECHTS' => include('box_right.php'),
Das Template-System des phpBB setzt dann letztlich alle Inhalte in Verbindung mit den angegebenen Template-Dateien zusammen und generiert die Seite.
Dabei ist es vollkommen egal, aus welcher PHP-Datei dafür die einzelnen Inhalte dazukommen, denn die Positionen der einzelnen Inhalte wird ja in den Template-Dateien über die betreffenden "Platzhalter" bestimmt. Somit ist es auch egal, ob die Box-Dateien am Anfang oder am Ende der Seite eingebunden werden, solange das aber immer vor dem Befehl zum Generieren der Seite geschieht (also in der Regel vor dem Aufruf der phpBB-Funktion page_footer()).
Mit deiner ursprünglichen Idee wird also der enthaltene HTML-Code der Box-Dateien als "Ausgabe" in einem Script interpretiert und dadurch genau an der Stelle auf der Seite angezeigt, wo die Box-Dateien eingebunden werden.
Also wie in deinem zweiten Screenshot zu sehen ist bereits vor dem eigentlichen phpBB-Seitenanfang.
Die Template-Token BOX_LINKS und BOX_RECHTS, die du mit den eingebundenen Box-Dateien "füttern" wolltest, bleiben daher schlichtweg leer, weil ja eben auf diese Weise nichts "zurück kommt".
Das ist eben der kleine, aber sehr entscheidende Unterschied...
BTW:
require() gibt es auch und arbeitet genau wie include(), erzeugt aber eine kritische Fehlermeldung, wenn die einzubindende Datei nicht gefunden wurde und stoppt somit den gesamten weiteren Ablauf.
Nur der Vollständigkeit halber hier mal mit erwähnt.