komplexen View rendern
MB
- datenbank
- php
- programmiertechnik
moin Community,
wie rendert man einen Artikel mit komplexen Daten (z.B. dieses SelfHTML Wiki)? Ich kann mir nicht vorstellen das tabellen, Quellcodes, verschachtelte Listen die nunmal in einem Artikel enthalten sind in einer einzigen $content
-Variable steckt.
vlg MB
Tach!
wie rendert man einen Artikel mit komplexen Daten (z.B. dieses SelfHTML Wiki)?
Da musst du mal in der Mediawiki-Software nachschauen. Aber Vorsicht, das ist nicht unbedingt ein gutes Beispiel für moderne Architektur. Die Software ist historisch gewachsen und trägt Altlasten mit sich rum. Sowas großes kann man auch nicht einfach mal so komplett erneuern, ohne viele Sachen (Extensions zum Beispiel) kaputtzumachen.
Du kannst das aber nicht direkt vergleichen mit einem System, das lediglich Datenbankinhalte in ein Template einfügt, wobei Platzhalter ersetzt werden. Ein Wiki-Artikel besteht aus Text, der mit Syntax für besondere Elemente gespickt ist. Das durchläuft einen komplexen Parseprozess, weil nach jedem Zeichen eins mit syntaktisch anderer Bedeutung stehen kann.
Ich kann mir nicht vorstellen das tabellen, Quellcodes, verschachtelte Listen die nunmal in einem Artikel enthalten sind in einer einzigen
$content
-Variable steckt.
Am Ende müssen sie das aber, denn der gerenderte Artikel kommt in eine Cache-Tabelle in der Datenbank. Diese gecachte, vorgefertigte Version kommt dann beim Aufruf zur Auslieferung und steht dann auch wieder nur in einer Variable.
dedlfix.
Gerade beim Rendern von Tabellen und Listen zeigt sich die Zweckmäßigkeit eines Templatesystems was mit abstrakten Datentypen umgehen kann. Im Template wird dazu ein LOOP notiert und das Array of Arrays wird z.B. direkt als Abfrageergebnis einer komplexen Query geliefert. Darüber hinaus sind Templatesysteme für HTML meist so beschaffen daß sie selbst die kontextgerechte Behandlung bestimmter Zeichen übernehmen.
Ansonsten: Überlege Dir eine Unterteilung einer Response von Type text/html in mehrere Template-Bereiche. Damit hast Du auch die Daten für den Renderprozeß in einer ganz bestimmten und vor allem reproduzierbaren (wiederkehrenden) Struktur. MfG
Moin MB,
wie rendert man einen Artikel mit komplexen Daten (z.B. dieses SelfHTML Wiki)?
du kannst gerenderte Zwischenergebnisse direkt ausgeben, oder …
Ich kann mir nicht vorstellen das tabellen, Quellcodes, verschachtelte Listen die nunmal in einem Artikel enthalten sind in einer einzigen
$content
-Variable steckt.
… in einen Zwischenpuffer schreiben und denn anschließend ausgeben. So viel HTML wird da anschließend kaum drin sein. Der (komprimierte) HTML-Code des Wikipedia-Artikels Deutschland ist 155 KB groß. Warum sollten die nicht in den Speicher passen?
Viele Grüße
Robert