Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „Eigenes Template System, aber wie mache ich das jetzt?“

xero7

» Unterdrück(t)er

Hallo Liebe Community,

ich arbeite gerade an einem Design von mir, welches ich jetzt in das Templatesystem einbauen will. Es ist ganz enfac gemacht.

Habe Vermerke in der Templatedatei gesetzt:

HTML:
<!content!>

Diese werden dann mit Hilfe von str_replace ersetzt mit dem Inhalt. Das klappt auch alles, nur ist das jetzt ja blöde mit dem PHP programmieren: Hier der Code, wo die .tpl Datei mit dem Inhalt gefüllt wird.

PHP:
<?php

$headline = "
<b>Hallo</b>
";
$content = "content";
$dates = "Dates";

$template = implode("",file("temp/index.php"));
$template = str_replace("<!content!>", $content, $template);
$template = str_replace("<!headline!>", $headline, $template);
$template = str_replace("<!dates!>", $dates, $template);
echo ($template);
?>

So nun möchte ich aber innerhalb von dem $content was mit PHP programmieren vllt. ein Loginscript. Aber wie schrieeb ich jetzt am besten den PHP-Code in die Variable $content?

Liebe Grüße
Markus
 

ti8shbi

Allround

AW: Eigenes Template System, aber wie mache ich das jetzt?

Hallo.

Ja, dadurch, dass php leider nicht direkt die Variablen interpretiert, geht das nur mit eval() <-- in der PHP-Referenz gut dokumentiert....

eval hat nur einige Sicherheitsmängel...

ich mach das dann immer so, dass ich einfach das script dass ich ausführen will includiere...

in deinem fall

$content = '<? include "content.php"; ?>';

und dann die komplette $template nach dem str_replace in eine Datei speichere

PHP:
$fp = fopen("template.php","w");
if ($fp)
{
    flock($fp,2);
    fputs ($fp, $template);
    flock($fp,3);
    fclose($fp);
}
dann kannst du die template.php einfach includen anstatt echo....

include "template.php";

somit wird dann auch der Code, den du willst interpretiert....

Vielleicht gibts da noch nen einfacheren Weg, ich habs halt so gelöst :)
 
Zuletzt bearbeitet:
M

muhkuher

Guest

AW: Eigenes Template System, aber wie mache ich das jetzt?

Nuja, im Prinzip kannst du das ja so machen, dass du den Loginteil schon vorkompilierst - ich gehe mal davon aus, dass du das Formular meinst, ohne irgendwelche Scripte - und speicherst das in einer Variable, die du dann ans Template übergibst.

PHP:
<?php

$headline = "
<b>Hallo</b>
";

$formular = file_get_contents('pfad/zur/templatedateimitloginformular.tpl');
$content = $formular . "content";
$dates = "Dates";

$template = file_get_contents('pfad/zur/templatedatei.tpl');
$template = str_replace("<!content!>", $content, $template);
$template = str_replace("<!headline!>", $headline, $template);
$template = str_replace("<!dates!>", $dates, $template);
echo ($template);
?>

Allerdings ist das ja auch insgesamt recht unkomfortabel, spätestens wenn dynamische Inhalte, etc. ins Spiel kommen. Eine wirkliche Trennung von Controller und View erreichst du dabei ja auch nicht - welche ja das Ziel einer Template-Engine ist.

Ich kann dir da nur Smarty wärmstens ans Herz legen, damit kannst du nach recht kurzer Einarbeitungszeit extrem viel machen. Hab mich anfangs auch damit rumgeschlagen etwas eigenes zu basteln ;)
 

xero7

» Unterdrück(t)er

AW: Eigenes Template System, aber wie mache ich das jetzt?

Vielen dank für die Antworten.

Ich dachte alles wird du das Templatesystem einfacher im gegenteil, eig. lohnt es dann schon fast nicht mehr. Ja Smartys kenne ich, habe es auch schon alles gehabt, doch komme ich mit dem Aufbau nicht klar. Verstehe nicht wo was nun hinsoll. Denn Sinn hingegen verstehe Ich. Und m das ganze Manuall durchzulesne fehlt mir leider die Zeit (Hat ja einige Seiten)

Habt ihr vllt. ein gutes Tutorial für Smartys?

Liebe Grüße
Markus

Frage: Womit arbeiten denn die großen Seiten wie T-online, Freenet, dfl.de ? Bauchen die auch mit Smarty?
 
D

derstaubige

Guest

AW: Eigenes Template System, aber wie mache ich das jetzt?

Hallo,

ich hätte da noch einen Lösungsansatz!

PHP: OOP Template System - Artikel von www.it-academy.cc - Verein für Informationstechnologie

Ich habe als Basis dieses "Tutorial" genommen. Dann habe ich die News.php wiefolgt geändert:

news.php:
PHP:
<?php
ob_start();
 
echo "Das ist hier jetzt PHP :)";
 
$inhalt = ob_get_contents();
$root = '../'; //der pfad zur template.class.php, relativ zum der aktuellen datei (ich gehe davon aus, dass sich die news.php in einem unterordner befindet, ich hoffe du kannst mir folgen!
ob_end_clean();
 
