use strict; use MT::Template::Context; MT::Template::Context->add_tag(EntryCategoryLink => \&entry_category_link); sub entry_category_link { my ($ctx,$args) = @_; my $entry = $ctx->stash('entry') or return $ctx->error('tried to use MTEntryCategoryLink outside of MTEntries?'); my $id = $entry->id; my $cat = $entry->category; return '' unless defined $cat; my $blog = $ctx->stash('blog'); my $at = $blog->archive_type; return $_[0]->error(MT->translate( '[_1] can be used only if you have enabled Category archives.', '<$MTEntryCategoryLink$>' )) unless $at =~ /Category/; my $arch = $blog->archive_url; $arch .= '/' unless $arch =~ m!/$!; $arch . archive_file_for(undef, $blog, 'Category', $cat); }