Deutsch:Vorlage für in phpBB3 eingebundene Seiten
From phpBB Development Wiki
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.
Contents |
Jede für phpBB3 erstellte Seite benötigt 3 Teile
- neueseite.php -- Dies ist die PHP Seite, die ein Besucher aufrufen wird, wie z.B. : http://meine-seite.de/neueseite.php. Diese Datei wird den Hauptteil des PHP/Script beinhalten und die Seite im phpBB3 Framework darzustellen.
- /phpBB3/language/<lang>/mods/meine_sprach_datei.php -- Dies ist Deine PHP Sprach Datei welche alle Deine Sprachvariablen beinhaltet.
- /phpBB3/styles/<style>/template/mein_template.html -- Dies ist Deine HTML Template Datei welche alle Template Variablen und HTML beinhaltet um die Seite, die der Besucher aufruft, darzustellen.
Schritt 1: Erstellen der PHP Datei
Speichere diese Datei in dem Foren Hauptordner ab ( dort wo z.B. die Datei memberlist.php liegt ) und nenne sie: neueseite.php.
<?php
/**
*
* @author Original Autor Benutzername autor_email@domain.de - http://meine-seite.de
* @author Anderer Autor Benutzername andere_email@domain.de - http://domain.de
*
* @package {PACKAGENAME}
* @version $Id$
* @copyright (c) 2007 Dein Gruppen Name
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
/**
* @ignore
*/
// 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);
// Da wir weiter unten noch einen Avatar anzeigen lassen wollen,
// benötigen wir noch die dazu passende Funktion
// die in der Datein includes/functions_display.php vorhanden ist.
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
// Session auslesen und Benutzer-Informationen laden
$user->session_begin(); // Session auslesen
$auth->acl($user->data); // Benutzer-Informationen laden
$user->setup('mods/meine_sprach_datei'); // Sprachvariablen aus eigener Sprach Datei laden
/*
* Nun folgt erst Dein PHP Code für die neue Seite, also:
* Variablen setzen, Datenbankabfragen, Einfügen und Entfernen von Einträgen usw...
*
* Dies ist nun ein sehr primitives Beispiel.
* Es soll nur veranschaulichen wie es funktioniert.
*
*/
$example_variable = sprintf($user->lang['TIME_NOW'], $user->format_date(time()));
$google_logo = '<a href="http://www.google.com/"><img src="http://www.google.com/intl/en_ALL/images/logo.gif" alt="Google" /></a>';
// Ein typischer Gebrauch um Variablen an das Template zu senden.
$template->assign_vars(array(
'EXAMPLE_VAR' => $example_variable,
'GOOGLE_LOGO' => $google_logo,
'MY_AVATAR' => get_user_avatar($user->data['user_avatar'], $user->data['user_avatar_type'], $user->data['user_avatar_width'], $user->data['user_avatar_height']),
));
/*
* Nun weisen wir ein paar statische Daten einem Array zu.
* Alle Sprachvariablen werden normalerweise in der Sprach Datei zugewiesen,
* dies dient hier nur zur DEMONSTRATION.
*/
$some_array = array(
array(
'beispiel' => 'Nur ein Beispiel 1',
'demonstration' => 'Etwas zum zeigen',
),
array(
'beispiel' => 'Nur ein Beispiel 1',
'demonstration' => 'schon wieder etwas zum zeigen',
),
);
/*
* Standard Beispiel um eine Block Variable fuer das Template zu fuellen.
* Dies wird Dir ermöglichen einen Block oder ein Array im Template darzustellen
* Dies ist nützlich um SQL Abfragen aus der Datenbank in das Template zu überführen.
*/
foreach ($some_array as $row)
{
$template->assign_block_vars('block_name', array(
'EXAMPLE' => $row['beispiel'],
'DEMO' => $row['demonstration'],
));
}
// Seiten Titel, diese Sprach Variable sollte in der Sprach Datei,
// welche weiter oben genannt wurde, definiert sein.
page_header($user->lang['MEIN_TITEL']);
// Defniere nun den Dateinamen Deines Templates welches Du benutzen moechtest.
// Dies ist der Name von Deinem Template welches unter /styles/<style>/templates/ zu finden ist.
$template->set_filenames(array(
'body' => 'mein_template.html',
));
// Script vervollständigen und Seite anzeigen lassen.
page_footer();
?>
Schritt 2: Erstellen der Sprach Datei
Speichere diese Datei im Sprach Verzeichnis unter folgendem Pfad:
/phpBB3/language/<lang>/mods/meine_sprach_datei.php.
Beachtet bitte, das Sprach Dateien im UTF-8 ohne BOM Format abgespeichert werden müssen!
<?php
/**
*
* groups [German]
*
* @author Mein Benutzername email@domain.de - http://meine-seite.de
*
* @package language
* @version $Id$
* @copyright (c) 2007 Deine Gruppe
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
/**
* DO NOT CHANGE
*/
if (!defined('IN_PHPBB'))
{
exit;
}
if (empty($lang) || !is_array($lang))
{
$lang = array();
}
// DEVELOPERS PLEASE NOTE
//
// All language files should use UTF-8 as their encoding and the files must not contain a BOM.
//
// Placeholders can now contain order information, e.g. instead of
// 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
// translators to re-order the output of data while ensuring it remains correct
//
// You do not need this where single placeholders are used, e.g. 'Message %d' is fine
// equally where a string contains only two placeholders which are used to wrap text
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
$lang = array_merge($lang, array(
'EXAMPLE' => 'Beispiel',
'DEMO' => 'Demo',
'TIME_NOW' => 'Die aktuelle Zeit lautet %s',
'MEIN_TITEL' => 'Meine neuer Seiten Titel',
));
?>
Schritt 3: Erstellen der eigenen Template Datei
Speichere diese Datei im Template Verzeichnis des Styles welches Du verwendest unter
folgendem Pfad:
/phpBB3/styles/<style>/template/mein_template.html.
<!-- INCLUDE overall_header.html -->
<div>{MY_AVATAR}</div>
<div>{EXAMPLE_VAR}</div>
<div>{GOOGLE_LOGO}</div>
<table class="table1" cellspacing="1">
<tr>
<th>{L_EXAMPLE}</th>
<th>{L_DEMO}</th>
</tr>
<!-- BEGIN block_name -->
<tr class="<!-- IF block_name.S_ROW_COUNT is even -->bg1<!-- ELSE -->bg2<!-- ENDIF -->">
<td>{block_name.EXAMPLE}</td>
<td>{block_name.DEMO}</td>
</tr>
<!-- END block_name -->
</table>
<!-- INCLUDE overall_footer.html -->
Schritt 4: Navigiere zu Deiner neuen Seite
Wenn Du fertig bist, rufe Deine neue Seite mit Deinem Browser auf, z.B.: http://deine-seite.de/neueseite.php
Nun kannst Du Deine neue Seite weiter anpassen bis sie Dir gefaellt.
- $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: neueseite.php, bei index.php5 => neueseite.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:case 'report': $location = $user->lang['REPORTING_POST']; $location_url = append_sid("{$phpbb_root_path}index.$phpEx"); break;Danach einfügen:case 'neueseite':
Wichtig: zu: case 'neueseite': in diesem Fall heißt die Seite, die ihr erstellen wollt: "neueseite.php". Ändert den Code also entsprechend ab (z.B. bei "teampage.php": case 'teampage')$location = 'Betrachtet "Eure Seite"'; $location_url = append_sid("{$phpbb_root_path}neueseite.$phpEx"); break;
Entsprechend dazu müsst ihr $location_url = append_sid("{$phpbb_root_path}neueseite.$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
$template->set_filenames(array( 'body' => 'mein_template.html') );
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
<!-- INCLUDE overall_header.html -->
enthalten. Um den Footer einzubinden, muss am Ende der Datei folgendes eingfügt werden:<!-- 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.
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:
if ($user->data['user_id'] == ANONYMOUS) { login_box(); }
- Weiterhin kann so geprüft werden, ob ein User Admin-Rechte hat:
if ($auth->acl_get('a_')) { }
Entsprechendes gild für Moderatoren-Rechte:
if ($auth->acl_getf_global('m_')) { }
Die Prüfung, ob ein User Admin oder Moderator ist, erfolgt folgendermaßen:if ($auth->acl_get('a_') || $auth->acl_getf_global('m_')) { }
Weitergabe der Sitzungsdaten
<a href="index.php">Zum Forum</a>besser
<a href="<?php append_sid('index.php'); ?>">Zum Forum</a>verwendet werden, wenn von einer Seite mit dieser Vorlage auf eine Foren-Seite oder auf eine andere Seite mit dieser Vorlage verwiesen wird.
- Um userabhängigen Text zu schreiben muss man lediglich in der html-Datei folgendes
<!-- IF not S_IS_BOT and S_USER_LOGGED_IN -->
über den User-Text schreiben. Danach muss man<!-- ENDIF -->
schreiben. - Über den Gast-Text muss man
<!-- IF not S_USER_LOGGED_IN or S_IS_BOT -->
schreiben. Natürlich auch dort wieder mit<!-- ENDIF -->
abschließen.

