Schrift
[thread]10535[/thread]

HTML::Template und Textile's

Leser: 2


<< >> 9 Einträge, 1 Seite
Froschpopo
 2007-10-07 21:17
#100454 #100454
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Wie würdet ihr TEXT::Textile mit HTML::Template verknüpfen, sodass man im Template-File Textiles verwenden kann?
Code: (dl )
1
2
3
4
my $tmpl = HTML::Template->new(filename => "/srv/www/site/news.html");

print $tmpl->param(\%params);
print $tmpl->output();

Eine Möglichkeit wäre ja, die Texte auszulagern, etwa in eine DB
pktm
 2007-10-07 21:41
#100455 #100455
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Ich würde das Textfile parsen und in einen vorgegebenen Bereich in der Webseite einfügen - so als ganzes.
Kommen Kopf-Informationen (CSS, JavaScript, Titel) zu stande die du benötigst könnte für dich das Modul HTML::Template::Extension interessant sein.
http://www.intergastro-service.de (mein erstes CMS :) )
Froschpopo
 2007-10-07 22:07
#100457 #100457
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Ich schätze das muss ich so machen. Ich werde dann den Seiten-Inhalt aus der Datenbank auslesen.
Nur doof, dass ich mit INCLUDE nicht auf ebenfalls Datenbanksätze zugreifen kann.
So muss ich header.html und footer.html nach wie vor im Dateisystem lagern.
pktm
 2007-10-07 22:14
#100458 #100458
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hm, es fällt mir schwer dir zu folgen. Spezifizier das mal genauer. Warum willst du Dateien per Include einbinden?
http://www.intergastro-service.de (mein erstes CMS :) )
Froschpopo
 2007-10-07 23:08
#100462 #100462
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
ich lagere z.b. das navigationsmenü, eine infobox und solche sachen in separate dateien aus um ordnung zu halten. Außerdem kann ich im Dateisystem liegende Dokumente gut auch in HTC verwenden.
pktm
 2007-10-08 00:15
#100466 #100466
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Ja, so mache ich das auch, sogar mit einem kleinen News-Skript, welches bei Änderungen durch den Benutzer einfach eine Datei aktualisiert.
Benutzereingaben hingegen speichere ich in einer Datenbank, und lese die dann bei Bedarf aus und füge sie in das Haupt-Template ein.

Wenn du alles in der Datenbank haben möchtest (man kann ja soagr Bilder in einer Datenbank verwalten, und es gibt lange Diskussionen darum, was performatner ist, Bilder von der Platte oder Bilder aus der DB) kannst du dir einfach eine Zugriffsmethode schreiben und die dann mittels HTML::Template::Expr verwenden. Die dazu passenden kritischen Kommentare stehen schon in der Dokumenation :)
http://www.intergastro-service.de (mein erstes CMS :) )
pq
 2007-10-08 01:04
#100467 #100467
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
Froschpopo+2007-10-07 20:07:50--
Ich schätze das muss ich so machen. Ich werde dann den Seiten-Inhalt aus der Datenbank auslesen.
Nur doof, dass ich mit INCLUDE nicht auf ebenfalls Datenbanksätze zugreifen kann.
So muss ich header.html und footer.html nach wie vor im Dateisystem lagern.

du kannst <tmpl_include_string var > benutzen.
Code: (dl )
1
2
3
4
5
6
7
8
9
my $htc = HTML::Template::Compiled->new(...);
$htc->param(
header => $header_aus_db,
footer => $footer_aus_db,
);
# template
<%include_string header %>
...
<%include_string footer %>

danke auch an esskar an der stelle, der sich dieses feature mal gewünscht hat =)
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Froschpopo
 2007-10-08 15:21
#100493 #100493
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Also ich mach das jetzt so:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
my $str = "Hier die News: <TMPL_INCLUDE NAME=news.html>";

&template($dbh, \%params, $str);

sub template {
my ($dbh, $paramsref, $data) = @_;

my $tmpl = HTML::Template->new(filename => "/srv/www/projektgemeinschaft/main.html");

my %params = ();

$params{$_} = $paramsref->{$_} for keys %{$paramsref};

my $textile = new Text::Textile;
$data = $textile->process($data);

$params{'CONTENT'} = $data;

$tmpl->param(\%params);
print $tmpl->output();
}

das Problem lässt sich ja anhand des oberen Beispiels schon sehr leicht erahnen:
HTML::Template parst nur die Datei, nicht aber die in $data enthaltenen Template-Tags.
Im obigen Beispiel wäre ein solcher Tag das INCLUDE aus $str, das ignoriert wird weil es nicht im html-File liegt.
Das scheint auch nicht an Textile zu liegen.
renee
 2007-10-08 15:35
#100495 #100495
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
@Froschpopo: Dann solltest Du wohl auf HTC umsteigen:

pq+2007-10-07 23:04:21--
[...]
du kannst <tmpl_include_string var > benutzen.
Code: (dl )
1
2
3
4
5
6
7
8
9
my $htc = HTML::Template::Compiled->new(...);
$htc->param(
header => $header_aus_db,
footer => $footer_aus_db,
);
# template
<%include_string header %>
...
<%include_string footer %>

danke auch an esskar an der stelle, der sich dieses feature mal gewünscht hat =)
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/
<< >> 9 Einträge, 1 Seite



View all threads created 2007-10-07 21:17.