Original von user-279
michael - zu deinem code beispiel..hast du jetzt in jeder "sub-index" datei eine eigene "output()" function? wie machst du denn grössere ausgaben von zb. news..alles in php?
wo schreibst du allgemeine functions wie solche für bbcode, textoptimierung oder errorausgaben?
Jaein. Mein Ansatz war/ist es zwei Ebenen zu trennen. Einmal den Programmablauf (also welches Modul, welche Aktion) und die Funktionalität.
Die Ausgaben sollten alle in Templates geschehen. Jede Ausgabe in PHP ist pfui.
Ich bin mir nicht sicher ob ich es besser finde, dass ein Template geöffnet wird und an die Funktion(-sklasse) - also das Modul - übergeben wird oder ob die ensprechende Methode des Moduls das Template öffnet.
Die Ausgabe erfolgt dann über eine einheitliche output Methode, die hauptsächlich den erstellten Inhalte einsetzt und den allgemeinen Rahmen erstellt.
Das ganze ist schwer so kurz und abstrakt wie allgemein zu erläutern... Ich hoffe die Idee wurde ein wenig klarer.
Für allgemeine einzelne Funktionen habe ich eine allgemeine Funktionsklasse. Für BBcode würde ich eine exra Klasse schreiben und die Fehlerbehandlung gehört in keine Funktion sondern direkt in die Ablaufsteuerung.
Idealerweise fragt man ganz am Ende ist ein Fehler aufgetreten? user-158n zeige ein Fehlertemplate ansonsten zeige den Inhalte (wobei man den Inhalt beim ersten kritischen Fehler natürlich nicht fertig generieren muss)
Original von user-279
und last-but-not-least - hast du für jede nicht-funktions-datei ein .tpl ?
manchmal hat man ja eine seite die nur spezifisch für die webseite sinn macht..zb. bei einen t-shirt label oder so die auflistung der shirts.. macht man da auch eine tpl? bzw. kommt alles aus der db..keine statische texte?
Hmm das verstehe ich nicht ganz. Man kann das je nach Projekt beliebig tief und differenziert schachteln. Eigentlich teile ich die Seite zu Beginn in ein grobes Raster (header, linke Spalte, Inhalt, rechte Spalte, Footer) und in diesem Groben Raster setzt ich dann weitere Templates ein. Beispielsweise in der linken Spalte die Navigation und im Footer ein Copyright Template.
Das Ziel: so wenig Redundanz wie möglich. Wenn die Navigation "überall" gleich ist, sollte es dafür auch nur ein Template geben. usw
Original von user-279
und was spricht dagegen für kleine projekte ein eigenes tpl-system zu schreiben?
.
Nichts. Es ist quasi der ideale Weg ein auf die Anforderungen zugeschnittenes System zu haben. Allerdings ist es schlicht nicht wirtschaftlich für jedes Projekt das Rad neu zu erfinden.
Das führt zu solch monströsen riesigen System, die mit alle Möglichkeiten geben im endeffekt aber für einfache Sachen fast zuviel können.
// edit
Original von user-333
eine kleinere weitere frage:
wie impementiere ich eigene funktionen? Ich hab da im netz ein bisschen gesucht, aber leider nur folgendes gefunden (funktioniert natürlich nicht).
$smarty->register_function(func', 'func';
require 'functions/functions.php';
Wie muss ich das richtig machen?
Danke!
Gar nicht. Ganz ehrlich, solche Funktionen gehören einfach nicht in das Template sondern in das Script.