Moin!
Hallo Sven!
Ich bin ziemlich neu in der OOP und blicke das alles noch nicht so ganz durch. Hättest du mal Zeit mir ein einfaches Musterexemplar der Dateien so eines Systems zusammen zu basteln, damit ich es besser verstehen kann?
Zeit zum Zusammenbasteln sicher nicht. Aber Zeit für Tipps. Du mußt rumprobieren und sehen, wie die Sache läuft.
Nehmen wir mal ein Beispiel: Die vlibTemplate-Klasse von http://vlib.activefish.com/. Gibts da kostenlos und frei verwendbar unter Artistic License.
Diese Klasse bindest du ganz simpel per Include in dein Skript ein, um sie benutzen zu können.
Dann erstellst du eine neue Instanz dieser Klasse, welche ein Template lädt. Als Beispiel in der Dokumentation: http://vlib.activefish.com/docs/multihtml/vlibtemplate/func_vlibtemplate.html
Damit hast du eine Datei geladen, die du hinterher ausgeben willst, und in die du während der Skriptlaufzeit gewisse Inhalte reinpackst.
Was deinen höchst variablen Content angeht, fallen mir da eigentlich nur zwei Lösungsmöglichkeiten ein:
Entweder definierts du im Template ein Feld "content", in den der gesamte Content der Seite reingeht. Dann muß dein Skript entsprechend gewünschtes HTML generieren, also "<p>Absatztext</p><blockquote>Das Zitat</blockquote><p>Mehr Text</p>", und diesen Text dann dem Feld "content" übergeben.
Die Übergabe ist simpel:
$tmpl->setVar('content', $dein_langer_content_string);
Und im Template wird die Stelle, an der die Ausgabe erscheinen soll, eingebaut:
{tmpl_var name="content" escape="none"}
Alternativ kannst du natürlich auch ein Array aufbauen, welches zweierlei Informationen enthält: Erstens den Inhalt des Textblocks, und zweitens den Typ (also Textblock oder Zitat - oder sonst noch etwas anderes, was möglich sein soll).
Dann übergibst du an das Template keinen einzelnen, fertig zusammengebauten String mehr, der einfach nur noch reinkopiert wird (und dessen Gestaltung du dann ja auch nicht mehr im Template steuern könntest), sondern eben ein Array, welches du in einer Schleife abarbeitest - jeder einzelne Array-Block ist dabei Bestandteil eines zweidimensionalen Arrays:
$textbloecke = array( array('text'=>'Absatztext', 'typ'=>'p'), array('text=>'Das Zitat','typ'=>'blockquote'), array('text'=>'Mehr Text','typ'=>'p'));
So ungefähr. Die Typen müssen natürlich nicht identisch heißen, wie die zu verwendenden HTML-Tags, da kannst du im Prinzip eigene Kreationen einbauen. Im Template selbst kannst du mit IF-Abfragen dann steuern, welcher Teil (Absatz oder Zitat) für den Text verwendet werden soll.
Und dem Redakteur, der den Text eingibt, mußt du dann logischerweise eine Möglichkeit zur Verfügung stellen, je Textblock eine der Möglichkeiten auszuwählen.
Ich kann hier aber noch soviel schreiben: Du mußt es selbst ausprobieren. vlibTemplate ist eigentlich recht simpel zu bedienen, es bietet sicherlich auch nicht ganz soviele Möglichkeiten, wie andere Template-Engines, aber für den Anfang ist es deshalb nicht verkehrt.
- Sven Rautenberg
"Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
(fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)