Vorlage für in EQdkp eingebundene Seiten

From EQdkp Plus
Jump to navigation Jump to search


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.

Benötigte Elemente

  1. 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.
  2. ./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>

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.

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').'&param=test',

Template-Variablen

Weitere Template-Variablen finden sich im Artikel Eigener_Style#Template-Engine