Vorlage für in EQdkp eingebundene Seiten
Dieses ist eine Vorlage für eine Seite, die man ins EQdkp-Verzeichnis legen kann und in der dann automatisch der Header/Footer sowie die Login-Daten verfügbar sind.
Contents
Benötigte Elemente
- 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 EQdkp Plus Framework darzustellen.
- ./styles/base_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 EQdkp Plus Hauptordner ab ( dort wo z.B. die Datei viewnews.php liegt ) und nenne sie: neueseite.php.
<?php
/*
* Project: EQdkp-Plus
* License: Creative Commons - Attribution-Noncommercial-Share Alike 3.0 Unported
* Link: http://creativecommons.org/licenses/by-nc-sa/3.0/
* -----------------------------------------------------------------------
* Began: 2010
* Date: $Date: 2013-08-24 22:22:11 +0200 (Sat, 24 Aug 2013) $
* -----------------------------------------------------------------------
* @author $Author: godmod $
* @copyright 2006-2011 EQdkp-Plus Developer Team
* @link http://eqdkp-plus.eu
* @package eqdkp-plus
*
*/
// Benötigte Dateien und Variablen von EQdkp Plus
define('EQDKP_INC', true);
$eqdkp_root_path = './';
include_once($eqdkp_root_path . 'common.php');
//ini_set('display_errors', 1); //Einkommentieren, um den Fehler im Code anzuzeigen
//Objekte initialisieren
$core = register('core'); //EQdkp Plus Core Object
$user = register('user'); //Benutzer Object
$tpl = register('template'); //Template Object
$time = register('timehandler'); //Zeithandler Object
$example_variable = $time->user_date($time->time); //Aktuelles Datum im Benutzerformat
$example_variable2 = $time->user_date($time->time, true, true); //Aktuelle Zeit im Benutzerformat
$user_name = $user->data;
$user_id = $user->id;
$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.
$tpl->assign_vars(array(
'EXAMPLE_VAR' => $example_variable,
'EXAMPLE_VAR2' => sprintf($user->lang('TIME_NOW'), $example_variable2),
'USER_NAME' => $user_name,
'USER_ID' => $user_id,
'GOOGLE_LOGO' => $google_logo,
));
/*
* 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)
{
$tpl->assign_block_vars('block_name', array(
'EXAMPLE' => $row['beispiel'],
'DEMO' => $row['demonstration'],
));
}
/*
* Seitentitel und Template-Datei festlegen
*/
$core->set_vars(array(
'page_title' => $user->lang('MEIN_TITEL'), // Seiten Titel, diese Sprach-Variable sollte oben in der Sprachdatei abgelegt worden sein
'template_file' => 'mein_template.html',
'display' => true)
);
?>
Schritt 2: Sprachvariablen anlegen
Beachtet bitte, das Sprach Dateien im UTF-8 ohne BOM Format abgespeichert werden müssen!
Öffne die Datei ./language/<deine Sprache>/lang_main.php, und füge ganz unten, vor dem schließenden PHP Tag ?>
folgendes ein:
$lang = array_merge($lang, array(
'EXAMPLE' => 'Beispiel',
'DEMO' => 'Demo',
'TIME_NOW' => 'Die aktuelle Zeit lautet %s',
'MEIN_TITEL' => 'Meine neuer Seiten Titel',
));
Speichere die Datei anschließend im UTF-8 ohne BOM-Format
Schritt 3: Erstellen der eigenen Template Datei
Speichere diese Datei im unter folgendem Pfad:
./templates/base_template/mein_template.html.
<div>{EXAMPLE_VAR}</div>
<div>{EXAMPLE_VAR2}</div>
<div>{GOOGLE_LOGO}</div>
<div>{USER_ID}</div>
<div>{USER_NAME}</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 -->row1<!-- ELSE -->row2<!-- ENDIF -->">
<td>{block_name.EXAMPLE}</td>
<td>{block_name.DEMO}</td>
</tr>
<!-- END block_name -->
</table>
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.
Anmerkungen
- $eqdkp_root_path: Wenn die Datei in einem anderen Verzeichnis als EQdkp Plus liegt, hier den relativen Pfad zu EQdkp Plus mit abschliessendem Slash (/) eintragen. Eventuell muss dazu der Cookie-Pfad im ACP auf / gesetzt werden.
- $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.
Prüfung der Benutzerrechte
- Soll geprüft werden, ob ein Benutzer angemeldet ist, so ist
$user->data->id
zu prüfen. Also z.B.if ($user->data->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) { redirect('login.php'.registry::get_const('SID')); }
- Weiterhin kann so geprüft werden, ob ein User Admin-Rechte hat:
if ($user->check_auth('a_')) { //Code, wenn Benutzer ein Administrator ist }
Weitergabe der Sitzungsdaten
Damit die Sitzungsdaten zwischen den einzelnen Seitenaufrufen erhalten bleiben, speichert EQdkp die ID der Sitzung in einem Cookie. Falls kein Cookie verwendet werden kann, wird die Session-ID über die URL (?s=...) weitergegeben. Damit diese Sitzungs-ID ggf. an die URL angehangen wird, gibt es die Konstante SID, die wie folgt geholt werden kann: registry::get_const('SID')
.
$tpl->assign_vars(array(
'EXAMPLE_LINK' => 'viewnews.php'.registry::get_const('SID').'¶m=test',
Template-Variablen
Weitere Template-Variablen finden sich im Artikel Eigener_Style#Template-Engine