Templates?? Warum?

10/01/2011 11:52 Brian'#1
Hallo Community,
ich stoße momentan auf ein Problem - die Templates. Ich rede hierbei von Smarty etc., diese Template Engines sind doch ziemlich überflüssig oder?
Ich meine man könnte auch eine Textdatei erstellen und dort mit <?php print $blabla ?> arbeiten. Das macht das Ganze ziemlich sinnlos.

Ein Designer wird wohl diese paar Attribute verwenden können oder?

Wie seht ihr das?
10/03/2011 14:55 Karnerbi#2
Ich selbst arbeite auch mir Smarty, und ich muss sagen ich bin sehr zufrieden damit! Die Möglichkeiten die man dort hat, wäre selbstverständlich auch ohne realisierbar - doch etwas unordentlicher.

Templates sind dazu da, um strick PHP von HTML zu trennen. Du musst dir denken Smarty macht nichts anderes, als ein File zu laden, die vordefinierten Dinge zu ersetzen, sagen wir innerhalb von {} oder Statements zu überprüfen und sie anschließend richtig ausgeben.

Quote:
Ein Designer wird wohl diese paar Attribute verwenden können oder?
So, sagen wir du hast eine Index.php in der du die "Overall" Seite anzeigst. In dieser Seite gibt es einen Header Container, Content Container und einen Footer Container. Der Header sowie der Footer Container soll gleich bleiben, nur beim Klicken eines Links soll sich der Content Container ändern. Hm, für einen Designer wird das relativ blöd, da er entweder mit <iframes> arbeiten muss oder mit ständigen echo's etc.

Fazit: bei großen Projekten ist eine Darstellung ohne Templates ein No-Go. Bei kleineren jedoch kein Problem.



anDre
10/03/2011 19:38 Brian'#3
Quote:
Originally Posted by Karnerbi View Post
Fazit: bei großen Projekten ist eine Darstellung ohne Templates ein No-Go. Bei kleineren jedoch kein Problem.
Guck dir Wordpress an..
10/04/2011 02:58 Fratyr#4
Quote:
Originally Posted by Brian' View Post
Guck dir Wordpress an..
Guck dir Webspell an, nur weilsn Namen hat kann der Code unter der Haube
trotzdem Müll sein ;)

Quote:
Ich selbst arbeite auch mir Smarty, und ich muss sagen ich bin sehr zufrieden damit! Die Möglichkeiten die man dort hat, wäre selbstverständlich auch ohne realisierbar - doch etwas unordentlicher.

Templates sind dazu da, um strick PHP von HTML zu trennen. Du musst dir denken Smarty macht nichts anderes, als ein File zu laden, die vordefinierten Dinge zu ersetzen, sagen wir innerhalb von {} oder Stat
Man braucht keine echos, um mit php ausgaben zu erzeugen, man verwende
ganz simpel den PHP Template Syntax:
PHP Code:
<?= 'Hallo!' ?>
Und zum Thema unübersichtlichkeit, da hat jeder seine eigene Meinung
schätze ich. Ich verwende generell das MVC Pattern, eine Template
engine ist hier wohl in den meisten Fällen überflüssig. Auch schleifen funktionieren mit diesem
Syntax nebenbei ziemlich einfach:
PHP Code:
<? foreach(AS val): ?>
  [..html..]<?= val ?>[..html..]
<? endforeach; ?>
Wie du siehst kommt es aufs gleiche hinaus wenn du den Template Syntax
verwendest, oder Smarty mit dem einzigen unterschied das Template
engines wesentlich langsamer sind. Übersichtlich ist der PHP
Template Syntax alle mal.
10/04/2011 10:38 sava#5
Mit Templates ist es um ein vielfaches einfacher z.b.: ein neues Design anzuwenden.

Wie die Vorredner schon gesagt haben: es geht hauptsächlich bei den Templates darum, dass der eigentliche Code nicht in der Ausgabe steht - grundlegende Trennung.

Vorallem ist es für einen Designer - der vllt nur HTML/CSS/JavaScript kann - einfacher nur die Ausgabe zusehen als den Code direkt.
10/04/2011 14:39 Brian'#6
Naja ich bleibe bei meinem PHP.
10/04/2011 17:15 sava#7
Öhm Smarty ist PHP. Ganz ehrlich: eigne dir sowas an, bei größeren Projekten wirst du es brauchen, oder zumindest dir wünschen du hättest es dir angeeignet ;)
10/04/2011 18:26 Snake124#8
ich arbeite zb nur mit switches, funktioniert 1 a und ist schnell

