Template System!
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
array
code
dank
datei
display
fehler
file
funktionieren
header
http
index
klicken
output
problem
start
system
test
url
verzeichnis
weben
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
eigendlich ist das ohne Probleme möglich; Wichtig wäre nur zu wissen wie du vor hast das Templatesystem aufzubauen.
Wenn du eine template datei erstellst und dorthinen die Variablen $index und $menu (als Besipiel) einfügst kannst du das Gleiche auch mit $titel machen -
Wenn du das Template per PHP includest, kannst du einfach <?=$titel;?> in der Header-Datei verwenden, vor dem includen des Headers setzt du dann einfach $titel = "Titel der Seite";
Du kannst auch den Header-File per get_file_contents() in eine Variable einzulesen und mit str_ireplace() verwendete Variablen wie {{TITEL}} ersetzen... Kommt drauf an, wie du dein Templatesystem machen willst. -
So sieht meine Codes aus!
index.php
<?php error_reporting(E_ALL); ini_set('display_errors', 1); $site = array(); $site['index'] = 'sites/start.php'; include('tpl/header.php'); if (isset($_GET['site'], $site[$_GET['site']])) { include $site[$_GET['site']]; } else { include $site['index']; } include('tpl/footer.php'); ?>
start.php ist die Startseite
header.php (Titel...)
footer.php alles andere ...! -
Du musst den Ansatz ändern. Bei mir läuft es so, dass man in einer Template-Datei Platzhalter definiere ({title}) und diese dann anschließend in meinem Script mit Inhalt fülle. So funktionieren eigentlich alle gängigen Templatesysteme.
-
Etwa so?
include('../tpl/header.php') $find = '({title})'; $replace = 'StartSeite'; $text = str_replace($find, $replace);
-
<?php error_reporting(E_ALL | E_STRICT); class Template { protected $template; protected $content = array(); public function __construct($template = '') { $this->template = $template; } public function loadTemplateFromFile($file) { if(file_exists($file)) $this->template = file_get_contents($file); else throw new InvalidArgumentException("File doesn't exist!"); } public function loadTemplateFromParam($template) { $this->template = $template; } public function __set($name, $value) { $this->content[$name] = $value; } public function __get($name) { return $this->content[$name]; } public function render() { $output = $this->template; foreach($this->content as $key=>$value) { $output = str_replace('{'.$key.'}', $value, $output); $output = preg_replace('~\{\{if\['.$key.'\]:(.+)\}\}~', '$1', $output); } $output = preg_replace('~\{\{if\[[A-Za-z]+\]:.+\}\}~', '', $output); return $output; } } ?>
Das macht das Prinzip glaube ich sehr deutlich -
Ich glaub es wär grundsätzlich mal vernünftig, wenn du dir ein fertiges Template-System ansiehst und "installierst", davon kannst du sicher sehr viel lernen, bevor du dir als Anfänger? ein eigenes Template System zusammenbauen willst.
Dazu empfehl ich dir Smarty. Ein benutzerfreundliches Einsteigertemplatesystem mit ziemlich guter Dokumentation (tlw. nur auf Englisch) -
Smarty mag zwar benutzerfreundlich und leicht zu erlernen sein, aber helfen tut es dem durchschnittlichen Scripter nicht wirklich, wenn er nach einer Anleitung für ein eigenes Template-System sucht. Es ist insgesamt einfach viel zu umfangreich und eigen aufgebaut, als das man es in irgendeiner Weise plagieren könnte.^^
Ich würde Dir eines von zahlreichen Tutorials, die man bei Google findet, empfehlen. Da wird mitunter sehr gut erklärt, wie ein Template-System grundsätzlich funktionieren kann/soll/muss. :-) -
qap2 schrieb:
Smarty mag zwar benutzerfreundlich und leicht zu erlernen sein, aber helfen tut es dem durchschnittlichen Scripter nicht wirklich, wenn er nach einer Anleitung für ein eigenes Template-System sucht. Es ist insgesamt einfach viel zu umfangreich und eigen aufgebaut, als das man es in irgendeiner Weise plagieren könnte.^^
Ich würde Dir eines von zahlreichen Tutorials, die man bei Google findet, empfehlen. Da wird mitunter sehr gut erklärt, wie ein Template-System grundsätzlich funktionieren kann/soll/muss. :-)
Da hast du vermutlich recht, aber er würde dann vermutlich zumindest verstehen, wie so ein Template-System überhaupt funktioniert (Platzhalter etc.) hab das Gefühl das ist ihm auch noch nicht so recht klar... -
Stimmt schon, aber Smarty hat mich zu Beginn, als ich noch keine Ahnung von Template-Systemen hatte, völlig erschlagen.^^
Deshalb würde ich grundsätzlich zum Einstieg ein kurzes Tutorial mit den wichtigsten Erklärungen durchgehen.
Zum ganz banalen Überblick, was ein Tpl-System macht: klicken.
Oder alternativ (allerdings ein bisschen veraltet und zudem anspruchsvoller): klicken.
Und hier ein Tutorial zur kompletten Webseite mit einem Template-System: klicken.
Und, falls Du das ganze richtig praktisch und groß aufbauen willst: klicken (die beste Klassen-Erklärung, die ich bis jetzt im www gefunden habe).
Viel Erfolg. :-) -
Danke, ich werde mir diese mal Ansehen!
Ich hab aber Schon mal einfach so einen Smarty Code Geschrieben, Dieser Funktioniert nur nicht !
Mein Smarty Code Funktionert nicht
<? error_reporting(E_ALL); ini_set('display_errors', 1); require_once ('libs/Smarty.class.php'); $tpl = new Smarty; $zufall = array(); $tpl->assign('{title}', 'Das ist der Überschrift!'); $tpl->display('tpl/header.php'); ?>
Weiß Jemand wieso?
Danke Erstmal an qap2 Für die Netten Tutorials die ich mir Noch ansehen werden!
-
$tpl->assign('title', 'Das ist der Seitentitel!');
Und dann noch die Rechte für die Cache-Ordner anpassen.... -
Meinst du die chmod rechte oder wie?
-
privatecitypage schrieb:
Meinst du die chmod rechte oder wie?
Ja, die meint er. Das Template System muss ja in den Verzeichnissen schreiben und lesen können. -
ok, werde ich machen!
Danke Erstmal!
edit:
Jetzt wird bei mir Folgendes angezeigt!
Warning: Smarty error: unable to read resource: "tpl/header.php" in F:\xampp\htdocs\mein cms\libs\Smarty.class.php on line 1093
Beitrag zuletzt geändert: 12.10.2009 11:14:19 von privatecitypage -
Wo befindet sich denn dein TPL Verzeichnis bzw. hast du Smarty mitgeteilt wo es liegt? Denn sonst wird es nicht gefunden werden. Und auf dem Linux System ist auch auf die Groß/Kleinschreibung zu achten.
-
also durch die Get Weiterleitung ist es bei mir so!
[homedir]mein_cms/sites/start.php!
[homedir]mein_cms/index.php?site=home! = (oben)
[homedir]mein_cms/tpl/header.php
[homedir]mein_cms/smarty/libs....!
Also Ich gehe auf die index.php um die start.php zu öffnen!
und so sieht es etwa aus!
Wie muss ich den den Smarty sagen wo die Datei ist? -
Im Idealfall absolute Pfade zu den Smarty Verzeichnissen.
So sieht das bei meinen Projekten in aller Regel aus:
DEFINE('WDF_PROJECT','C:/htdocs/mein_projekt/'); $tpl->template_dir = WDF_PROJECT.'html/templates/'; $tpl->compile_dir = WDF_PROJECT.'html/templates_c/'; $tpl->cache_dir = WDF_PROJECT.'html/cache/';
Da wir hier ne Linux Kiste haben solltest du dir deinen lokales Verzeichnis via phpInfo raussuchen und dann fix angeben. -
Der Link:
http://89.52.178.152/Web/mein%20cms/
http://89.52.178.152/index1.php (PHP Info)
Das Problem ist zwar weg aber der Titel wird immer noch nicht geändert!
Weiß jemand wieso?
Der Code ist
<? error_reporting(E_ALL); ini_set('display_errors', 1); DEFINE('WDF_PROJECT','/var/www/Web/mein cms/'); require_once WDF_PROJECT.'libs/Smarty.class.php'; $tpl = new Smarty; $tpl->assign('title', 'Das ist der Seitentitel!'); $tpl->display = WDF_PROJECT.'tpl/header.php'; ?>
Beitrag zuletzt geändert: 12.10.2009 12:28:38 von privatecitypage -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage