Quellcode für Beispiel advanced1.php

« zurück zur Ausgabe

PHP-Code


<?php
$thispage = 'advanced1.php';
/////////////////////////////////////////////////////////////////
//Navigation:
//Die Elemente der Navigation werden in ein assoziatives Array
//geschrieben. Das kann natürlich auch dynamisch erfolgen, wenn die
//Navigation z.B. in einer Datenbanktabelle geplegt wird.
//Um nicht mit einer vielzahl von Dateien operieren zu müssen, habe ich für
//dieses Beispiel nur _eine_ PHP-Datei verwendet, die über einen Parameter mit
//der aktuellen Seitenzahl modifiziert wird.
$gr_arr=array($thispage . '?seite=1' => "Seite 1",
$thispage . '?seite=2' => "Seite 2",
$thispage . '?seite=3' => "Seite 3",
$thispage . '?seite=4' => "Seite 4",
$thispage . '?seite=5' => "Seite 5",
$thispage . '?seite=6' => "Sonderseite");

$nr=1; //Defaultwert
//Seitenzahl aus Parameter auslesen:
if (isset($_GET['seite'])) $nr = intval($_GET['seite']);
//=========== Beschreibung für die Navigation
$descr_arr['default'] = "leftnavi_1"; //Standardlink
$descr_arr['exception'][$thispage . '?seite=6'] = "leftnavi_2";
$descr_arr['exception'][$thispage . '?seite=' . $nr] = "leftnavi_3";
//Template für das, was zwischen den Links eingefügt wird.
$descr_arr['lbr'] = 'leftnavi_lbr';
/////////////////////////////////////////////////////////////////

require_once("pb-tpl.php");
//Extension einbinden:
require_once("extensions/navi-pb-tpl.php");
$t  = new pb_tpl("templates/seiten.tpl");
$ct = new navi_pb_tpl("templates/navi.tpl");

//Da in diesen Beispielen nichts ersetzt wird, kann der jeweilige Seitentext
//direkt aus der Variablen abgerufen werden:
$se_re['seite'] = $t->tpl['seite_' . $nr];
$se_re['leftnavi'] = $ct->build_navi($gr_arr, $descr_arr);
echo $t->fill_tpl('main', $se_re);
?>


HTML-Templates

Seitentemplate


[main]
<html>
<head>
<title>Navitest</title>
<style type="text/css">
<!--

div.leftnavi {
  width:200px;
  float:left;
  border-width:1px;
  border-style:dotted;
  border-color:silver;
  padding:5px;
}

div.haupt {
   padding:10px;
   margin-left: 210px;
   margin-right: 50px;
   height:500px;
   color: #000000; background-color:#EFEFEF;

}
-->
</style>
<link rel="stylesheet" href="pb-tpl.css" type="text/css">

<meta name="author" content="Peter">
</head>
<body>
<h1>Erweiterung der Templateklasse (Navigation)</h1>
<p><a href="sourcecode/s-advanced1.html">Quellcode ansehen &raquo;</a></p>

<div class="leftnavi">
{LEFTNAVI}
</div>
<div class="haupt">
{SEITE}
</div>
<hr>
<p><a href="tabelle5.php">zurück</a> | <a href="index.html">Index</a> | - ENDE </p>

</body>
</html>
##############################
# Kommentar: Diese Texte können natürlich aus Dateien oder der DB kommen.
[seite_1]
<h1>Dies ist Seite 1</h1>
<p>Dieses Beispiel zeigt eine Möglichkeit, wie sich die Klasse pb-tpl
erweitern lässt, um etwa dafür zu sorgen, dass Links einer aktiven Seite
in der Navigation deaktiviert oder besonders hervorgehoben werden.</p>
<p>Für dieses Beispiel wird die Klasse navi-pb-tpl.php verwendet, die im
Verzeichnis <i>extensions</i> liegt.</p>

[seite_2]
<h1>Dies ist Seite 2</h1>
Gleichzeitig wird gezeigt, dass beliebig viele Templatedateien eingebunden und in der Ausgabe
verbunden werden können.

[seite_3]
<h1>Dies ist Seite 3</h1>
Die Navigation hat ihr eigenes Template. In größeren Projekten, kann man auch den PHP-Code
für die Navigation in eine include-Datei auslagern.


[seite_4]
<h1>Dies ist Seite 4</h1>
Die Templateklasse ermöglicht auch den Zugriff auf Textblöcke, in denen keine Platzhalter
ausgetauscht werden müssen.

[seite_5]
<h1>Dies ist Seite 5</h1>
Das ermöglicht z.B. Texte mehrerer Seiten in einer Datei zu halten. Praktisch z.B. für
mehrsprachige Seiten.

[seite_6]
<h1>Dies ist die ganz besondere Sonderseite.</h1>
<p>Diese Erweiterung macht es möglich, jeden Link speziell zu formatieren, indem man
in einem <i>Beschreibungs</i>array festlegt, welches Template verwendet werden soll.</p>

Navigationstemplate


#### typ ##leftnavi_item_normal
[leftnavi_1]
<a href="{HREF}">{LTITLE}</a>

#### typ ##leftnavi_item_marked
[leftnavi_2]
<b style="font-size:130%"><a href="{HREF}">{LTITLE}</a></b>

#### typ leftnavi_item_this_passive
[leftnavi_3]
<b>{LTITLE}</b>

#zwischen den Links werden für dieses Beispiel
#einfach nur zwei Zeilenumbrüche eingefügt.
[leftnavi_lbr]
<br>
<br>

« zurück zur Ausgabe