Index: /branches/release-40/php/lib/block.mtifarchivetypeenabled.php
===================================================================
--- /branches/release-40/php/lib/block.mtifarchivetypeenabled.php (revision 1174)
+++ /branches/release-40/php/lib/block.mtifarchivetypeenabled.php (revision 2606)
@@ -15,4 +15,8 @@
         $blog_at = ',' . $blog['blog_archive_type'] . ',';
         $enabled = preg_match("/,$at,/", $blog_at);
+        $map = $ctx->mt->db->fetch_templatemap(
+            array('type' => $at, 'blog_id' => $blog['blog_id']));
+        if (empty($map))
+            $enabled = 0;
         return $ctx->_hdlr_if($args, $content, $ctx, $repeat, $enabled);
     } else {
Index: /branches/release-40/php/lib/mtdb_base.php
===================================================================
--- /branches/release-40/php/lib/mtdb_base.php (revision 2589)
+++ /branches/release-40/php/lib/mtdb_base.php (revision 2606)
@@ -150,4 +150,21 @@
                        $type_filter
               order by template_name";
+        $result = $this->get_results($sql, ARRAY_A);
+        return $result;
+    }
+
+    function fetch_templatemap($args) {
+        if (isset($args['type'])) {
+            $type_filter = 'and templatemap_archive_type = \'' . $this->escape($args['type']) . '\'';
+        }
+        if (isset($args['blog_id'])) {
+            $blog_filter = 'and templatemap_blog_id = ' . intval($args['blog_id']);
+        }
+        $sql = "select *
+                  from mt_templatemap
+                 where 1 = 1
+                       $blog_filter
+                       $type_filter
+              order by templatemap_archive_type";
         $result = $this->get_results($sql, ARRAY_A);
         return $result;
Index: /branches/release-40/php/lib/block.mtarchivelist.php
===================================================================
--- /branches/release-40/php/lib/block.mtarchivelist.php (revision 2294)
+++ /branches/release-40/php/lib/block.mtarchivelist.php (revision 2606)
@@ -25,4 +25,10 @@
           $repeat = false;
           return '';
+        }
+        $map = $ctx->mt->db->fetch_templatemap(
+            array('type' => $at, 'blog_id' => $blog['blog_id']));
+        if (empty($map)) {
+            $repeat = false;
+            return '';
         }
         $ctx->localize($localvars);
Index: /branches/release-40/lib/MT/Blog.pm
===================================================================
--- /branches/release-40/lib/MT/Blog.pm (revision 2559)
+++ /branches/release-40/lib/MT/Blog.pm (revision 2606)
@@ -486,5 +486,11 @@
     my ($type) = @_;
     my %at = map { lc $_ => 1 } split(/,/, $blog->archive_type);
-    return exists $at{lc $type} ? 1 : 0;
+    my $has = exists $at{lc $type} ? 1 : 0;
+    if ($has) {
+        my $map_class = MT->model('templatemap');
+        my $map = $map_class->load({ archive_type => $type, blog_id => $blog->id });
+        $has = defined $map ? 1 : 0;
+    }
+    return $has;
 }
 
Index: /branches/release-40/lib/MT/Template/ContextHandlers.pm
===================================================================
--- /branches/release-40/lib/MT/Template/ContextHandlers.pm (revision 2602)
+++ /branches/release-40/lib/MT/Template/ContextHandlers.pm (revision 2606)
@@ -4300,5 +4300,5 @@
     my ($ctx, $args) = @_;
     my $blog = $ctx->stash('blog');
-    my $at = lc ($args->{type} || $args->{archive_type});
+    my $at = ($args->{type} || $args->{archive_type});
     return $blog->has_archive_type($at);
 }
@@ -11700,7 +11700,9 @@
     my $archiver = MT->publisher->archiver($at);
     return '' unless $archiver;
+    my $map_class = MT->model('templatemap');
+    my $map = $map_class->load({ archive_type => $at, blog_id => $blog->id });
+    return '' unless $map;
 
     my $save_stamps;
-
     if ($ctx->{current_archive_type} && $arg_at && ($ctx->{current_archive_type} eq $arg_at)) {
         $save_stamps = 1;
Index: /branches/release-40/t/lib/MT/Test.pm
===================================================================
--- /branches/release-40/t/lib/MT/Test.pm (revision 2601)
+++ /branches/release-40/t/lib/MT/Test.pm (revision 2606)
@@ -682,4 +682,24 @@
     diag "Saved blog-name template";
 
+    my $tmpl_map = new MT::TemplateMap;
+    $tmpl_map->blog_id(1);
+    $tmpl_map->template_id($tmpl->id);
+    $tmpl_map->archive_type('Daily');
+    $tmpl_map->is_preferred(1);
+    $tmpl_map->build_type(1);
+    $tmpl_map->save or die "Couldn't save template map record (Daily): ".$tmpl_map->errstr;
+
+    my $tmpl_map = new MT::TemplateMap;
+    $tmpl_map->blog_id(1);
+    $tmpl_map->template_id($tmpl->id);
+    $tmpl_map->archive_type('Weekly');
+    $tmpl_map->is_preferred(1);
+    $tmpl_map->build_type(1);
+    $tmpl_map->save or die "Couldn't save template map record (Weekly): ".$tmpl_map->errstr;
+
+    # Revert into default for test...
+    $blog->archive_type('Individual,Monthly,Weekly,Daily,Category,Page');
+    $blog->save;
+
     ### Asset
     use MT::Asset;
