php Datei inculden

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.
Antworten
Benutzeravatar
Swat
Mitglied
Beiträge: 498
Registriert: 27.04.2005 15:21
Wohnort: Mainz

php Datei inculden

Beitrag von Swat »

Moin ... ich sitze irgendwie in einer Sackgasse.

Folgendes Problem habe ich, ich habe ein Script welches auf mehrere Webseiten bzw. Server eingesetzte wird. Dazu gibt es pro Webseite ein lokales Script welches mittels fopen auf das zentrale zugreift, Parameter übermittelt und eine Ausgabe erstellt. Dies klappt soweit auch ganz gut. ... Bis ich auf die Idee kam dies auch bei phpBB zu nutzen :roll:
Ich bekomme es nicht hin das die Ausgabe des lokalen Scriptes im Template eingebaut wird. Die Ausgabe erfolgt immer über dem Header :-?

Habe es schon vieles durch probiert, dies ist mein derzeitiger Versuch: (ldb.php im root; Vorlage für eingebundene Seiten)

Code: Alles auswählen

[...]
$ldb_inter = include($phpbb_root_path . 'ldb_inter.' . $phpEx);

$template->assign_vars(array(
    'LDBINTER'    => $ldb_inter,
));

// Angabe eurer Content-Seite
$template->set_filenames(array(
    'body' => 'ldb.html')
);
[...] 
in der lbd.html habe ich dazu ein entsprechendes {LDBINTER}
an der Position wo ich es gern hätte zwischen header und footer :wink:

InlineFrame etc geht nicht, da die Höhe der Ausgabe stark schwankt und ich auch kein Fan davon bin.
Mit php im Template kam ich nicht klar ... ging irgendwie auch nach Aktivierung und Cache leeren nicht.

Mein Ziel wäre es die Ausgabe des includes an die gewünschte Stelle zu bekommen und eben nicht gleich zu beginn der Datei/Ausgabe...
Hat da jemand eine Idee?

Danke im Voraus
Swat

Diabetes is more than an illness - it's a way of life.
Benutzeravatar
buegelfalte
Mitglied
Beiträge: 759
Registriert: 16.02.2005 14:32
Wohnort: Köln
Kontaktdaten:

Re: php Datei inculden

Beitrag von buegelfalte »

Der Include gibt nichts zurück, du kannst also nicht mit $string = include(irgendwas); die Ausgabe, die die "irgendwas"-Datei macht, in einen String umleiten, daher wird die Ausgabe auch immer direkt da passieren, wo du inkludierst. Gedanklich funktioniert das so, daß der Include-Befehl die Anweisungen ausführt, die in der inkludierten Datei stehen, ALS OB sie in der Datei stehen würden, die das Include ausführt. Steht in der inkludierten Datei ein "echo", wird eben ein "echo" ausgeführt.

Wenn du die Ausgabe abgreifen willst, kannst du das hier probieren:

Code: Alles auswählen

ob_start();
include("deine datei");
$output = ob_get_contents();
ob_end_clean(); 
Dadurch wird die Ausgabe unterbrochen und im Puffer gesammelt, durch "ob_get_contents" wird der Puffer, der jetzt die Ausgabe deines Includes enthält, in die Variable $output geschrieben, diese kannst du dann an dein Template übergeben.
Ich kann dir allerdings nicht sagen, wie der Code reagiert, wenn die ganze Seite erst im Puffer gesammelt wird, um dann z.B. komprimiert (Stichwort: gzip) an den Browser übertragen zu werden.


Alternativ: mach doch keine Ausgaben im Include-File sondern fülle einfach eine Variable, so daß du nach dem include direkt eine gefüllte Variable hast, die du weiterverwenden kannst.

Also statt

Code: Alles auswählen

echo 'text';
echo 'mehr text'; 
steht in der include-Datei

Code: Alles auswählen

$output = 'text';
$output .= 'mehr text'; 
Nach dem Inkludieren steht dann alles in der Variable $ouput und kann entweder sofort ausgegeben oder sonstwie weiterverarbeitet werden, dann hast du keine Probleme mit überlappenden Puffern (falls es so etwas gibt, vielleicht ist PHP ja intelligent genug, sowas zu handhaben, keine Ahnung).

B.
http://www.beehave.de - home of humbug - und zocken !
[kein Support per PN]
Benutzeravatar
Swat
Mitglied
Beiträge: 498
Registriert: 27.04.2005 15:21
Wohnort: Mainz

Re: php Datei inculden

Beitrag von Swat »

buegelfalte hat geschrieben: Wenn du die Ausgabe abgreifen willst, kannst du das hier probieren:

Code: Alles auswählen

ob_start();
include("deine datei");
$output = ob_get_contents();
ob_end_clean(); 
Dadurch wird die Ausgabe unterbrochen und im Puffer gesammelt, durch "ob_get_contents" wird der Puffer, der jetzt die Ausgabe deines Includes enthält, in die Variable $output geschrieben, diese kannst du dann an dein Template übergeben.
Ich kann dir allerdings nicht sagen, wie der Code reagiert, wenn die ganze Seite erst im Puffer gesammelt wird, um dann z.B. komprimiert (Stichwort: gzip) an den Browser übertragen zu werden.
Danke, das klappt super so. Also konnte keine Probleme feststellen.

Vielen Dank :D
Swat

Diabetes is more than an illness - it's a way of life.
Antworten

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