Hi,
Wie versprochen sind hier noch ein paar Code Beispiele.
Templatedatei und normale Platzhalter definieren
PHP:
<?php
#Parser Klasse includen
include('parser.php');
#Parser initialisieren
$tpl = new TemplateParser("/tutorials.de/PHP Tutorials/TemplateParser/");
#Template hinzufügen
$tpl->newFile("header.tpl");
#Platzhalter hinzufügen (Platzhaltername, WERT)
$tpl->addPlHo("HOME_URL","/index.php");
$tpl->addPlHo("LOGO_URL","");
$tpl->addPlHo("BOARD_NAME","example.com");
$tpl->addPlHo("BOARD_DESCRIPTION","Grubi's Testforum");
$tpl->addPlHo("F_NAVI","example.com->showforum");
#Template parsen und ausgeben
$tpl->parseTemplate();
?>
So könnte da dazugehörige Template aussehen.
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="de">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="de" />
<title>Neue Seite 1</title>
<link rel="stylesheet" type="text/css" href="forum.css" />
</head>
<body>
<div class="body">
<table border="0" width="100%" class="tborder">
<tr>
<td width="25%" height="104" class="rowcol3" align="center"><a href="{HOME_URL}"><img border="0" src="{LOGO_URL}" alt="" /></a></td>
<td width="50%" height="104" colspan="2" class="rowcol3" align="center"><!--<div class="kanteunten"> </div>-->{BOARD_NAME}<br /><br />{BOARD_DESCRIPTION}</td>
<td width="25%" height="104" class="rowcol3">Hier kann auch noch was hin.</td>
</tr>
<tr>
<td width="100%" height="2" colspan="4" class="underhead"></td>
</tr>
<tr>
<td width="25%" height="19"> </td>
<td width="25%" height="19" align="center">ControlPanel</td>
<td width="25%" height="19" align="center">Mitglieder</td>
<td width="25%" height="19" align="center">Suche</td>
</tr>
<tr>
<td width="100%" height="17" colspan="4" class="underhead"><span class="navigator">{F_NAVI}</span></td>
</tr>
</table><br />
Wenn man die
mit
ersetzt, bekommt man folgende Ausgabe.
Code:
TemplateParser Object
(
[TemplatePlHo] => Array
(
[0] => Array
(
[.] => Array
(
[HOME_URL] => /index.php
[LOGO_URL] =>
[BOARD_NAME] => example.com
[BOARD_DESCRIPTION] => Grubi's Testforum
[F_NAVI] => example.com->showforum
)
)
)
[CountTemplateFile] => 0
[openedTemplate] => Array
(
[0] => <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="de">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="de" />
<title>Neue Seite 1</title>
<link rel="stylesheet" type="text/css" href="forum.css" />
</head>
<body>
<div class="body">
<table border="0" width="100%" class="tborder">
<tr>
<td width="25%" height="104" class="rowcol3" align="center"><a href="{HOME_URL}"><img border="0" src="{LOGO_URL}" alt="" /></a></td>
<td width="50%" height="104" colspan="2" class="rowcol3" align="center"><!--<div class="kanteunten"> </div>-->{BOARD_NAME}<br /><br />{BOARD_DESCRIPTION}</td>
<td width="25%" height="104" class="rowcol3">
Hier kann auch noch was hin.
</td>
</tr>
<tr>
<td width="100%" height="2" colspan="4" class="underhead"></td>
</tr>
<tr>
<td width="25%" height="19"> </td>
<td width="25%" height="19" align="center">ControlPanel</td>
<td width="25%" height="19" align="center">Mitglieder</td>
<td width="25%" height="19" align="center">Suche</td>
</tr>
<tr>
<td width="100%" height="17" colspan="4" class="underhead"><span class="navigator">{F_NAVI}</span></td>
</tr>
</table>
<br />
)
[templatePath] => /tutorials.de/PHP Tutorials/TemplateParser/
)
#########################
Templatedatei und verschachtelte Blöcke definieren
PHP:
<?php
#Parser Klasse includen
include('parser.php');
#Parser initialisieren
$tpl = new TemplateParser("/tutorials.de/PHP Tutorials/TemplateParser/");
#Template hinzufügen
$tpl->newFile("index.tpl");
#verschachtelte, oder auch nicht verschachtelte Blöcke definieren. (BLOCKNAME1.BLOCKNAME2.usw, "array mit Platzhaltern)
$tpl->addBlockPlHo("CATEGORIE",array("CATEGORIE_NAME" => "testkategorie"));
$tpl->addBlockPlHo("CATEGORIE.FORUM",array("FORUM_NAME" => "test",
"F_LAST_POSTER" => "fanste<br />15.16.02 16:56 Uhr",
"F_ANSWERS" => "50",
"F_TOPICS" => "1000"
)
);
$tpl->addBlockPlHo("CATEGORIE.FORUM",array("FORUM_NAME" => "test1",
"F_LAST_POSTER" => "fanste1<br />15.16.02 16:56 Uhr",
"F_ANSWERS" => "501",
"F_TOPICS" => "10001"
)
);
$tpl->addBlockPlHo("CATEGORIE",array("CATEGORIE_NAME" => "testkategorie1"));
$tpl->addBlockPlHo("CATEGORIE.FORUM",array("FORUM_NAME" => "test",
"F_LAST_POSTER" => "fanste<br />15.16.02 16:56 Uhr",
"F_ANSWERS" => "50",
"F_TOPICS" => "1000"
)
);
$tpl->addBlockPlHo("CATEGORIE.FORUM",array("FORUM_NAME" => "test1",
"F_LAST_POSTER" => "fanste1<br />15.16.02 16:56 Uhr",
"F_ANSWERS" => "501",
"F_TOPICS" => "10001"
)
);
$tpl->parseTemplate();
?>
So könnte da dazugehörige Template aussehen.
HTML:
<table width="100%" class="tborder" cellspacing="1" cellpadding="3" border="0">
<tr>
<th class="rowcol3" align="center" height="25">Foren</th>
<th class="rowcol3" align="center" nowrap="nowrap" height="25">letzter Beitrag</th>
<th class="rowcol3" align="center" height="25">Antworten</th>
<th class="rowcol3" align="center" height="25">Themen</th>
</tr>
<!-- BEGIN CATEGORIE -->
<tr>
<td class="underhead" width="100%">{CATEGORIE_NAME}</td>
<td class="underhead"></td>
<td class="underhead"></td>
<td class="underhead"></td>
</tr>
<!-- BEGIN FORUM -->
<tr>
<td width="100%" height="20" class="rowcol1">
<div style="width:400px;height:100%;margin-left:5px;">
<span class="textnormal">{FORUM_NAME}</span>
</div>
</td>
<td height="20" class="rowcol2" align="center"><span class="textmittel">{F_LAST_POSTER}</span></td>
<td height="20" class="rowcol2" align="center"><span class="textmittel">{F_ANSWERS}</span></td>
<td height="20" class="rowcol2" align="center" nowrap="nowrap"><span class="textmittel">{F_TOPICS}</span></td>
</tr>
<!-- END FORUM -->
<!-- END CATEGORIE -->
</table>
Auch hier kann man wieder die letzte Funktion ersetzten.
Die Ausgabe: (Habe den HTML Code mal weggelassen.)
Code:
TemplateParser Object
(
[TemplatePlHo] => Array
(
[0] => Array
(
[.] => Array
(
)
[CATEGORIE.] => Array
(
[0] => Array
(
[CATEGORIE_NAME] => testkategorie
[FORUM.] => Array
(
[0] => Array
(
[FORUM_NAME] => test
[F_LAST_POSTER] => fanste<br />15.16.02 16:56 Uhr
[F_ANSWERS] => 50
[F_TOPICS] => 1000
)
[1] => Array
(
[FORUM_NAME] => test1
[F_LAST_POSTER] => fanste1<br />15.16.02 16:56 Uhr
[F_ANSWERS] => 501
[F_TOPICS] => 10001
)
)
)
[1] => Array
(
[CATEGORIE_NAME] => testkategorie1
[FORUM.] => Array
(
[0] => Array
(
[FORUM_NAME] => test
[F_LAST_POSTER] => fanste<br />15.16.02 16:56 Uhr
[F_ANSWERS] => 50
[F_TOPICS] => 1000
)
[1] => Array
(
[FORUM_NAME] => test1
[F_LAST_POSTER] => fanste1<br />15.16.02 16:56 Uhr
[F_ANSWERS] => 501
[F_TOPICS] => 10001
)
)
)
)
)
)
[CountTemplateFile] => 0
[openedTemplate] => Array
(
[0] => TEMPLATECODE
)
[templatePath] => /tutorials.de/PHP Tutorials/TemplateParser/
)
Der einzige Unterschied sieht man bei den Platzhaltern für die Blöcke. Einfach mal anschauen. Wird sich alles von selbst erklären.
Natürlich kann man auch beides in eine Datei setzten.
PHP:
<?php
#Parser Klasse includen
include('parser.php');
#Parser initialisieren
$tpl = new TemplateParser("/tutorials.de/PHP Tutorials/TemplateParser/");
#Template hinzufügen
$tpl->newFile("header.tpl");
#Platzhalter hinzufügen
$tpl->addPlHo("HOME_URL","/index.php");
$tpl->addPlHo("LOGO_URL","");
$tpl->addPlHo("BOARD_NAME","example.com");
$tpl->addPlHo("BOARD_DESCRIPTION","Fanste's Testforum");
$tpl->addPlHo("F_NAVI","example.com->showforum");
#Template hinzufügen
$tpl->newFile("index.tpl");
#verschachtelte, oder auch nicht verschachtelte Blöcke definieren. (BLOCKNAME1.BLOCKNAME2.usw, "array mit Platzhaltern)
$tpl->addBlockPlHo("CATEGORIE",array("CATEGORIE_NAME" => "testkategorie"));
$tpl->addBlockPlHo("CATEGORIE.FORUM",array("FORUM_NAME" => "test",
"F_LAST_POSTER" => "fanste<br />15.16.02 16:56 Uhr",
"F_ANSWERS" => "50",
"F_TOPICS" => "1000"
)
);
$tpl->addBlockPlHo("CATEGORIE.FORUM",array("FORUM_NAME" => "test1",
"F_LAST_POSTER" => "fanste1<br />15.16.02 16:56 Uhr",
"F_ANSWERS" => "501",
"F_TOPICS" => "10001"
)
);
$tpl->addBlockPlHo("CATEGORIE",array("CATEGORIE_NAME" => "testkategorie1"));
$tpl->addBlockPlHo("CATEGORIE.FORUM",array("FORUM_NAME" => "test",
"F_LAST_POSTER" => "fanste<br />15.16.02 16:56 Uhr",
"F_ANSWERS" => "50",
"F_TOPICS" => "1000"
)
);
$tpl->addBlockPlHo("CATEGORIE.FORUM",array("FORUM_NAME" => "test1",
"F_LAST_POSTER" => "fanste1<br />15.16.02 16:56 Uhr",
"F_ANSWERS" => "501",
"F_TOPICS" => "10001"
)
);
$tpl->parseTemplate();
?>
Die Ausgabe, usw kann man sich ja einfach mal selbst anschauen.
Das wars erst einmal.
Quelle:
http://www.tutorials.de/forum/php-t...mit-verschachtelten-bloecken.html#post1256385