// Klasse hinzuladen 
include($root ."template.class.php"); 
 
// Objekt erzeugen ($error wird bereits im Konstrukt definiert und ist hier nur optional) 
$template = new template($root . "layout.html"); 
// Datei einlesen 
$template->readtemplate(); 
// Platzhalter ersetzen 
$template->replace("INHALT", $inhalt); 
// Seite ausgeben 
$template->parse();
?>

Das setzt dann natürlich vorraus, dass in der Layout.html auch irgendwo {INHALT} steht.

Dann kannst du, wenn du dir die news.php anguckst, das ganze mal angucken. Funktioniert super!

Links kannst du zum Beispiel auch hier gut "absolut" setzten, wenn du anstatt:

<a href="code/irgendwas.php"> einfach <a href="{ROOT}code/irgendwas.php"> schreibst. So kannst du dann nämlich immer davon ausgehen, dass der Link von dem Ordner ausgeht indem auch die template.claas.php liegt. Das selbe funktioniert dann sogar im PHP-Code, den du auf der Seite ausführen möchtest! (Schon wieder alles so blöde formuliert, sorry bin leider kein guter Erklärbär!)

Edit: Sorry für offtopic, aber lahmt das Forum bei euch eigentlich auch so?
 
Zuletzt bearbeitet von einem Moderator:

stb_87

Web-Sheriff - ohne Bild

AW: Eigenes Template System, aber wie mache ich das jetzt?

Falls du noch nicht genug hast :p :



Schlicht und einfach und erfüllt seinen Zweck
 

xero7

» Unterdrück(t)er

AW: Eigenes Template System, aber wie mache ich das jetzt?

Ne, immer her mit den Möglichkeiten. Da ich im Moment keine richitge Möglichkeit habe. Arbeite halt im Moment ohne Templates, daher würde ich gerne mit arbeiten. Daher mit allen Varianten her.

Liebe Grüße
Markus
 

ti8shbi

Allround

AW: Eigenes Template System, aber wie mache ich das jetzt?

Eine wirkliche Trennung von Controller und View erreichst du dabei ja auch nicht - welche ja das Ziel einer Template-Engine ist.

Hmm, ich check halt immer no ned, was genau der Vorteil davon ist, ein Template System auf der Basis eines Scripts zu basteln, dass in ein bis zwei Jahren wieder übern Haufen geworfen wird.....

Ich denk mir halt, Template Engines sind dazu da, Dynamischen Inhalt eine eigene Vorlage zu geben, und eben nur die Vorlage bearbeitet werden muss, um dem Inhalt ein neues Gesicht zu verleihen....

Wofür ist so ein System sonst gut?
 

CIX88

Aktives Mitglied

AW: Eigenes Template System, aber wie mache ich das jetzt?

Richtige Templates-Systeme sind einfach dazu gedacht, um Programmierung und Layout, Design zu trennen. Der Vorteil bei größeren Projekten, es können meherer Leute daran arbeiten. Der Grafiker muss nicht PHP kennen, der Programmierer hat keine Ahnung von Design etc....

Für einfachen dynamische Geschichten muss man nicht unbedingt Templates-Systeme nutzen - man kann es. Aber wenn man einmal damit gearbeitet hat, sieht man erst die Vorzüge. Am Anfang hatte ich auch so gedacht, jetzt erstelle ich alles mit Templates-Systemen.
 

ti8shbi

Allround

AW: Eigenes Template System, aber wie mache ich das jetzt?

Richtige Templates-Systeme sind einfach dazu gedacht, um Programmierung und Layout, Design zu trennen. Der Vorteil bei größeren Projekten, es können meherer Leute daran arbeiten. Der Grafiker muss nicht PHP kennen, der Programmierer hat keine Ahnung von Design etc....

Stimmt, nur is mit dem Lösungsansatz, den ich beschrieben hab, nicht genau das gegeben?

$template wird mit einem WYSIWYG-Editor erstellt, alles was der "Grafiker" einfühen muss is z.b. {!content!} und das Script, dass in $content definiert is,wird ausgeführt, versteh nicht, wo da die Trennung zwischen Code und Design fehlen sollte...
 
D

derstaubige

Guest

AW: Eigenes Template System, aber wie mache ich das jetzt?

Falls du noch nicht genug hast :p :



Schlicht und einfach und erfüllt seinen Zweck

Sicherlich ein gute Tutorial, allerdings auch schon etwas in die Jahre gekommen.

Zum Beispiel würde die show_article.php heute mit PHP 5 und eingeschaltetem safemode nicht mehr funktionieren. Da würde dann nämlich ein

PHP:
$id = htmlspecialchars($_GET[id]);

fehlen. Ich persönlich finde immernoch, dass das von mir erwähnte System mit meiner Erweiterung sehr sinning ist.

Aber das ist ja Geschmackssache.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
175.189
Beiträge
2.582.077
Mitglieder
67.259
Neuestes Mitglied
SaschMasch1312
Oben