Menü

Login

Aktuelle Version

Forum > Rechnen in Templates *

DOTLAN Intranet / Portal >> Konfiguration, Erweiterungen, Addons > Rechnen in Templates
Antwort erstellen
Autor Thema: Rechnen in Templates
zOiD
17.08.2008 um 22:27 QuoteProfileSend PM
NEW

Clan: lpm
Postings: 21

Oh right, the bones! I always forget about the bones!
Im box_event*.tpl wird über {$bar} anscheinend vorformatierter Quelltext ausgespuckt, der nicht valide ist. Da man aber die Eckdaten für die Balkengraphik ebenfalls bekommt, würde ich das ganze selbst ausrechnen und ausgeben; Gibt es also irgend eine Hintertür mit der man in Templates (also den tpl Dateien) Turingmächtigkeit erhält.

Das einzige was mir da einfällt wäre die gesamte Ausgabe ab der global.php zu cachen und selbst nochmal zu parsen. Diese Lösung widerstrebt mir aber, da so die gesamte Seite zwischengespeichert werden muss.

Wir haben derzeit noch die v1.2.5a. Ist das vielleicht bei der neuen Version anders? Gibt es irgendwo einen detailierten Changelog?

Grüße, Oscar
 
Griffon
18.08.2008 um 10:36 QuoteProfileSend PM

NEW

Clan: dotlan.net
Postings: 1252

Der detaillierte Changelog liegt immer im ZIP Archiv. changelog.svn

Alternativ kannst du die rohdaten nehmen und mittels Javascript den Balken berechnen und in die Breite zu ziehen.
Code:
maximal:    {$anz_maximal}
angemeldet: {$anz_angemeldet}
bezahlt: {$anz_bezahlt}
frei: {$anz_frei}

 
zOiD
18.08.2008 um 13:21 QuoteProfileSend PM
NEW

Clan: lpm
Postings: 21

Oh right, the bones! I always forget about the bones!
Dank' Dir erstmal für die schnelle Antwort;

Ich bin aber eigentlich grade dabei das ganze JavaScript rauszuwerfen

Hat das eigentlich Geschwindigkeits- oder Sicherheitsgründe, dass Du das Ausführen von Code in den tpls unterbindest? Denn soweit ich das den Fehlermeldungen entnehme, wird das doch sowieso letztenendes durch eval gejagt.
 
Bigga
18.08.2008 um 20:22 QuoteProfileSend PM
NEW

Clan: KST-LAN
Postings: 418

Du kannst selbst in deiner style.php Variablen definieren und mittels {$GLOBALS['variable']} drauf zugreifen.
 
Griffon
18.08.2008 um 22:56 QuoteProfileSend PM

NEW

Clan: dotlan.net
Postings: 1252

Ja. Aber in der eval() funktion wird nur eine zuweisung gemacht. Die templates selbst werden nicht durch eval gejagt. Nunja und warum? Weil ich es damals so aufgebaut hatte und nie mehr geändert hatte.

[Editiert von Griffon am 18.Aug.2008 um 22:56]
 
zOiD
19.08.2008 um 03:31 QuoteProfileSend PM
NEW

Clan: lpm
Postings: 21

Oh right, the bones! I always forget about the bones!
Ich habs jetzt so gelöst, dass ich anstatt der drei vorgefertigen Bilder auf {BASEDIR}styles/meinstyle/bar-{$anz_maximal}-{$anz_bezahlt}-{$anz_angemeldet}-{$anz_frei}.gif
verweise. Das wird dann mit mod_rewrite auf eine bar.php umgeschrieben, die das gewünschte Bild erzeugt und direkt ausliefert. Ich hatte erst statt eines gifs ein svg, aber damit kam nur Opera klar (zeigt sich wieder was der beste Browser ist).

Die globale Variable in der style.php ist ja nicht vom Kontext abhängig in dem ich sie verwenden will. Beim dem Problem mit dem Bild hätts grad noch funktioniert, indem man sich den Kram grad selbst aus der mysql pult.