zb eine klassische index.php von mir:
PHP Code:
<?
session_start
(); //initialisierung der session
$time_start microtime(true); //initialisierung für die seitenaufbauzeit
require_once($_SERVER['DOCUMENT_ROOT'].'/config.php'); //lade config.php
require_once($_SERVER['DOCUMENT_ROOT'].'/system/kernel.php'); //lade restliches system
?>
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?=$pagecon['site']['titel']?></title>
<link rel="stylesheet" type="text/css" href="/style/style.css" /> <!-- lade style -->
<script type="text/javascript" src="/libs/jq.js"></script><!-- lade javascript -->
</head>

<body>
<table width="100%" border="0">
  <tr>
    <td colspan="2"><!-- HEADER --></td>
  </tr>
  <tr>
    <td width="20%"><!-- NAVI --></td>
    <td width="80%">
    <!-- CONTENT -->
    <?
    
switch($variable){
        case(
'seite1'):
            include 
$_SERVER['DOCUMENT_ROOT'].'/subsites/seite1.php'//Ausgabe wenn $variable den wert "seite1" hat
        
break;    
        case(
'seite2'):
            include 
$_SERVER['DOCUMENT_ROOT'].'/subsites/seite2.php'//Ausgabe wenn $variable den wert "seite2" hat
        
break;    
        case(
'seite3'):
            include 
$_SERVER['DOCUMENT_ROOT'].'/subsites/seite3.php'//Ausgabe wenn $variable den wert "seite3" hat
        
break;    
        case(
'home'): //Ausgabe wenn $variable den wert "home" hat oder leer bzw nicht initialisiert ist
        
default:
            
//Ausgabe Variante 1
                
echo '<h3>Startseite blahföhn...</h3><br />';
            
//
            //Ausgabe Variante 2
                
?>
                    <h3>Startseite blahföhn...</h3><br />
                   <?
            
//            
        
break;
    }
    
?>
    </td>
  </tr>
  <tr>
    <td colspan="2">
    <!-- FOOTER -->
    <?
        $time_end 
microtime(true);
        
$time $time_end $time_start;
        echo 
"Ladezeit: "number_format($time2) ." Sekunden";
    
?>
    </td>
  </tr>
</table>
</body>
</html>
ich habe sogesehen nur 2 dateien welche das design bestimmen (index.php/style.css).
darin stehen (bei mir) 5 phpcodeblöcke: Initialisierung, Head, Navi, Content, Footer
dieses system nutz ich schon seit jahren, egal ob für große oder kleine seiten, es funktioniert schnell und zuverlässig.

und mal ehrlich, wer zu blöde ist 5 codeblöcke in eine index zu schreiben.... ich glaube derjenige sollte sich überlegen ob er schon alt genug für computer und internet ist..
worauf ich hinaus will, jeder designer (auch die kein php können) hat weitaus weniger arbeit als mit 30000 templatecodezeilen.

achja, flames die den persönlichen schreibstil angreifen kann man sich verkneifen, jeder sollte so arbeiten wie man es am besten kann. wenn jemand fragen zum genaueren aufbau meines codes hat, einfach anschreiben, ich teil mein unnützes wissen gern <3

mfg Aileen :)
10/05/2011 14:49 Karnerbi#9
Quote:
Man braucht keine echos, um mit php ausgaben zu erzeugen, man verwende
ganz simpel den PHP Template Syntax:
Kann schon sein, dass das bei deiner Template Engine so vorgesehen ist, jedoch bei Smarty wird seit dem neuen Release davon abgeraten => {php} {/php}
Denn nun ist es möglich Funktionen zu vordefinieren bevor man ein Template aufruft, an diese kann man dann Parameter etc. weitergeben. Desweiteren erlaubt dir Smarty Verbindungen zu Datenbanken herzustellen (Mysql, Mssql - für weitere gibt es s.g. Extensions).
10/05/2011 19:36 Brian'#10
Quote:
Originally Posted by Karnerbi View Post
Denn nun ist es möglich Funktionen zu vordefinieren bevor man ein Template aufruft, an diese kann man dann Parameter etc. weitergeben. Desweiteren erlaubt dir Smarty Verbindungen zu Datenbanken herzustellen (Mysql, Mssql - für weitere gibt es s.g. Extensions).
Kann man im ganz normalem PHP auch...
10/06/2011 08:41 Karnerbi#11
Quote:
Originally Posted by Brian' View Post
Kann man im ganz normalem PHP auch...

Aber bei einem Template normaler weise nicht, da dieses aus HTML besteht ... zumindestens ist das bei Smarty so.
10/06/2011 09:13 sava#12
o_O smartys template Dateien sind sozusagen phtml, oder denkst du sowas wie "{if}" ist HTML code?
10/06/2011 15:28 Karnerbi#13
Smarty Templates sind einfach nur Datein die eine Endug haben, um von der "Engine" gefunden zu werden. Das Template / die Datei wird eingelesen und die Engine verwertet dann die integrierten Funktionen, Variablen etc.