php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 11.12.2004, 22:20  
Benutzer
 
Registriert seit: 10.04.2004
Beiträge: 44
Neo2k3
Standard Templateklasse für Schleifen umschreiben

Hallo,

ich habe eine Template-"Klasse", die alle PHP-Variablen in einer HTML-Datei durch die entspr. Inhalte ersetzt. Die Funktionen sehen so aus:
Code:
// TEMPLATE EINLESEN, ALS PHP CODE AUSFÜHREN UND INHALT ZURÜCKGEBEN
function load_template($FILE) {
	global $TEMPLATE;

	if(!isset($TEMPLATE[$FILE])) $TEMPLATE[$FILE] = read_file($FILE.".html");
	return str_replace("\"", "\\\"", $TEMPLATE[$FILE]);
}

// DATEI EINLESEN UND DEN INHALT ZURÜCKGEBEN
function read_file($FILENAME) {
	global $email;

	if(file_exists($FILENAME)) {
			return implode("", file($FILENAME));
	} else {
			echo "Fehler: $FILENAME konnte nicht geladen werden!
Entweder ist diese Datei nicht auf dem Server vorhanden, oder der Absolute-Pfad ist falsch!
Sollte der Fehler erneut auftreten, dann wenden Sie sich an den <a href=\"mailto:".$email."\">Webmaster</a>";
			exit;
	}
}
Ausgeben tue ich das Template so:
Code:
eval ("\$ausgabe = \"".load_template("index")."\";");
echo $ausgabe;
Der Nachteil ist aber, dass ich für Inhalte, die in einer Schleife ausgegeben werden, teilweise mehrere Templates brauche.
Dann müsste ich z.B. jeweils ein Template für die Kopfzeile einer Tabelle, für den Tabellenrumpf (wird in Schleife ausgegeben) und für den Fuß machen.

Jetzt möchte ich zusätzlich die zu wiederholenden Blöcke mit {START BLOCK1} und {END BLOCK1} in HTML angeben.

Code:
<table width="600" border="0">
  <tr>
    <td>Name</td>
    <td>Vorname</td>
  </tr>
  {START BLOCK1}
	<tr>
    <td>$name</td>
    <td>$vorname</td>
  </tr>
	{END BLOCK1}
</table>
Der nächste zu wiederholende Bereich würde dann BLOCK2 heissen.

Wie muss ich die Funktionen abändern. Irgendwie muss das doch mit preg_replace() funktionieren oder?

Thx, Neo2k3
Neo2k3 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 11.12.2004, 23:47  
Gast
 
Beiträge: n/a
Standard

Zitat:
Wie muss ich die Funktionen abändern. Irgendwie muss das doch mit preg_replace() funktionieren oder?
Warum willst Du das Fahrrad noch mal erfinden?

1. "eval is evil!" (EDIT: Tippfehler)
2. es gibt einige gute Templateklassen: PEAR::HTML_TEMPLATE_*, Smarty, KTemplate, FastTemplate usw.
3. ein Beispiel für KTemplate findest Du da:
http://test.php-help.info/template-2/ (Quelltexte werden angezeigt)

Wenn Du nicht dumm sterben willst, dann analysiere zB. den Quelltext von KTemplate, damit Du lernst, wie es gemacht wird.
 
Alt 12.12.2004, 00:21  
Benutzer
 
Registriert seit: 10.04.2004
Beiträge: 44
Neo2k3
Standard

werd ich machen
__________________
www.lanwarscript.de.vu
Neo2k3 ist offline  
Alt 12.12.2004, 02:15  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von meikel
1. "eval ist evil!"
why that?
 
Alt 12.12.2004, 02:29  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von drib
Zitat:
Zitat von meikel
1. "eval ist evil!"
why that?
eval ist immer ein Anlaß, nach Hintertürchen zu suchen.

Ein Template wird "ausgefüllt" und nicht "ausgeführt".
 
Alt 12.12.2004, 02:39  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von meikel
Ein Template wird "ausgefüllt" und nicht "ausgeführt".
... wenn variablen im source-code ([X]HTML) stehen muss eine "ausführung" stattfinden, oder sehe ich das falsch?
 
