Schrift
[thread]5959[/thread]

HTML-Code editieren: elegant?



<< >> 9 Einträge, 1 Seite
pktm
 2003-12-09 22:49
#75172 #75172
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!
Ich habe ein CMS-Administratiuonsscript mit dem man (da arbeite ich gerade dran) Seiten löschen kann und wo dann direkt die Navigationsleiste aktualisiert wird.
Dabei habe ich den Fall, dass ich die Navigationsleiste einfach neu erstelle. Die Navigation befindet sich dabei in einer Tabelle (hier, soll man mal festlegen können, wie die Nav aussehen soll)
Dabei benutze ich folgenden Code:
Code: (dl )
1
2
3
4
5
                push @{ $neu_nav{$hashkey} }, qq~
<tr>
<td class="nav"><img src="$grafik/greysmallbullet.gif" width="5" height="5" border="0" alt="*"/>
& <a href="&{full_url}?action=$key">$titel</a></td>
</tr> ~;

hashkey ist hier die Nummer der navigation, worüber ich mit merke welche Navigation wo hin kommt (man kann mehrer in einer Datei haben, z.B. horizontal & vertikal).

Mein Problem:
Ich hätte gerne den HTML-Code aus dem Script raus, will aber nicht direkt änderungen in einer Datei vornehmen (z.B. via Tie::File oder so).
D.h. ich müsste irgendwie per Funktion wegen meiner das HTML-Schnipselchen auslesen und dort die Variablen einfügen.
Dabei sollte der Dateileseaufwand möglichst gering sein - wobai das CMS keine Datenbank hat. Es soll auch bei Leuiten funktionieren, die sich keine Datenbank leisten können / wollen, was weis ich, ich möchte es gerne mit Flatfiles machen und daran ändert sich bei diesem CMS auch nichts ;)
Hat wer Ideen wie man das HTML wegbekommt?
mfg pktm
http://www.intergastro-service.de (mein erstes CMS :) )
Crian
 2003-12-09 23:20
#75173 #75173
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
Sind die HTML-Schnippel fest? Wenn ja, kannst Du sie ja (z.B. in einem Extramodul) in einen Hash schreiben, aus dem Du dann an obiger Stelle den Code rausholst über einen passenden Schlüssel.

Oder habe ich das Problem falsch verstanden?\n\n

<!--EDIT|Crian|1071004846-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
pktm
 2003-12-10 15:37
#75174 #75174
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hm, den code via Modul einbínden ist eine feine Sache. In diesem Modul könnte ich dann auch das Template und so ablegen.
Gibts noch andere Möglichkeiten?
Das Problem ist ja (echt?) simpel:
Ich generiere z.B. eine Tabelle in der immer 2 Werte stehen.
Das HTMl was um die Werte herum steht soll aus dem code verschwinden, damit dieser übersichtlicher bleibt.
Beispiel:
Code: (dl )
1
2
3
4
5
6
7
8
my @html = ();
my $y = 0;
for( my $x=0; $x<=100; $x++ ){
$y = $x * 2;
push @html, qq~
<tr><td>$x</td><td>$y</td><tr>
~;
}

Das die Tabelle unvollständig ist interessiert hier mal nicht.
Was wichtig ist ist, dass ich das unübersichtliche HTML weghaben möchte, also ich nurnoch $x & $y setzen und irgendwie einfügen will ohne das HTML im code stehen zu haben.
mfg pktm
http://www.intergastro-service.de (mein erstes CMS :) )
jan10001
 2003-12-10 15:57
#75175 #75175
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
Warum verwedest du nicht HTML::Template?
pktm
 2003-12-10 16:14
#75176 #75176
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Naja, pber HTML::Template habe ich auch schon nachgedacht.
Vielleicht in der nächsten Version.
Die jetzige steht schon fast und ich habe keine Lust nochmal von vorne anzufangen.
mfg pktm
http://www.intergastro-service.de (mein erstes CMS :) )
ptk
 2003-12-10 16:14
#75177 #75177
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Auch wenn es nur HTML-Schnipsel sind, ist das noch immer das klassische Anwendungsgebiet fuer Template-Systeme. Ein schoenes kleines und fuer Perl-Programmierer ohne Lernaufwand verwendbares System ist beispielsweise Text::ScriptTemplate:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use Text::ScriptTemplate;

my $template = Text::ScriptTemplate->new;
# Oder Template mit ->load aus einer Datei holen:
$template->pack(<<'EOF');
<%
for my $x (0 .. $max) {
my $y = $x * 2;
%>
<tr><td><%= $x %></td><td><%= $y %></td><tr>
<% } %>
EOF

$template->setq(max => 10);

print $template->fill;

Die Syntax ist an ASP und JSP angelehnt. Mit <%= ... %> wird der Wert einer Variablen oder eines Ausdrucks ausgegeben. Mit <% ... %> wird beliebiger Perl-Code, z.B. fuer Bedingungen und Schleifen geschrieben.

Alternativ koennte man hier auch schreiben:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use Text::ScriptTemplate;

my $template = Text::ScriptTemplate->new;
# Oder Template mit ->load aus einer Datei holen:
$template->pack(<<'EOF');
<tr><td><%= $x %></td><td><%= $y %></td><tr>
EOF

my $html = "";
for my $x (0 .. 10) {
my $y = $x * 2;
$template->setq(x => $x,
y => $y);
$html .= $template->fill;
}
print $html;
pktm
 2003-12-10 16:22
#75178 #75178
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Wie gesagt, nächste Version gerne, im Moment geht es mir nur darum meinen Code ein bischen ansehnlicher zu gestalten.
Diskusionen darüber erübrigen sich hier, aber für PM bin ich immer zu haben. Das Schnipsel da oben ist nämlich sehr praktisch - thx.
mfg pktm
http://www.intergastro-service.de (mein erstes CMS :) )
ptk
 2003-12-10 16:44
#75179 #75179
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Verstehe ich nicht, du musst doch mein Beispiel einfach nur abschreiben :-) Und Text::ScriptTemplate ist auch nicht das Monster-Modul mit zig Abhaengigkeiten --- zur Not kann man es in das eigene Projekt einbinden.
pktm
 2003-12-10 17:27
#75180 #75180
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
:) Hey wie wärs, ich schicke dir die 800 Zeilen COde und du stellst dann mal eben mein komplettes CMS auf Html::Template um - musst ja nur abschreiben ;)
http://www.intergastro-service.de (mein erstes CMS :) )
<< >> 9 Einträge, 1 Seite



View all threads created 2003-12-09 22:49.