# MTListTemplates 0.1 ($Date: 2003/03/05 16:38:51 $) # by Alexei Kosut use MT; use MT::Template::Context; use MT::Template; use strict; use warnings; MT::Template::Context->add_tag(TemplateName => sub { my $template = $_[0]->stash('template') or return $_[0]->error("Tag called without template list in context"); return $template->name; }); MT::Template::Context->add_conditional_tag(TemplateIfIndex => sub { my $template = $_[0]->stash('template') or return $_[0]->error("Tag called without template list in context"); return $template->type eq "index"; }); MT::Template::Context->add_tag(TemplateOutFile => sub { my $template = $_[0]->stash('template') or return $_[0]->error("Tag called without template list in context"); return $template->outfile || ""; }); sub linked_file { my $template = $_[0]->stash('template') or return $_[0]->error("Tag called without template list in context"); return $template->linked_file; } MT::Template::Context->add_tag(TemplateLinkedFile => \&linked_file); MT::Template::Context->add_conditional_tag(TemplateIfLinkedFile => \&linked_file); MT::Template::Context->add_container_tag(Templates => sub { my ($ctx, $args) = @_; my $builder = $ctx->stash('builder'); my $tokens = $ctx->stash('tokens'); my @templates = MT::Template->load({blog_id => $ctx->stash('blog')->id }); my $res = ''; foreach my $template (@templates) { $ctx->stash('template', $template); defined (my $out = $builder->build($ctx, $tokens)) or return $ctx->error($ctx->errstr); $res .= $out; } return $res; });