Alt 12.12.2004, 02:54  
Gast
 
Beiträge: n/a
Standard

Zitat:
... wenn variablen im source-code ([X]HTML) stehen muss eine "ausführung" stattfinden, oder sehe ich das falsch?
Ja. Templatevariablen sehen meist so aus:
Code:
viel viel HTML {variable} und noch mehr HTML
Was soll da ausgeführt werden?

So sieht das Template in meinem Beispiel aus ( http://test.php-help.info/template-2/ ) :
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>{TITLE}</title>
<style type="text/css">
<!--
body { font-family: Verdana, Arial, Helvetica, sans-serif}
-->
</style>
</head>
<body bgcolor='#FFFFFF' text='#000000'>
<h4>Das ist ein ganz einfaches Template System (Marke &quot;Meikel&quot;)</h4>
<table width="100%" border="1" cellpadding="5" cellspacing="0">
<tr> 
<td valign="top" width="16%">
<ul>

[*]{desc}
[/list]</td>
<td valign="top"width="84%">{text}</td>
</tr>
</table>


</p>
</body>
</html>
Blöcke stehen zwischen BLOCK .

{TITLE}, {link}, {desc} und {text} sind die Variablen, die vom Script mittels der Templateklasse gefüllt und ausgegeben werden.
 
Alt 12.12.2004, 03:11  
Gast
 
Beiträge: n/a
Standard

Ja. Templatevariablen sehen meist so aus:
Code:
viel viel HTML {variable} und noch mehr HTML
Was soll da ausgeführt werden?

ok, du hast recht.
ich habe es mir mal wieder schwerer gemacht als es ist.
 
Alt 16.12.2004, 17:54  
Benutzer
 
Registriert seit: 10.04.2004
Beiträge: 44
Neo2k3
Standard

@ meikel:
Habe mir dein Templatesystem mal angeschaut. Kann man dort auch Blöcke verschachteln? Also ungefähr so:
Code:
 {var1}
 
  {var2}
 
 {var3}
__________________
www.lanwarscript.de.vu
Neo2k3 ist offline  
Alt 16.12.2004, 18:22  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Neo2k3
@ meikel:
Habe mir dein Templatesystem mal angeschaut. Kann man dort auch Blöcke verschachteln?
Ja. Die Templateklasse ist von Ralf Geschke http://www.kuerbis.org/template/ und beinhaltet ein paar Beispiele.
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
schleifen problem amsele1986 PHP Tipps 2008 3 21.06.2008 17:45
Problem mit Schleifen danysahne333 PHP Tipps 2006 2 11.09.2006 11:17
Schleifen buffern Simon9990 PHP Tipps 2006 6 03.04.2006 18:56
Mehrere Schleifen aus DB abfragen PHP Tipps 2005-2 16 22.07.2005 15:57
mod_rewrite kleines problem -umschreiben url PHP Tipps 2005-2 2 21.07.2005 13:16
schleifen in einer tabelle PHP Tipps 2005-2 9 24.06.2005 15:36
Schleifen werden ignoriert PHP Tipps 2005-2 12 21.06.2005 20:03
2 verschachtelte while Schleifen. Großes Performanceproblem Datenbanken 3 30.05.2005 12:52
While Schleifen Problem PHP Tipps 2005 9 22.05.2005 22:35
While Schleifen PHP Tipps 2005 9 22.04.2005 13:04
3 Variablen aus 3 Schleifen in ein INSERT ? PHP Tipps 2005 13 03.02.2005 17:33
ein Formular umschreiben in PHP für Anfänger PHP Tipps 2005 3 24.01.2005 11:38
while schleifen ($dsatz=mysql_fetch_assoc($abfrage1) stefan-miti PHP Tipps 2004 5 23.09.2004 20:46
variablen verküpfen bei schleifen nautiluS PHP Tipps 2004 12 16.08.2004 14:05
Templatesystem: Wie realisiere ich Schleifen? TheSkaterFriend PHP Tipps 2004 2 14.08.2004 15:19

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
eval template klasse, templateklasse blöcke, klasse in template umschreiben, ktemplate beispiele

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:46 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.