Nun wirds aber eine Spur anspruchsvoller; in box_forum_bit.tpl wird über {$title} ebenfalls eine vorformatierte Ausgabe in html ausgespuckt. Und die ist natürlich abhängig davon wer angemeldet ist und welche Einstellungen er hat. Und die einzelnen Daten scheinen auch nicht extra verfügbar zu sein. Das Problem besteht beim I bzw. N welches internen bzw. news-bezogenen Einträgen vorangestellt wird. Und bei dem Puzzle bin ich vorerst mit meinem Latein am Ende und bin für jede Idee dankbar.

Ich betreibe da übrigens keine Korinthenkackerei, um die Seite als application/xhtml+xml auszuliefern muss sie nunmal anstandslos valide sein.

@eval: Irgendwie musst Du ja die Platzhalter durch deren Inhalt ersetzen, und wie ich eben gelernt habe kann man da auch eigene Variablen benutzen. Da drängt sich eval oder ein reg. Ausdruck quasi auf.
 
Bigga
19.08.2008 um 22:55 QuoteProfileSend PM
NEW

Clan: KST-LAN
Postings: 418

Wobei eval die schlechtere ist.

Okay, in deinem Fall ist das wohl nix. Zeigt aber wieder (leider), dass vorformatierter Quelltext für Platzhalter Murks ist.
 
zOiD
20.08.2008 um 01:55 QuoteProfileSend PM
NEW

Clan: lpm
Postings: 21

Oh right, the bones! I always forget about the bones!
Ich habe mir mal den Spaß gemacht und den vom Dotlan erzeugten Quelltext mit einem statischen Automaten (also nicht mal regex Luxus*) nachzuverarbeiten ... geht gut ... gut langsam

PHP oder eine rudimentäre while-Sprache wäre in den Templates schon nett. PHP hätte natürlich den Nachteil dass man das nicht cachen kann, da da ja jedes Mal was anderes rauskommen kann, aber man könnte irgend was Seiteneffektfreies nehmen.

Templates in denen man Brainfuck benutzen kann, wären doch wohl das coolste überhaupt *g*


*preg baut meines Wissens auch nur einen Automaten
 
zOiD
20.08.2008 um 14:43 QuoteProfileSend PM
NEW

Clan: lpm
Postings: 21

Oh right, the bones! I always forget about the bones!
Jetzt mal ernsthaft; Ich glaub' es ist unmöglich das Problem (halbwegs performant) zu lösen. Hat da jemand noch eine Idee?
 
Alfa
20.08.2008 um 15:34 QuoteProfileSend PM
NEW

Clan: lanabuse.de
Postings: 105

nicht so schön, aber wir lassen es bei jedem seitenaufruf über die style.php neu berechnen
 
zOiD
20.08.2008 um 20:31 QuoteProfileSend PM
NEW

Clan: lpm
Postings: 21

Oh right, the bones! I always forget about the bones!
Hmmmm ... Du redest von der Grafik, oder? Das Problem ist mittlerweile behoben, es geht mir jetzt um die Kurzausgabe der Forenthemen. Die kann man ja nicht so ohne weiteres aus dem Hut ziehen, da das Abhängig von den Benutzereinstellungen und -rechten ist.

Klar, das geht alles, aber dann kann ich mir das CMS auch gleich selbst frickeln
 
Bigga
20.08.2008 um 20:49 QuoteProfileSend PM
NEW

Clan: KST-LAN
Postings: 418

Griffon müsste halt statt in seinen compilierten Klassen schon Quellcode zu generien noch mehr auf Templates setzen.

Ansonsten gehts nicht wirklich perfomant. Gegenfrage: Brauchst du das Tatsache. Ich bezweifel, dass du soviele Seitenaufrufe hast, dass eine manuelle Neuberechnung in der style.php das Ganze so ausbremst.
 
zOiD
20.08.2008 um 22:59 QuoteProfileSend PM
NEW

Clan: lpm
Postings: 21

Oh right, the bones! I always forget about the bones!
Naja so viele frickelige Werte durch ein tpl zusammenkleben zu lassen, die man eigentlich nur auf eine sinnvolle Weise benutzen kann, sieht zur Entwurfszeit sinnlos aus.

Zu Deiner Frage; Ich bin ja noch nicht durch alles durch, wie oft kommt das denn noch so vor? Wenn das öfter vorkommt ist das irgendwann dann ja auch nicht mehr vernachlässigbar das alles neu auszulesen.

