PHP gevorderde |
|
Smarty is wat veelzijdiger dan TemplatePower, maar dat terzijde denk ik niet dat het hem met TemplatePower wel gaat lukken zonder wat meer uitleg.
Wat de topicstarter wel moet doen is even een tutorial over Smarty erbij pakken, zodat hij het principe wat beter begrijpt.
Bij templates gaat het er namelijk om dat je de uiteindelijke layout en de uitvoering van de PHP code apart houdt. Je moet dus twee bestanden hebben: 1 bestand met daarin de PHP code, en het andere bestand met daarin de template code. In jouw voorbeeld krijg je dus het volgende:
<?php
// De class laden
require_once "Smarty/libs/Smarty.class.php";
$tpl = new Smarty();
$tpl->template_dir = 'templates'; // Wel even de map templates aanmaken
$tpl->compile_dir = 'templates_c'; // Wel even de map templates_c aanmaken
// Kijken of het formulier verstuurd is, ik doe het zo omdat deze
// manier wat universeler is.
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// Hier kun je eventueel nog wat bewerkingen uitvoeren op de
// verzonden data.
mail(); // Die wil je natuurlijk wel uitvoeren
$tpl->assign('done', true);
$tpl->assign('title', 'Formulier verzonden');
$tpl->display('mailform.tpl');
} else {
$tpl->assign('title', 'Formulier invullen');
$tpl->display('mailform.tpl');
}
?>
<?php // De class laden require_once "Smarty/libs/Smarty.class.php"; $tpl = new Smarty(); $tpl->template_dir = 'templates'; // Wel even de map templates aanmaken $tpl->compile_dir = 'templates_c'; // Wel even de map templates_c aanmaken // Kijken of het formulier verstuurd is, ik doe het zo omdat deze // manier wat universeler is. if ($_SERVER['REQUEST_METHOD'] == 'POST') { // Hier kun je eventueel nog wat bewerkingen uitvoeren op de // verzonden data. mail(); // Die wil je natuurlijk wel uitvoeren $tpl->assign('done', true); $tpl->assign('title', 'Formulier verzonden'); $tpl->display('mailform.tpl'); } else { $tpl->assign('title', 'Formulier invullen'); $tpl->display('mailform.tpl'); } ?>
Zoals je ziet wordt er een bestand met de naam mailform.tpl aangeroepen, die moet je in de map 'templates' zetten, en die ziet er als volgt uit:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>{$title} - contact</title>
<meta name="description" content="Een mooi contactformuliertje">
<meta name="keywords" content="contact mail form">
<meta name="author" content="timmie_loots">
</head>
<body>
{include file='header.tpl'}
{if isset($done) && $done eq true}
Klaar!
{else}
<form id="form" action="{$smarty.server.PHP_SELF}" method="post">
<!-- Hier het formulier -->
</form>
{/if}
{include file='footer.tpl'}
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>{$title} - contact</title>
<meta name="description" content="Een mooi contactformuliertje">
<meta name="keywords" content="contact mail form">
<meta name="author" content="timmie_loots">
</head>
<body>
{include file='header.tpl'}
{if isset($done) && $done eq true}
Klaar!
{else}
<form id="form" action="{$smarty.server.PHP_SELF}" method="post">
<!-- Hier het formulier -->
</form>
{/if}
{include file='footer.tpl'}
</body>
</html>
Zoals je ziet gebruik ik ook {include file='header.tpl'}, dat betekend dat je in de map 'templates' een bestand 'header.tpl' moet hebben met daarin de layout van de header, hetzelfde geld voor footer.tpl. |