Zur Boardunity Forenstartseite
  #1  
Alt 01.10.2003, 17:48
Benutzerbild von Fabchan
früher Dracaelius
 
Registriert seit: 10.2003
Ort: Seesen
Beiträge: 354

Welche Template-Klasse?


Ich programmiere zurzeit eine Forensoftware (da bin ich warscheinlich nicht der Einzige hier).
Folgendes hat mich dazu gebracht:

Nehmen wir mal aktuelle Forensoftware:

- vBulletin: Sehr schön, aber das Geld habe ich leider nicht. , außerdem ist mein aktuelles Projekt lange nicht so groß, dass sich vB dafür lohnen würde.

- phpBB2: GEfällt mir auch, die CVS der neuen Version scheitn vielversprechend zu sein, allerdings ist es nicht allzu leicht zu erweitern, das der Code sehr kompliziert geschrieben ist, andere Foren sind da besser. Schließlich binich Bastler und verändere gerne mal selber was!

- WBB 1.2: vBulletin , naja fast, für umsonst, allerdings mit einigen Fehlern und vom Rechte-Management auch nicht so toll.

- WBB 2.x: Besser, als WBB 1.2, aber immer noch sehr stark dem vB nachempfunden, irgendwie frage ich mich, warum Woltlab von Jelsoft noch keinen Ärger ekriegt hat, viele der Übersetzungen vom englischen vB sind wörtlich.

- Invision-Board: FUnktionsüberladen und außerdem kenne ich es nur vom privaten Testen, ich habe keine Referenzen, ob es stabil läuft, oder nicht. Eventuell noch besser, als mein eigenes, aber schließlich hat man bezüglich der Funktionen un MySQL-Queries von bewährten Foren, an denen man sehen kann, wie es optimal oder zumindets gut gelöst ist.

Dann gibt esnoch weitere, die mir alle irgendwie nicht gefallen:
XMB, Tritanium Bulletin Borad (hatte ich mal!), UBB ("leicht" überteuert!), ...

------------

Bei allen diesen Foren ist ein Problem meist auf anderen Weise gelöst: Das Template-Management!

Nun (endlich) meine Frage:
Wie löse ich das am besten?

Folgendes im Voraus:
- ich will nur ungern eval()-Code verwenden, ist mir Sicherheitstechnisch nicht so ganz geheuer. Immerhin sollen die Templates in irgendeiner später Version, wenn nicht sogar schon in der ersten veränderbar sein.
Man vergisst schnell mal, eine nicht mehr benötigte Variable nach ihrem Gebrauch nicht zu zerstören.

- es soll schon jeden einzelnen Schnipsel in einer eigenen einzelnen Datei/DB-Eintrag speichern (siehe WBB, vB) und nicht wie beim phpBB 2 oder TBB 2 Dateien erzeugen, die dann "Blöcke" enthalten

Kennt jemand von euch eine geeignete Template-Klasse?

Wäre es sinnvoller, doch die eval-Funktion zu nutzen?
__________________
Fabian Michael
"Ein Tag, an dem du nicht lächelst, ist ein verlorener Tag."
- Charlie Chaplin

Wiki
  #2  
Alt 01.10.2003, 18:08
Benutzerbild von Akira
Mitglied
 
Registriert seit: 07.2002
Ort: Österreich
Beiträge: 238
eine template funktion ist im grunde etwas sehr einfaches.

es ist immer das selbe prinzip: ein template aus der datenbank oder einer datei laden, nach dem laden wird es bearbeitet (farben, schriftarten, eben das ganze zeug) und dann wird das ergebniss entweder gespeichert weil noch mehr templates dazukommen oder ausgegeben.

ob du eval() verwenden möchtest oder nicht bleibt dir überlassen.

hier ist mal eine sehr einfache template class:

PHP-Code:
<?
class tpl {

 function 
gettemplate($tname)
 {
  
$this->templates[$tname]=str_replace("\"","\\\"",@implode("",file('../templates/'.$tname.'.htm')));
  return 
$this->templates[$tname];
 }

 function 
makeoutput($template){
  print(
$template);
 }
}
?>
Das ist der absolute grundstock eines dateibasierenden templatesystems, als beispiel.

du holst die template mit folgenden zeilen "ab":

PHP-Code:
<?
eval("\$var = \"".$tpl->gettemplate('template')."\";");
eval(
"\$tpl->makeoutput(\"".$tpl->gettemplate('template')."\");");
?>

  #3  
