Thread umschreibung: HTML::Template (17 answers)
Opened by nurri at 2005-06-08 22:22

Strat
 2005-06-09 16:13
#5087 #5087
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
dafuer fallen mir mehrere Moeglichkeiten ein...

1.) nach jeder zweiten zeile ein </tr><tr> einzufuegen: dies kann man mit HTML::Template selbst machen
Beim new noch als Parameter loop_context_vars => 1 mitgeben, dann bekommst du in <!-- TMPL_LOOP name=... --> noch weitere Variablen, wie z.B.
Code: (dl )
1
2
3
<!-- TMPL_UNLESS NAME= -->
 </tr><tr>
<!-- /TMPL_UNLESS -->

(oder TMPL_IF)

Mit sowas bist du allerdings fuer immer und ewig auf zwei Spalten festgelegt; deshalb verwende ich da lieber die folgende Loesung:

2.) eine zweidimensionale LOOP, z.B.
Code: (dl )
1
2
3
4
5
6
schleifeX => 
 [
   { schleifeY => [ {inhalt => 'a'}, {inhalt => 'b'} ] },
   { schleifeY => [ {inhalt => 'c'}, {inhalt => 'd'} ] },
   { schleifeY => [ {inhalt => 'e'}, {inhalt => 'f'} ] },
 ];

dann koennte das template folgendermaszen aussehen (und ist flexibel, weil du ueber perl die anzahl der spalten steuern kannst)
Code: (dl )
1
2
3
4
5
6
7
8
9
<table>
<!-- TMPL_LOOP NAME=schleifeX -->
 <tr>
 <!-- TMPL_LOOP NAME=schleifeY -->
   <td><!-- TMPL_VAR NAME=inhalt --></td>
 <!-- /TMPL_LOOP -->
 </tr>
<!-- /TMPL_LOOP -->
</table>

Somit brauchst du nur noch deine Perl-Datenstruktur demgemaess anpassen...

3.) du setzt an jedes Element, nach dem eine neue zeile beginnen soll, einen merker, den du mit TMPL_IF ueberpruefst, z.B.
Code: (dl )
1
2
3
4
5
6
schleife => 
[
{inhalt => 'a'}, {inhalt => 'b', next => 1},
{inhalt => 'c'}, {inhalt => 'd', next => 1},
{inhalt => 'e'}, {inhalt => 'f', next => 1},
];

und dann
Code: (dl )
1
2
3
4
5
6
7
8
<table>
<tr>
<!-- TMPL_LOOP NAME=schleife -->
<td><!-- TMPL_VAR NAME=inhalt --></td>
<!-- TMPL_IF NAME=next --></tr><tr><!-- /TMPL_IF -->
</tr>
<!-- /TMPL_LOOP>
</table>
\n\n

<!--EDIT|Strat|1118319414-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/

View full thread umschreibung: HTML::Template