mit { und } eine .php includen

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
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
Benutzeravatar
hibbert
Mitglied
Beiträge: 158
Registriert: 27.10.2002 15:50
Kontaktdaten:

mit { und } eine .php includen

Beitrag von hibbert »

Hi,
ich möchte gerne in einer Template Datei folgende Zeichen Verwenden:
{POS.1}
{POS.2}
usw.

Nun möchte ich gerne, dass bei {POS.1} eine bestimme .php Datei includet wird.

Der Benutzer hat über eine von mir definierte Seite die Möglichkeit {POS.1} eine beliebige Seite aus einer Auswahl zuzuweisen.

Ich hoffe mein Problem wurde verstanden und ich hoffe das mir wer weiterhelfen kann.

danke hibbert
» Wer nicht fragt bleibt dumm !! «
OnFire
Mitglied
Beiträge: 207
Registriert: 26.07.2006 18:59
Wohnort: Paderborn
Kontaktdaten:

Beitrag von OnFire »

Die einfachste Lösung wäre, wenn das Template als String eingelesen wird, ein preg_replace(), siehe: PHP-Manual.

so grob:

Code: Alles auswählen

$ergebnis = str_replace("\{pos1\}", "<? include($seite);  ?>", $template);
eval($ergebnis);
für Mehrere replacements müsste man dann noch etwas genauer ausarbeiten, eleganter geht das dann mit nempreg_replace ;) da hab ich um die Zeit aber keine Lust zu...versuch dich mal dran is ne schöne übung zu RegEx
Gruß
OnFire
Il y a plus des choses à changer dans l'avenir que dans le passé.
Benutzeravatar
hibbert
Mitglied
Beiträge: 158
Registriert: 27.10.2002 15:50
Kontaktdaten:

Beitrag von hibbert »

hi,
vielleicht hätte ich sagen sollen, dass es es sich um die overall_header.tpl handelt.

Dein Verfahren kenne ich bis jetzt auch, aber nur, wenn ich eigene Templates verwende.
Geht das für die Templates vom phpBB genauso?

hibbert
» Wer nicht fragt bleibt dumm !! «
Benutzeravatar
punkface
Mitglied
Beiträge: 3579
Registriert: 12.08.2004 23:37

Beitrag von punkface »

Hallo

Das phpBB 2.0.x Template-System erlaubt es Dateien einzubinden:
PHP-Code in der entsprechenden phpBB-Datei:

Code: Alles auswählen

$template->set_filenames(array('foo' => 'dateiname.ext'));
$template->assign_var_from_handle('BAR', 'foo');
Und dann könntest du in der entsprechenden Templatedatei mit {BAR} die Datei dateiname.ext einbinden.

Aber: Beim normalen phpBB 2.0.x wird PHP-Code in der eingebundenen Datei nicht geparst. Du könntest aber deine template.php (Backup machen!) mit der aus dem eXtreme Styles mod 2.x ersetzten, dann würde das gehen.

Die Frage ist aber, ob man anstatt die PHP-Dateien einzubinden, das Ganze nicht über das normale Templatesystem des phpBBs hingebekommt. Was bewirkt den der Code in den PHP-Dateien die du einbinden möchtest?
Benutzeravatar
hibbert
Mitglied
Beiträge: 158
Registriert: 27.10.2002 15:50
Kontaktdaten:

Beitrag von hibbert »

Hi,
sicherlich könnte ich das normale Template System verwenden, ich wollte nur wissen, ob es evtl auch anders geht, denn so müsste ich nicht alles umschreiben :wink:

Die Dateien zeigen eigentlich nur immer was an: Shoutbox, zufallsbilder, letzten Beiträge etc....

Gibt es irgendwo ein tut, wo man selber templates für phpBB erstellen kann bzw. wie ich Templates an anderen stellen in Templates einbinden kann, Beispiel:

in der overall_header.tpl soll an einer bestimmten stelle die shoutbox.tpl eingebunden werden. Dann ist dies nun mein neues ziel, da .php Dateien nicht übersetzt werden.