Alt 01.10.2003, 18:16
Benutzerbild von Fabchan
früher Dracaelius
 
Registriert seit: 10.2003
Ort: Seesen
Beiträge: 354
@Akira: Danke für die Hilfe, diese Variante kennt man ja bereits so ähnlich vom WBB, ist ja ansich auch nicht schlecht.
Hast du eigentlich ne Ahnung, wie beliebt eval()-Template so im allgemeinen sind?

__________________
Fabian Michael
"Ein Tag, an dem du nicht lächelst, ist ein verlorener Tag."
- Charlie Chaplin

Wiki
  #4  
Alt 01.10.2003, 18:25
Benutzerbild von Akira
Mitglied
 
Registriert seit: 07.2002
Ort: Österreich
Beiträge: 238
beliebt? ka


ob die funktion sicher ist oder nicht darum mußt du dich selber kümmern. wenn du angst hast das eval() etwas ausfüren könnte was es nicht ausführen sollte mußt du ein gutes system entwickeln das alles was du in die templates einfügst, zb. beiträge, genau durchsucht und alles was gefährlich ist killt. aber das ist kein problem, ein paar kleine funktionen und fertig

dann erst erfolgt die ausgabe. eval() sollte keinerlei sicherheits probleme bieten.

  #5  
Alt 01.10.2003, 19:06
Benutzerbild von exe
exe exe ist offline
titellos
 
Registriert seit: 07.2003
Ort: München
Beiträge: 888
Du solltest bei der eval() Methode beachten das viele Templates nicht unbedingt einen Vorteil haben.
Zum einen wird da ein Layout ziemlich unübersichtlich, wenn du an 200 oder mehr Templates rumfummeln musst. Zum anderen bindest du damit die Struktur des Layouts an die Struktur der Software. Wenn du nämlich an 10 verschiedenen Stellen im Code Templates einliest musst du diese Struktur im Layout beibehalten.
Ich finde da Templates wie beim phpBB sehr viel praktischer. Zum einen lässt sich die Logik des Designs schneller überschauen (weniger Layout Schnippsel pro Seite) und zum anderen ist die Struktur des Layouts bei dem Prinzip völlig unabhängig vom Programmcode, eben da das Layout am Ende des Programms komplett erstellt wird, und nicht während des Programmflusses.

Templates engines ist da ein sehr interessanter Artikel zum Thema.
IMHO lohnt sich die eval() Methode nur bei kleinen Scripts (bis ~2000 Zeilen) da man sich damit ne Menge Aufwand sparen kann. Bei grösseren Geschichten macht sich eine richtige Template Engine aber bezahlt.

__________________
Johannes Klose
Calitrix Wiki - Wiki auf Basis von PHP und MySQL
  #6  
Alt 01.10.2003, 22:20
Benutzerbild von Fabchan
früher Dracaelius
 
Registriert seit: 10.2003
Ort: Seesen
Beiträge: 354
@exe: Naja, über 1000 Zeilen bin ich bisher nicht gekommen, habe auf meiner HP zum erweitern des WBB dann halt auch entsprechend dessen Template-Funktion benutzt. Aber irgendwie ergibt das ür mich keine wirklich befriedigende Lösung, eval() verschafft mit einfach keinen Überblick darüber, welche Variablen denn nun wirklich im Template vorkommen.

Wenn ich meine Forensoftware eines Tages wirklich veröffentlichen sollte (oder sie überhaupt jemals fertigstellen werde! ), dann wäre es sicherlich eine bessere Wahl, alles über gecachte Templates zu machen,
vielleicht nicht ganz so, wie in dem Artikel, aber irgendwie doch schon. Ich hab mir auch überlegt, ob man nicht einfach mit eval parsen könnte, aber dieses innerhalb der Funktion aufruft. Wenn man dann im Template noch sämliche $GLOBALS und Superglobalen($_GET,$_COOKIE,...) mittels regulärem Audruck ersetzt und die Variablen, die das Template benutzt per Funktionsparameter als assoziatives Array angibt und dieses mit extract() in Variablen umwandelt, wäre es natürlich eine denkbare Lösung.

