Vorlage für in phpBB eingebundene Seiten in phpBB3
Verfasst: 25.05.2007 22:14
In Anlehnung an Vorlage für in phpBB eingebundene Seiten für phpBB2, hier das entsprechende für phpBB3:
Vorlage für in phpBB eingebundene Seiten
Dieses ist eine Vorlage für eine Seite, die man ins phpBB-Verzeichnis legen kann und in der dann automatisch der Header/Footer sowie die Login-Daten verfügbar sind.
Anmerkungen
Damit die Sitzungsdaten zwischen den einzelnen Seitenaufrufen erhalten bleiben, speichert phpBB die ID der Sitzung in einem Cookie. Falls kein Cookie verwendet werden kann, wird die ID über die URL (&sid=...) weitergegeben. Damit diese Sitzungs-ID ggf. an die URL angehangen wird, gibt es die Funktion append_sid(), die als Parameter die URL der Seite aufnimmt. So sollte z.B. stattbesserverwendet werden, wenn von einer Seite mit dieser Vorlage auf eine Foren-Seite oder auf eine andere Seite mit dieser Vorlage verwiesen wird.
Vorlage für in phpBB eingebundene Seiten
Dieses ist eine Vorlage für eine Seite, die man ins phpBB-Verzeichnis legen kann und in der dann automatisch der Header/Footer sowie die Login-Daten verfügbar sind.
Code: Alles auswählen
<?php
// Benötigte Dateien und Variablen von phpBB
define('IN_PHPBB', true);
$phpbb_root_path = './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
// Session auslesen und Benutzer-Informationen laden
$user->session_begin();
$user->setup();
$auth->acl($user->data);
/*
* Inhaltsbereich
*/
// Header und Titel der Seite
page_header('TITEL DER SEITE');
// Angabe eurer Content-Seite
$template->set_filenames(array(
'body' => 'eure_seite.html')
);
// Footer
page_footer();
?>
- $phpbb_root_path: Wenn die Datei in einem anderen Verzeichnis als phpBB liegt, hier den relativen Pfad zu phpBB mit abschliessendem Slash (/) eintragen. Eventuell muss dazu der Cookie-Pfad im ACP auf / gesetzt werden.
- $phpEx: Um Probleme mit den Datei-Endungen zu umgehen und Fehlermeldungen zu vermeiden, ist es ratsam, für eure php-Datei die gleiche Endung zu verwenden die die index.*** im Root-Verzeichnis besitzt. (bei index.php: eure_seite.php, bei index.php5 => eure_seite.php5)
- PAGE_INDEX: Wenn du möchtest, daß deine Seite mit Titel und Link in der "Wer ist Online"-Liste aufgeführt wird, musst du wie folgt vorgehen:
In der viewonline.php ab Zeile 312 suchen:Danach einfügen:Code: Alles auswählen
case 'report': $location = $user->lang['REPORTING_POST']; $location_url = append_sid("{$phpbb_root_path}index.$phpEx"); break;
Wichtig: zu: case 'eure_seite': in diesem Fall heißt die Seite, die ihr erstellen wollt: "eure_seite.php". Ändert den Code also entsprechend ab (z.B. bei "teampage.php": case 'teampage')Code: Alles auswählen
case 'eure_seite': $location = 'Betrachtet "Eure Seite"'; $location_url = append_sid("{$phpbb_root_path}eure_seite.$phpEx"); break;
Entsprechend dazu müsst ihr $location_url = append_sid("{$phpbb_root_path}eure_seite.$phpEx"); ebenfalls abändern. - $user->data: Über den Aufruf des User-Objekts hast man u.a. Zugriff auf alle Felder der User-Tabelle eines angemeldeten Users oder eines Gasts.
- Inhaltsbereich: Hier kannst du beliebigen php-Code verwenden.
- Templatedatei: Durch
gebt ihr den Dateiname der Datei an, die den Inhalt der eingebundenen Datei enthält. Diese Datei muss im Verzeichnis /styles/euerStyle/ liegen. Um den Header einzubinden, muss diese Datei Am Anfang den Code
Code: Alles auswählen
$template->set_filenames(array( 'body' => 'eure_seite.html') );
enthalten. Um den Footer einzubinden, muss am Ende der Datei folgendes eingfügt werden:Code: Alles auswählen
<!-- INCLUDE overall_header.html -->
Code: Alles auswählen
<!-- INCLUDE overall_footer.html -->
- Soll geprüft werden, ob ein Benutzer angemeldet ist, so ist $user->data['user_id'] zu prüfen. Also z.B.
Code: Alles auswählen
if ($user->data['user_id'] == ANONYMOUS) { // Code, wenn Benutzer nicht angemeldet ist } else { // Code, wenn Benutzer angemeldet ist }
- Mit diesem Code kannst du nicht eingelogte Benutzer auf die Login-Seite umleiten:
Code: Alles auswählen
if ($user->data['user_id'] == ANONYMOUS) { login_box(); }
- Weiterhin kann so geprüft werden, ob ein User Admin-Rechte hat:Entsprechendes gild für Moderatoren-Rechte:
Code: Alles auswählen
if ($auth->acl_get('a_')) { }
Die Prüfung, ob ein User Admin oder Moderator ist, erfolgt folgendermaßen:Code: Alles auswählen
if ($auth->acl_getf_global('m_')) { }
Code: Alles auswählen
if ($auth->acl_get('a_') || $auth->acl_getf_global('m_')) { }
Damit die Sitzungsdaten zwischen den einzelnen Seitenaufrufen erhalten bleiben, speichert phpBB die ID der Sitzung in einem Cookie. Falls kein Cookie verwendet werden kann, wird die ID über die URL (&sid=...) weitergegeben. Damit diese Sitzungs-ID ggf. an die URL angehangen wird, gibt es die Funktion append_sid(), die als Parameter die URL der Seite aufnimmt. So sollte z.B. statt
Code: Alles auswählen
<a href="index.php">Zum Forum</a>
Code: Alles auswählen
<a href="<?php append_sid('index.php'); ?>">Zum Forum</a>