mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Fr 29.03.2024 08:02 Benutzername: Passwort: Auto-Login

Thema: PHP | Templates vom 12.06.2008


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> PHP | Templates
Seite: 1, 2  Weiter
Autor Nachricht
choise
Threadersteller

Dabei seit: 01.02.2007
Ort: Würzburg
Alter: 35
Geschlecht: Männlich
Verfasst Do 12.06.2008 14:14
Titel

PHP | Templates

Antworten mit Zitat Zum Seitenanfang

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
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Pixelpole

Dabei seit: 25.10.2004
Ort: Trier
Alter: 37
Geschlecht: Männlich
Verfasst Do 12.06.2008 14:19
Titel

Antworten mit Zitat Zum Seitenanfang

ich persönlich finde die beste Templateengine überhaupt ist php selbst *zwinker*

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
  View user's profile Private Nachricht senden
Anzeige
Anzeige
m
Moderator

Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Do 12.06.2008 15:05
Titel

Antworten mit Zitat Zum Seitenanfang

Ich handhabe dass auch meist ähnlich, in der Richtung gibt es auch fertige Lösungen

http://phpsavant.com/yawiki/index.php?area=Savant2&page=StartExample#
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Pixelpole

Dabei seit: 25.10.2004
Ort: Trier
Alter: 37
Geschlecht: Männlich
Verfasst Do 12.06.2008 15:12
Titel

Antworten mit Zitat Zum Seitenanfang

nuja mein besipel ist jetzt auch recht minimal sag ich mal. Ooops

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 Lächel
  View user's profile Private Nachricht senden
choise
Threadersteller

Dabei seit: 01.02.2007
Ort: Würzburg
Alter: 35
Geschlecht: Männlich
Verfasst Do 12.06.2008 15:59
Titel

Antworten mit Zitat Zum Seitenanfang

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 ?!
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
m
Moderator

Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Do 12.06.2008 17:03
Titel

Antworten mit Zitat Zum Seitenanfang

Du schreibst dir extra Methoden um Scripts/CSS/MetaAngaben zu injizieren.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Pixelpole

Dabei seit: 25.10.2004
Ort: Trier
Alter: 37
Geschlecht: Männlich
Verfasst Do 12.06.2008 17:10
Titel

Antworten mit Zitat Zum Seitenanfang

das was er eben schrieb könnte er theoretisch aber auch machen, wobei du natürlich recht hast mit den extra methoden * Keine Ahnung... *

edit: spricht ja nix gegen einen include * Keine Ahnung... *

solange du das ordentlich strukturierst * Keine Ahnung... *


Zuletzt bearbeitet von Pixelpole am Do 12.06.2008 17:11, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
Pixelpole

Dabei seit: 25.10.2004
Ort: Trier
Alter: 37
Geschlecht: Männlich
Verfasst Mo 16.06.2008 08:51
Titel

Antworten mit Zitat Zum Seitenanfang

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.
  View user's profile Private Nachricht senden
 
Ähnliche Themen PHP & Templates
vb3 templates
Templates in HTML/PHP
Templates verpixeln
v bulletin 3 templates
Freie Web-Templates?
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.