Smarty Template Engine: Unterschied zwischen den Versionen

Aus UUGRN
K (ein anfang)
 
Zeile 24: Zeile 24:
 
  <body>
 
  <body>
 
   &lt;h1>Der Simpler Test&lt;/h1>
 
   &lt;h1>Der Simpler Test&lt;/h1>
   &lt;p>Hier sollte jetzt der Inhalt aus $tpl_var_foo echscheinen: &lt;strong>#foo#</strong&gt;&lt;/p>
+
   &lt;p>Hier sollte jetzt der Inhalt aus $tpl_var_foo echscheinen: &lt;strong>#foo#</strong></p>
 
  </body>  
 
  </body>  
 
  </html>
 
  </html>
Zeile 42: Zeile 42:
  
 
Smarty setzt das HTML-Template erst nach PHP um. D.H. aus leicht verständlichem (auch für Webdesigner) HTML wird ein gemisch aus PHP und HTML. Dieses ergebnis wird in einer seperaten Datei Abgespeichert. Solange sich das HTML Template nicht änder wird dies auch nicht mehr geparst sondern direkt das erzeugte PHP-Skript erzeugt.
 
Smarty setzt das HTML-Template erst nach PHP um. D.H. aus leicht verständlichem (auch für Webdesigner) HTML wird ein gemisch aus PHP und HTML. Dieses ergebnis wird in einer seperaten Datei Abgespeichert. Solange sich das HTML Template nicht änder wird dies auch nicht mehr geparst sondern direkt das erzeugte PHP-Skript erzeugt.
 +
 +
===Listing 2 - Simpel Beispiel mit Smarty===
 +
 +
'''foo.php'''
 +
<?php
 +
require_once('/home/rothbe/public_html/smarty_vortrag/Smarty-2.6.13/libs/Smarty.class.php');
 +
$tpl_var_foo = 'bar';
 +
$tpl_file = 'foo.tpl.html';
 +
$smarty = new Smarty;
 +
$smarty->assign('foo',$tpl_var_foo);
 +
//  SMARTY CONFIG
 +
$smarty_home = '/home/rothbe/public_html/smarty_vortrag/smarty_simple/';
 +
$smarty->template_dir = $smarty_home.'templates';
 +
$smarty->compile_dir = $smarty_home.'templates_c';
 +
// >> ENDE SMARTY CONFIG <<
 +
$smarty->display($tpl_file);
 +
?>
 +
 +
'''templates/foo.tpl.html'''
 +
<?xml version="1.0" encoding="utf-8"?>
 +
<!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">
 +
<head>
 +
  <title>ein Simple Test</title>
 +
</head>
 +
<body>
 +
  &lt;h1>Der Simple Test&lt;/h1>
 +
  &lt;p>Hier sollte jetzt der Inhalt aus $tpl_var_foo echscheinen: &lt;strong>{$foo}</strong></p>
 +
</body>
 +
</html>
 +
 +
aus templates/foo.tpl.html macht Smarty beim ersten ausruf die Datei '''templates_c/%%E9^E9C^E9C15D49%%foo.tpl.html.php'''
 +
<?php /* Smarty version 2.6.13, created on 2006-04-22 02:06:28
 +
        compiled from foo.tpl.html */ ?>
 +
<?php echo '<?xml'; ?>
 +
version="1.0" encoding="utf-8"<?php echo '?>'; ?>
 +
 +
<!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">
 +
<head>
 +
  <title>ein Simple Test</title>
 +
</head>
 +
<body>
 +
  &lt;h1>Der Simple Test</h1>
 +
  &lt;p>Hier sollte jetzt der Inhalt aus $tpl_var_foo echscheinen: &lt;strong><?php echo $this->_tpl_vars['foo']; ?>
 +
</strong></p>
 +
</body>
 +
</html>
 +
 +
Die Ausgabe an den Browser ist die Selbe wie in Listign 1

Version vom 22. April 2006, 01:18 Uhr