Außerdem mag ich es nicht, das Rad neu zu erfinden; Vielleicht kann Griffon die Abfrage veröffentlichen, die er benutzt *liebguck*

[Editiert von zOiD am 20.Aug.2008 um 23:10]
 
Bigga
20.08.2008 um 23:10 QuoteProfileSend PM
NEW

Clan: KST-LAN
Postings: 418

Ich habe mehr als genug Stellen gefunden, wo die Platzhalter vorformatiert waren. Ehrlich gesagt wirst du damit leben müssen, da teilweise recht tiefgreifend ist und an fast allen Stellen (Catering, Turniere, Event-Info, Forum glaube auch) ...
 
zOiD
21.08.2008 um 01:43 QuoteProfileSend PM
NEW

Clan: lpm
Postings: 21

Oh right, the bones! I always forget about the bones!
Ok, das sind wohl schlechte Nachrichten. Aber es gibt für jedes Problem einen dirty Hack

... mal in XFrames einlesen ...


Dank' Euch erstmal für die Mühe und Hilfe.
 
Bigga
21.08.2008 um 22:04 QuoteProfileSend PM
NEW

Clan: KST-LAN
Postings: 418

Warum nicht einfach text/html statt application/xhtml+xml ausliefern?
 
zOiD
21.08.2008 um 23:06 QuoteProfileSend PM
NEW

Clan: lpm
Postings: 21

Oh right, the bones! I always forget about the bones!
Weil XHTML nunmal als application/xhtml+xml ausgeliefert werden sollte (falls der Browser es unterstüzt). Da XML regulär ist, kann es schneller interpretiert werden. Alles in allem ist die Seite damit schneller dargestellt.
 
zOiD
22.08.2008 um 00:04 QuoteProfileSend PM
NEW

Clan: lpm
Postings: 21

Oh right, the bones! I always forget about the bones!
Aber mal anders gefragt; Stehen die Variablen in denen die Teilzeichenketten stehen nicht auch zur Verfügung? Man müsste jetzt nur wissen wie die heißen und sie dann selbst benutzen.
 
Bigga
22.08.2008 um 19:16 QuoteProfileSend PM
NEW

Clan: KST-LAN
Postings: 418

Ich bezweifel, dass es zwischen HTML/XHTML *messbare* Geschwindigkeitsunterschiede gibt.

Zur Diskussion text/html oder application/xhtml+xml: Das W3C selbst sagt über text/html und XHTML "may".

Jedenfalls würde ich mich nicht die Arbeit machen, nur um XHTML mit dem richtigen (das ist ja unstrittig) media type ausliefern zu können.
 
zOiD
23.08.2008 um 16:29 QuoteProfileSend PM
NEW

Clan: lpm
Postings: 21

Oh right, the bones! I always forget about the bones!
Habe das Problem jetzt übrigens gelöst und die Idee mit den Nachprozessor nochmal verfolgt. Die Geschwindigkeitsprobleme hingen wohl mit meinem Gammel-Testserver zusammen. Wenn ich das Ding fertig habe und es stabil läuft stell ich es hier zur Verfügung, für den Fall, dass noch jemand ein Ähnliches Problem hat.

Der Punkt ist, dass ich validen Code auch gleich als application/xhtml+xml ausliefern kann, wenn ich ihn schon habe. Und nicht valider Code kommt mir nicht ins Haus ^^.

Und es gibt tatsächlich fühlbare (wenn auch nicht quantitativ messbare) Geschwindigkeitsunterschiede.
 
Bigga
23.08.2008 um 22:50 QuoteProfileSend PM
NEW

Clan: KST-LAN
Postings: 418

Anstatt dass du das Pferd von hinten aufsattelst solltest du vielleicht die Stellen beschreiben, die fehlerhaft sind damit Griffon das grundsätzlich lösen kann.
 
zOiD
24.08.2008 um 16:51 QuoteProfileSend PM
NEW

Clan: lpm
Postings: 21

Oh right, the bones! I always forget about the bones!
Kann ich zusätzlich machen
 
[ Antwort erstellen ]