Font
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]223[/thread]

Template Include

Readers: 9


<< |< 1 2 3 4 5 >| >> 50 entries, 5 pages
tomlong
 2004-04-04 20:44
#1906 #1906
User since
2003-08-04
93 articles
BenutzerIn
[default_avatar]
heyho!
kleine Frage: ich möchte in einem Templatesystem gerne ein Konstrukt wie
Code: (dl )
<TMPL_INCLUDE NAME="<TMPL_VAR NAME=CONTENT>"

benutzen, damit in ein Haupttemplate die individuell verschiedenen Templates integriert werden... funktioniert so aber nicht :(
... mein nächster Ansatz wäre jetzt einfach eine weitere Ebene einzubauen, wobei ich dann in jedem dazugehörigen Template per INCLUDE den Teil vor und hinter dem Content einfügen müsste. Hattet Ihr das Problem auch schon? Gibts da andere (schönere) Möglichkeiten das zu lösen?
Live long and prosper!
42;
Strat
 2004-04-04 20:52
#1907 #1907
User since
2003-08-04
5246 articles
ModeratorIn
[Homepage] [default_avatar]
das ist in der grundfunktionalitaet nicht drinnen. man koennte es aber manuell machen, indem man das template einliest und fuellt und dann in einer zeichenkette abspeichert, die man einem zweiten ->new uebergibt. aber schoen ist das nicht. vielleicht kannst du es mit ein paar <TMPL_IF's umgehen?
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
tomlong
 2004-04-04 20:58
#1908 #1908
User since
2003-08-04
93 articles
BenutzerIn
[default_avatar]
[quote=Strat,04.04.2004, 18:52]vielleicht kannst du es mit ein paar <TMPL_IF's umgehen?[/quote]
puuh das könnten ziemlich viele werden... das ganze ist für ein shopsystem gedacht ... ich glaube ich probier mal deinen Vorschlag mit der Zeichenkette, klingt zumindest vielversprechend :)
Live long and prosper!
42;
tomlong
 2004-04-04 21:36
#1909 #1909
User since
2003-08-04
93 articles
BenutzerIn
[default_avatar]
[quote=Strat,04.04.2004, 18:52]man koennte es aber manuell machen, indem man das template einliest und fuellt und dann in einer zeichenkette abspeichert, die man einem zweiten ->new uebergibt. aber schoen ist das nicht.[/quote]
habs jetzt so gemacht ... und es haut hin :) danke
Live long and prosper!
42;
Tom
 2004-04-20 19:02
#1910 #1910
User since
2003-09-20
470 articles
BenutzerIn
[Homepage] [default_avatar]
[quote=tomlong,04.04.2004, 19:36][quote=Strat,04.04.2004, 18:52]man koennte es aber manuell machen, indem man das template einliest und fuellt und dann in einer zeichenkette abspeichert, die man einem zweiten ->new uebergibt. aber schoen ist das nicht.[/quote]
habs jetzt so gemacht ... und es haut hin :) danke[/quote]
Stehe gerade vor dem gleichen Problem, verstehe aber nicht wie du das genau gelöst hast, könntest du mir mal ein Beispiel posten???

Danke

Tom\n\n

<!--EDIT|Tom|1082473421-->
Computerprobleme??? -> http://www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
tomlong
 2004-04-20 19:22
#1911 #1911
User since
2003-08-04
93 articles
BenutzerIn
[default_avatar]
eigentlich ganz simpel ...

du füllst ganz normal dein Template und printest dann nicht nach STDOUT sondern in einen String.
$content = $template->output();

dann füllst du das Haupttemplate mit dem vorher gefüllten Template :)
$maintemplate->param(CONTENT => $content);

is zwar wirklich nicht sehr schön ... funzt aber wunderbar
Live long and prosper!
42;
Tom
 2004-04-21 19:57
#1912 #1912
User since
2003-09-20
470 articles
BenutzerIn
[Homepage] [default_avatar]
Danke funktioniert wunderbar.

Kann man nicht mal den Author von HTML::TEMPLATE darauf hinweisen, vielleicht integriert er ja die Funktion dass man den Pfad auch über eine Variable angeben kann.

Tom
Computerprobleme??? -> http://www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
renee
 2004-04-21 20:35
#1913 #1913
User since
2003-08-04
14371 articles
ModeratorIn
[Homepage] [default_avatar]
Ist wohl eher schwierig, weil dann die param()-Methode zweimal aufgerufen werden müsste. Beim ersten Mal, um das richtige Template einzubinden und ein zweites Mal, um dann die Parameter zu ersetzen. Und wenn man alles auf einmal machen würde, würde es zu langsam werden...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Tom
 2004-04-22 19:08
#1914 #1914
User since
2003-09-20
470 articles
BenutzerIn
[Homepage] [default_avatar]
[quote=renee,21.04.2004, 18:35]Ist wohl eher schwierig, weil dann die param()-Methode zweimal aufgerufen werden müsste. Beim ersten Mal, um das richtige Template einzubinden und ein zweites Mal, um dann die Parameter zu ersetzen. Und wenn man alles auf einmal machen würde, würde es zu langsam werden...[/quote]
Aber ist das nicht auch schon bei einem INCLUDE der Fall.

Tom
Computerprobleme??? -> http://www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
renee
 2004-04-22 23:51
#1915 #1915
User since
2003-08-04
14371 articles
ModeratorIn
[Homepage] [default_avatar]
Wenn Du ein anderes Template einbindest, dann werden die Parameter so behandelt, als wären es eigene...

Beispiel:
Template 1:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
<html>
 <head>
   <title>
     TMPL_INCLUDE - Beispiel
   </title>
 </head>
 <body>
   <!-- TMPL_INCLUDE NAME=Template2.tmpl --><br />
   <br />
   <!-- TMPL_VAR NAME=BEWEIS -->
 </body>
</html>


Template 2:
Code: (dl )
1
2
3
4
5
<h2>
 <!-- TMPL_VAR NAME=WILLKOMMEN --> Welt!
</h2>
<br />
Dies ist eine <!-- TMPL_VAR NAME=VARIABLE -->.


Skript:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#! /usr/bin/perl
use strict;
use warnings;
use HTML::Template;

print Content-type: "text/html\n\n";

my $template = HTML::Template->new(filename => './template.tmpl');
my $willkommen = 'Hallo';
my $scalar = 'Ersetzung';
my $beweis = 'Und alles mit nur einem Objekt';

$template->param(WILLKOMMEN => $willkommen,
                VARIABLE => $scalar,
                BEWEIS => $beweis);
print $template->output();


Man beachte, dass hier nur ein Objekt von HTML::Template erzeugt wird, nämlich für das Template, in das eingebunden wird. Alle Parameter, auch die des eingebundenen Templates, werden hier mit einem param()-Aufruf ersetzt.

Mehr zu HTML::Template findest Du auch hier: http://perl.renee-baecker.de/HTML_Template.pdf ;)\n\n

<!--EDIT|renee|1082663616-->
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< |< 1 2 3 4 5 >| >> 50 entries, 5 pages



View all threads created 2004-04-04 20:44.