Aber natürlich bleibt für mich nun die Frage, ob ich die Templates nicht doch lieber zusammenquetschen sollte in wenige Dateien. Die Vorteile der vielen Dateien liegen auf der Hand: bestimmte Dinge, wie zum Beispiel eine Forenzeile aus der Übersicht wird beim Anzeiegn einer Kategorie oder eines Forums samt Unterforen immer wieder gebraucht, außerdem wird wirklich nur das geladen, was gebraucht wird und kein Zeichen zuviel. vielleicht sollte ich mich aus Gründen der Übersichtlichkeit auf einen Mittelweg einigen, eventuell noch in die Templates einen INCLUDE-Befehl einbinden, der innerhalb eines Blockes/einer Schleife (im Falle des Artikel über Templates innerhalb des "foreach" des ersten Beispiels).
Diese Methode verwendet -glaube ich- auch die neue Template-Engine von bald erscheinenden phpBB.

Ich bin müde, werde mir den Artikel morgen in aller Ruhe nochmal durchlesen, muss mich jetzt erstmal hinhauen, morgen schreibe ich nochmal was, bis dahin habe ich sicherlich auch einen erweiterten Lösungsansatz!

__________________
Fabian Michael
"Ein Tag, an dem du nicht lächelst, ist ein verlorener Tag."
- Charlie Chaplin

Wiki
  #7  
Alt 02.10.2003, 00:36
Benutzerbild von TRS
TRS TRS ist offline
Mitglied
 
Registriert seit: 02.2003
Ort: Berlin
Beiträge: 993
Es gibt für mich nur eine wahre TemplateEngine und das ist SmartTemplate.

Habe bisher nur gute Erfahrungen damit gemacht und es unterstützt sehr viele nützliche Features. Es wirkt vielleicht auf den ersten Blick etwas überladen, aber man wird es später begrüßen.

Man kann nach belieben Varialben, Arrays und Datenbanken ausgeben, ebenfalls sind Kontrollfunktionen ( if, else etc. ) vorhanden sowie Extensions. Wer wissen will, was es genau ist einfach einen Blick auf die Webseite werfen:

http://smartphp.net/content/smarttem...out/about.html

  #8  
Alt 24.03.2004, 11:01
Benutzerbild von MaMo
Viscacha Coder
 
Registriert seit: 09.2003
Beiträge: 809
Hallo.

Habe mal ne kurze Frage zu http://smartphp.net/content/smarttem...out/about.html.
Gibts sowas auch in Perl? Oder weiß jemand ein ähnliches Modul (HMTL::Mason kenne ich schon)?

Edit: http://search.cpan.org/~mjd/Text-Tem...xt/Template.pm scheint ganz gut zu sein

MfG MaMo

__________________
Forensoftware mit integriertem CMS: Viscacha 0.8!
  #9  
Alt 24.03.2004, 13:18
Benutzerbild von MrNase
Mitglied
 
Registriert seit: 06.2003
Ort: /
Beiträge: 2.628
Off-Topic:
Ich werd mal mein Glück mit bTemplate versuchen < http://www.massassi.com/bTemplate/in...&section=intro >

  #10  
Alt 24.03.2004, 20:14
Mitglied
 
Registriert seit: 03.2004
Beiträge: 10
probier doch mal http://smarty.php.net .

  #11  
Alt 24.03.2004, 21:07
Benutzerbild von Frederic Schneider
WoltLab Holzmichl
 
Registriert seit: 07.2003
Ort: Eschborn
Beiträge: 1.286
Hallo,
Zitat:
Zitat von Arno Nühm
probier doch mal http://smarty.php.net .
du weisst das er eine Template Klasse für Perl und nicht PHP sucht, oder?

__________________
Frederic Schneider
WoltLab Team / WoltLab Wiki / GamePorts / Frederic Schneider / neuer-patriotismus.de
  #12  
Alt 25.03.2004, 13:43
Benutzerbild von MaMo
Viscacha Coder
 
Registriert seit: 09.2003
Beiträge: 809
Hi.

Jo, suche Perl, und habe dann auch etwas bei CPAN.org gefunden: Text::Template. Hatt alles was ich brauche und scheint gut zu laufen und lässt sich ohne Compilierung starten

MfG MaMo

__________________
Forensoftware mit integriertem CMS: Viscacha 0.8!
Antwort


Stichworte
-

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Tidbits Template Class (habe ich selbst gemacht!) Fabchan Programmierung und Datenbanken 82 23.01.2006 16:20
Klasse gesucht um auf die Amazon API zugreifen zu können MrNase Programmierung und Datenbanken 14 24.07.2005 16:43
In einer Klasse auf eine andere Klasse zugreifen MrNase Programmierung und Datenbanken 4 13.10.2004 05:46
Smarty Template Engine Jan Stöver Programmierung und Datenbanken 2 09.05.2004 23:02






1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24