Die Template Engine Smarty ist eine PHP-Bibliothek unter der LGPL. Sie ermöglicht bei der Entwicklung von Webapplikationen die Trennung von Code und Ausgabe. Die Ausgabe ist meist HTML kann aber jedes textbasierte Dateiformat sein XML, LATEX usw... .

Smarty Basic

Smarty hat im Angebot der Templatesysteme eine kleine Besonderheit. Es verarbeitet Templates nicht in zwei sondern in drei Schritten. Dies produziert auf den esten Blick ein wenig overhead beschleunigt die verarbeitung von Scripen wesentlich. Die meisten Systeme Funktionieren auf dem Prinzip Ausdruck suchen und ersetzen (Ein Bsp. Listing 1).

Listing 1 - Simpel Beispiel

foo.php

<?php
 $tpl_var_foo = 'bar';
 $tpl_file = 'foo.tpl.html';
 $tpl = implode(' ',file($tpl_file));
 $tpl = preg_replace("'#foo#'i",$tpl_var_foo,$tpl);
 echo $tpl; 
?>

foo.tpl.html

<?xml version="1.0" encoding="utf-8"?>
<!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">
<head>
 <title>ein Simpler Test</title>
</head>
<body>
  <h1>Der Simpler Test</h1>

<p>Hier sollte jetzt der Inhalt aus $tpl_var_foo echscheinen: <strong>#foo#

</body> 
</html>

Ausgabe von foo.php

<?xml version="1.0" encoding="utf-8"?>
<!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">
<head>
 <title>ein Simpler Test</title>
</head>
<body>
  <h1>Der Simpler Test</h1>
  <p>Hier sollte jetzt der Inhalt aus $tpl_var_foo echscheinen: <strong>foo</strong></p>
</body> 
</html>

Smarty setzt das HTML-Template erst nach PHP um. D.H. aus leicht verständlichem (auch für Webdesigner) HTML wird ein gemisch aus PHP und HTML. Dieses ergebnis wird in einer seperaten Datei Abgespeichert. Solange sich das HTML Template nicht änder wird dies auch nicht mehr geparst sondern direkt das erzeugte PHP-Skript erzeugt.

Listing 2 - Simpel Beispiel mit Smarty

foo.php

<?php
require_once('/home/rothbe/public_html/smarty_vortrag/Smarty-2.6.13/libs/Smarty.class.php');
$tpl_var_foo = 'bar';
$tpl_file = 'foo.tpl.html';
$smarty = new Smarty;
$smarty->assign('foo',$tpl_var_foo);
//  SMARTY CONFIG
$smarty_home = '/home/rothbe/public_html/smarty_vortrag/smarty_simple/';
$smarty->template_dir = $smarty_home.'templates';
$smarty->compile_dir = $smarty_home.'templates_c';
// >> ENDE SMARTY CONFIG << 
$smarty->display($tpl_file);
?>

templates/foo.tpl.html

<?xml version="1.0" encoding="utf-8"?>
<!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">
<head>
 <title>ein Simple Test</title>
</head>
<body>
  <h1>Der Simple Test</h1>

<p>Hier sollte jetzt der Inhalt aus $tpl_var_foo echscheinen: <strong>{$foo}

</body> 
</html>

aus templates/foo.tpl.html macht Smarty beim ersten ausruf die Datei templates_c/%%E9^E9C^E9C15D49%%foo.tpl.html.php

<?php /* Smarty version 2.6.13, created on 2006-04-22 02:06:28
        compiled from foo.tpl.html */ ?>
<?php echo '<?xml'; ?>
version="1.0" encoding="utf-8"<?php echo '?>'; ?>

<!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">
<head>
 <title>ein Simple Test</title>
</head>
<body>

<h1>Der Simple Test

  <p>Hier sollte jetzt der Inhalt aus $tpl_var_foo echscheinen: <strong><?php echo $this->_tpl_vars['foo']; ?>

</body> 
</html>

Die Ausgabe an den Browser ist die Selbe wie in Listign 1