Thread wie trenne ich den Inhalt und das layout bei cgi/html (43 answers)
Opened by chris- at 2008-10-01 10:05

GwenDragon
 2008-11-14 11:36
#116233 #116233
User since
2005-01-17
14837 Artikel
Admin1
[Homepage]
user image
Ich verstehe nicht wieso jemand noch HTML so schreiben will, dass es nur im Quirksmodus läuft.
Quirks bedeutet nämlich nicht, dass Browser es richtig darstellen, sondern meist die diversen Bugs des Internet Explorer bzw. Mozillas nachahmen!

Wenn für bestimmte kaputte/alte Browser die Darstellung korrekt sein soll, dann solte eine serverseitige Browserweiche eingebaut werden, die nur bei den kaputten Browsern greift und denen angepasstes HTML/CSS anbietet.
Dann werden auch die modernen Browser später richtig anzeigen.

Aber was solls, Auctioneer will es eben nicht machen. Hoffentlich programmiert er wenigstens korrekt in Perl.

Ich habe das mit dem HTML auch nur erwähnt, weil wir hier im Forum den Leuten keine schlampige Arbeit beibringen, egal ob bei Perl, HTML, PHP o. ä.

---
Um nochmals auf das Ursprungsthema zurück zu kommen:

Esgibt mittlerweile so viele Templatesysteme für Perl wie HTML-template, HTML-Template-Compiled und sogar komplette Web-Frameworks wie Catalyst, Mojo, CGI-Application, HTML-Mason, die auch guten Code erzugen.

Es kommt immer darauf an wie ich programmieren will und was/wofür.

Ich finde HTML-Template-Compiled oder HTML-Template ganz gut für Anfänger.


scriptor+2008-10-01 17:25:31--
Du solltest von Anfang an jede Anfrage mit einem rewrite in einer .htaccess Datei auf Dein Skript umlenken, sieht etwa so aus:
Code: (dl )
1
2
3
RewriteCond 	%{SCRIPT_FILENAME}			!/resources/
RewriteCond %{SCRIPT_FILENAME} !start.pl$
RewriteRule ^(.*)$ /cgi-bin/start.pl/$1?&%{QUERY_STRING} [L]

Dein Perl untersucht nun den Aufruf auf Gültigkeit (Pfad, (User, Session)). Ich nenn das Controller. Am Ende ist klar, welche Seite benutzt wird und damit werden in der Seite benötigte Inhalte geholt, formatiert (in Templates) und an passender Stelle ausgegeben. Dafür gibt es viele Lösungsansätze.

Allerdings braucht es dazu kein Rewrite bei Apache!
Apache beitet nämlich auch die Möglichkeit an Handler zu installieren.
Bei bestimmten Dateiendungen schlägt dann der Handler zu und "interpretiert" path_info, lädt das Template füllte es mit Daten und gibt es aus.
So mache ich das oft.

Als Apache-Konfiguration sieht das so aus.
Code: (dl )
1
2
3
4
5
AddHandler meintemplate-cgi .html
Action meintemplate-cgi /cgi-bin/start.pl
<FilesMatch "html?$">
SetHandler meintemplate-cgi
</FilesMatch>

View full thread wie trenne ich den Inhalt und das layout bei cgi/html