Autor |
Nachricht |
choise
Threadersteller
Dabei seit: 01.02.2007
Ort: Würzburg
Alter: 35
Geschlecht:
|
Verfasst Do 12.06.2008 14:14
Titel PHP | Templates |
|
|
Hi Leute, ich möchte eine Möglichkeit bieten, versch Templates bei einem Projekt zu integrieren.
Hab mir Template engines angeschaut wie zb smarty, auf den ersten blick jedoch finde ich das etwas übertrieben.
es sieht jetzt mit nur einem "template" ungefähr so aus:
Code: |
...
<html>
...
<body>
<div id="navi">
$show->navi();
</div>
<div id="main">
$show->main();
</div>
<div id="module">
$show->module();
</div>
</body>
</html>
|
stark vereinfacht.
lohnt es sich sowas überhaupt mit einer template engine zu machen ?
oder soll ich einfach sowas wie oben als .tpl oder so abspeichern und dann
je nachdem welches ausgewählt ist includen ?
index.php:
Code: |
<?php
// ------------------ Require once
require_once('inc/inc.variablen.php');
require_once('inc/inc.funktionen.php');
require_once('inc/inc.classes.php');
// ------------------ Sessions und so
session_start();
error_reporting(E_ALL);
hier dann n mysql query welches template..
include(linkzurtpl);
?>
|
würde das gehn, falls jemand versteht, was ich meine ?
oder hat jemand ne logische lösung ?
lg
Zuletzt bearbeitet von choise am Do 12.06.2008 14:26, insgesamt 2-mal bearbeitet
|
|
|
|
|
Pixelpole
Dabei seit: 25.10.2004
Ort: Trier
Alter: 37
Geschlecht:
|
Verfasst Do 12.06.2008 14:19
Titel
|
|
|
ich persönlich finde die beste Templateengine überhaupt ist php selbst
schau dir mal die alternative Syntax an. Die kann da sehr hilfreich sein um die Templates auch hübsch aussehen zu lassen.
ich mache das meistens so das ich diese kleine helferklasse hab um das ganze etwas zu strukturieren:
Code: |
<?php
class TEMPLATE {
protected static $tpl_content = array();
public static function assign($name, $content) {
self::$tpl_content[$name] = $content;
}
public static function unassign($name) {
if(isset(self::$tpl_content[$name])) {
unset(self::$tpl_content[$name]);
}
else {
throw new InvalidArgumentException('Element '.$name.' doesn\'t exist');
}
}
public static function display($template_file) {
if(file_exists($template_file)) {
$content = self::$tpl_content;
require($template_file);
}
else {
throw new InvalidArgumentException($template_file.' doesn\'t exist!');
}
}
public static function CONTENT($var) {
if(isset(self::$tpl_content[$var])) {
return self::$tpl_content[$var];
}
else {
throw new InvalidArgumentException('Element '.$name.' doesn\'t exist');
}
}
}
TEMPLATE::assign('title', 'Testdokument');
TEMPLATE::assign('headline', 'Testdokument');
TEMPLATE::assign('content', 'lorem ipsum bla, ich schiess dir ins gesicht');
TEMPLATE::assign('list',array('Eintrag 1',
'Eintrag 2',
'Eintrag 3',
'Eintrag 4',
'Eintrag 5'));
TEMPLATE::display('test.tpl');
|
Im Template sieht das dann so aus (und ja ich weiss das shorttags nicht überall aktiviert sind. Find die nur hübscher):
Code: |
<html>
<head>
<title><?=TEMPLATE::CONTENT('title')?></title>
</head>
<body>
<h1><?=TEMPLATE::CONTENT('headline')?></h1>
<?=TEMPLATE::CONTENT('content')?>
<ul>
<?php foreach(TEMPLATE::CONTENT('list') as $list_element) { ?>
<li><?=$list_element?></li>
<?php } ?>
</ul>
</body>
</html>
|
Das ganze unterstützt natürlich kein caching der Templates usw.
aber caching kann man auch anders realisieren.
Hier noch ein interessanter Artikel zum Thema: link
Zuletzt bearbeitet von Pixelpole am Do 12.06.2008 14:20, insgesamt 1-mal bearbeitet
|
|
|
|
|
Anzeige
|
|
|
m
Moderator
Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht:
|
|
|
|
|
Pixelpole
Dabei seit: 25.10.2004
Ort: Trier
Alter: 37
Geschlecht:
|
Verfasst Do 12.06.2008 15:12
Titel
|
|
|
nuja mein besipel ist jetzt auch recht minimal sag ich mal.
da geht natürlich einiges mehr.
hab da auch irgendwann mal auf so einer basis nen adapter für smarty geschrieben um eines meiner projekte von smarty zu trennen.
Hatte danach nen recht ordentlichen Performance anstieg
|
|
|
|
|
choise
Threadersteller
Dabei seit: 01.02.2007
Ort: Würzburg
Alter: 35
Geschlecht:
|
Verfasst Do 12.06.2008 15:59
Titel
|
|
|
irgendwie mag mir das nicht gefallen.
jetzt mal ausgehend von poles klasse da oben.
angenommen ich habe eine funktion javascripts();
soo, diese steht bei mir im header und gibt je nach seite, die benötigten script src's per echo aus:
Code: |
<head>
<?php javascripts(); ?>
</head>
|
wir dann
<script src="asd" ...
je nachdem welche seite es ist.
jetzt müsste ich ja diese funktion umschreiben, da ich ja nicht,
Code: |
<?=TEMPLATE::CONTENT('js')?>
|
Code: |
TEMPLATE::assign('js', 'javascripts())
|
machen kann oder ?
----
verdammt, ich hätte mich mit diesem thema viel früher beschäftigen müssen >.<
nunja,.. nun muss ich das irgendwie so hinbekommen,...
werd ich es wohl am ende doch mit einem einfach include machen ?!
|
|
|
|
|
m
Moderator
Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht:
|
Verfasst Do 12.06.2008 17:03
Titel
|
|
|
Du schreibst dir extra Methoden um Scripts/CSS/MetaAngaben zu injizieren.
|
|
|
|
|
Pixelpole
Dabei seit: 25.10.2004
Ort: Trier
Alter: 37
Geschlecht:
|
Verfasst Do 12.06.2008 17:10
Titel
|
|
|
das was er eben schrieb könnte er theoretisch aber auch machen, wobei du natürlich recht hast mit den extra methoden
edit: spricht ja nix gegen einen include
solange du das ordentlich strukturierst
Zuletzt bearbeitet von Pixelpole am Do 12.06.2008 17:11, insgesamt 1-mal bearbeitet
|
|
|
|
|
Pixelpole
Dabei seit: 25.10.2004
Ort: Trier
Alter: 37
Geschlecht:
|
Verfasst Mo 16.06.2008 08:51
Titel
|
|
|
zu diesem Thema gibt es übrigens einen schönen Artikel in der aktuellen Ausgabe von PHP Solutions. Falls jemand daran interesse hat könnte ich den Artikel nachher mal einscannen.
|
|
|
|
|
|
|
|
Ähnliche Themen |
PHP & Templates
vb3 templates
Templates in HTML/PHP
Templates verpixeln
v bulletin 3 templates
Freie Web-Templates?
|
|