ich danke schonmal für die bisherige Hilfe.

hibbert
» Wer nicht fragt bleibt dumm !! «
Benutzeravatar
punkface
Mitglied
Beiträge: 3579
Registriert: 12.08.2004 23:37

Beitrag von punkface »

hibbert hat geschrieben:in der overall_header.tpl soll an einer bestimmten stelle die shoutbox.tpl eingebunden werden. Dann ist dies nun mein neues ziel, da .php Dateien nicht übersetzt werden.
Also das reine einbinden der Datei geht wie schon erklärt ganz einfach:

page_header.php
suche

Code: Alles auswählen

//
// Parse and show the overall header.
//
davor einfügen

Code: Alles auswählen

$template->set_filenames(array('shoutbox' => 'shoutbox.tpl'));
$template->assign_var_from_handle('SHOUTBOX', 'shoutbox');
Und dann könntest du in der overall_header.tpl {SHOUTBOX} verwenden, um an der entsprechenden Stelle den Inhalt der shoutbox.tpl anzuzeigen.
(siehe dazu: KB:template_syntax)

Das hat so aber gar kein Sinn, denn die Platzhalter/Template-Variablen in der shoutbox.tpl würden gar nicht ersetzt, nein, diese würden sogar entfernt und nur der reine HTML-Code aus der shoutbox.tpl würde ausgegeben. Du musst also die Platzhalter noch durch den entsprechenden Inhalt ersetzten, sprich die shoutbox.tpl ordentlich parsen. Das könntest du der Übersicht in der page_header.php wegen einfach in einer Funktion machen, die du selbst z.B. in der functions.php definierst:

Code: Alles auswählen

function shoutbox()
{
	global $db, $template, $userdata, $lang, $phpEx /*, noch mehr Variablen die benötigt werden*/;
	
	// ganz viel Code
	// noch mehr Code
	// Datenbankabfragen und deren Verarbeitung
	// immernoch ganz viel Code
	
	$template->set_filenames(array(
		'shoutbox' => 'shoutbox.tpl')
	);
	$template->assign_vars(array(
		'L_PLATZHALTER' => $lang['blub'],
		// usw. 
		// usw.
		'U_LINK' => append_sid('datei.' . $phpEx)
	);
	$template->assign_var_from_handle('SHOUTBOX', 'shoutbox');
}
Und dann in der page_header.php anstatt

Code: Alles auswählen

$template->set_filenames(array('shoutbox' => 'shoutbox.tpl')); 
$template->assign_var_from_handle('SHOUTBOX', 'shoutbox');
einfach nur

Code: Alles auswählen

shoutbox();
schreiben.

Also Beispiel kannst du dir mal die Funktion make_jumpbox in der functions.php anschauen.

Du siehst, das Ganze ist schon etwas kompliziert, aber wenn du das so machen willst, würd ich dir dabei helfen.
Benutzeravatar
hibbert
Mitglied
Beiträge: 158
Registriert: 27.10.2002 15:50
Kontaktdaten:

Beitrag von hibbert »

Hi,
man ich danke dir !!

danach habe ich gesucht, eigentlich ist es super einfach :wink:

Ich benutze deinen zweiten Vorschlag, mit dem einfachen Aufruf:

Code: Alles auswählen

shoutbox();
alleringd benötige ich ja die Shoutbox an einem Dynamischen Platz wie {POS1}.
Das habe ich dann folgendermaßen gelöst:

Code: Alles auswählen

shoutbox(3);
und

Code: Alles auswählen

function shoutbox($platz)
{
   global $db, $template, $userdata, $lang, $phpEx /*, noch mehr Variablen die benötigt werden*/;

// ...

   $template->set_filenames(array(
      'shoutbox' => 'shoutbox.tpl')
// ...
   $template->assign_var_from_handle('POS'.$platz, 'shoutbox');
}
Jetzt habe ich mir genau das zusammengebastelt was ich brauche.

Vielen dank für deine Hilfe.

hibbert
» Wer nicht fragt bleibt dumm !! «
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“