MT::Template::Context->add_container_tag(KeyWordList => sub { my $ctx = shift; my $res = ''; my $entry = $ctx->stash ('entry') or return $ctx->error("No entry found."); return "" if (!defined $entry->keywords); my @keywords = split (/\s+/, $entry->keywords); my $builder = $ctx->stash('builder'); my $tokens = $ctx->stash('tokens'); foreach my $w ( @keywords) { $ctx->stash('keyword', $w); defined(my $out = $builder->build($ctx, $tokens)) or return $ctx->error($ctx->errstr); $res .= $out; } $res; }); MT::Template::Context->add_tag(KeyWord => sub { my $ctx = shift; $ctx->stash('keyword'); });